При добавлении div
s к a 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?
overflow-y:auto
для контейнераposition:absolute
дочернего элемента .Более современный ответ на этот вопрос - использовать
flexbox
.Как и многие другие современные функции, они не будут работать в устаревших браузерах , поэтому, если вы не готовы отказаться от поддержки браузеров эпохи IE8-9, вам придется искать другой метод.
Вот как это делается:
.parent { display: flex; justify-content: flex-end; flex-direction: column; } .child { /* whatever */ }
И это все, что вам нужно. Для дальнейшего чтения
flexbox
см. MDN .Вот пример этого с некоторыми базовыми стилями: http://codepen.io/Mest/pen/Gnbfk
источник
Мы можем просто использовать преобразование CSS, чтобы заархивировать это.
Я создал код для него. https://codepen.io/king-dev/pen/PoPgXEg
.root { transform: scaleY(-1); } .root > div { transform: scaleY(-1); }
Идея состоит в том, чтобы сначала перевернуть корень по горизонтали, а затем снова перевернуть прямые дочерние div.
ПРИМЕЧАНИЕ: вышеуказанный метод также меняет порядок div. Если вы просто хотите разместить их так, чтобы они начинались снизу, вы можете сделать следующее.
.root { display: flex; flex-direction: column; height: 100px; overflow-y: auto; } .root > div:first-child { margin-top: auto; }
источник
Держи это олдскул ...
Я хотел сделать то же самое в
#header
div, поэтому я создал пустой 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 -->
Затем я использовал процентное значение высоты невидимого
#headspace
div , чтобы подтолкнуть остальные вниз. Для этого легко использовать инструменты разработчика / инспектора браузера.#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
добавляется. Я поместил это здесь на тот случай, если кому-то действительно нужно более статичное решение. Другими словами: я думаю, что нулевое голосование было бы более подходящим, чем голосование против.Child Div #
котором дочерние div увеличиваются, а при увеличении на определенную высоту должна отображаться прокрутка. поэтому этот ответ не дает решения фактического вопроса.Я хочу, чтобы эта работа работала с bootstarp, как приложение для чата, где поток сообщений снизу вверх
прочитав материал, я нашел это
У меня есть внешний div, предполагающий класс .outerDiv, а затем UI, список
.outerDiv { height: 361px; position: relative; } ui.msg-content{ width: 100%; bottom: 0; position: absolute; max-height: 98%; overflow-y: auto; }
источник
Это просто, когда вы используете
position: absolute
.http://jsfiddle.net/XHeZj/
источник
<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>
источник