Укладка Дивов снизу вверх
при добавлении divС div с фиксированной высотой, ребенок ДИВС появится сверху вниз, вставляя на верхней границе.
┌─────────────────────────┐
│ Child Div 1 │
│ Child Div 2 │
│ │
│ │
│ │
└─────────────────────────┘
теперь я пытаюсь отобразить их снизу вверх, как это (придерживаясь нижней границы):
┌─────────────────────────┐
│ │
│ │
│ │
│ Child Div 1 │
│ Child Div 2 │
└─────────────────────────┘
┌─────────────────────────┐
│ │
│ │
│ Child Div 1 │
│ Child Div 2 │
│ Child Div 3 │
└─────────────────────────┘
┌───────────────────────┬─┐
│ Child Div 2 │▲│
│ Child Div 3 │ │
│ Child Div 4 │ │
│ Child Div 5 │█│
│ Child Div 6 │▼│
└───────────────────────┴─┘
и так далее... Надеюсь, вы понимаете, что я имею в виду.
это просто выполнимо с CSS (что-то вроде vertical-align: bottom)? Или мне нужно что-то взломать вместе с JavaScript?
5 ответов:
все ответы упустите полоса прокрутки смысл вашего вопроса. И это очень тяжело. Если вам это нужно только для работы в современных браузерах и IE 8+ вы можете использовать позиционирование таблицы,
vertical-align:bottomиmax-height. Смотрите MDN для конкретной совместимости браузера.демо(выравнивание по вертикали)
.wrapper { display: table-cell; vertical-align: bottom; height: 200px; } .content { max-height: 200px; overflow: auto; }html
<div class="wrapper"> <div class="content"> <div>row 1</div> <div>row 2</div> <div>row 3</div> </div> </div>
кроме этого, я думаю, что это невозможно только с CSS. Вы можете сделать элементы прилипают к нижней части их контейнера с
position:absolute, но это выведет их из потока. В результате они не будут растягиваться и делать контейнер прокручиваемым.демо(позиция-Абсолют)
.wrapper { position: relative; height: 200px; } .content { position: absolute; bottom: 0; width: 100%; }
более современным ответом на это было бы использовать
flexbox.как и многие другие современные функции,они не будут работать в устаревших браузерах, поэтому, если вы не готовы отказаться от поддержки браузеров из эпохи IE8-9, вам нужно будет искать другой метод.
вот как это делается:
.parent { display: flex; justify-content: flex-end; flex-direction: column; } .child { /* whatever */ }и это все, что вам нужно. Для дальнейшего чтения на
flexboxсм. MDN.вот пример некоторые основные стили:http://codepen.io/Mest/pen/Gnbfk
держать его олдскул...
Я хотел сделать то же самое в
#headerdiv поэтому я создал пустой div под названием#headspaceи положил его на вершине стека (внутри#header):<div id="header"> <div id="headspace"></div> <div id="one">some content</div> <div id="two">other content</div> <div id="three">more content</div> </div> <!-- header -->тогда я использовал процент, для высоты невидимого
#headspacediv, чтобы подтолкнуть остальных вниз. Это легко использовать инструменты разработчика / инспектора браузера, чтобы получить это просто право.#header { width: 100%; height: 10rem; overflow: auto; } #headspace { width: 100%; height: 42%; /* Experiment with Inspect (Element) tool */ } #one, #two, #three { /* Insert appropriate dimensions for others... */ }
<div style="height: 500px;"> <div style="height: 20px; position: absolute; bottom: 120px;">Child Div 1</div> <div style="height: 20px; position: absolute; bottom: 100px;">Child Div 2</div> <div style="height: 20px; position: absolute; bottom: 80px;">Child Div 3</div> <div style="height: 20px; position: absolute; bottom: 60px;">Child Div 4</div> <div style="height: 20px; position: absolute; bottom: 40px;">Child Div 5</div> </div>
Comments