css flexbox: одинаковая высота для всех элементов?
используя CSS и flexbox, я не понимаю, как дать одинаковую высоту divs "a" и "b". Мне нужно, чтобы Б стал выше, чтобы соответствовать росту А. Другими словами, серая коробка должна быть такой же высокой, как и красная.
насколько я понял, этого было достаточно, чтобы установить flex:1
как для a, так и для b, чтобы они имели одинаковую высоту. Но это не так.
Я пытался установить flex-basis:0
как "a", так и "b", но содержание усечено. Я не могу усечь a, мне нужно, чтобы b был увеличенный.
#cont1{
display:flex;
flex-direction:column;
}
#a{
background-color:red;
flex:1;
}
#b{
background-color:grey;
flex:1;
}
html lang-html prettyprint-override"><div id="cont1">
<div id="a">
<h1>title</h1>
<h1>title</h1>
<h1>title</h1>
<h1>title</h1>
<h1>title</h1>
<h1>title</h1>
</div>
<div id="b">
short text
</div>
</div>
версия JSFiddle
4 ответов
Если вы можете выжить без гибкого трубопровода, располагать может сделать это.
#cont1{
}
#a{
background-color:red;
position: relative;
}
#b{
background-color:grey;
position: absolute;
left: 0; top: 100%;
width: 100%;
height: 100%;
}
<div id="cont1">
<div id="a">
<h1> title </h1>
<h1> title </h1>
<h1> title title title title title title title title title</h1>
<div id="b">
short text
</div>
</div>
</div>
укажите высоту контейнера flex.
попробуйте это:
#cont {
display: flex;
flex-direction: column;
height: 400px;
}
необходимо создать определенное пространство для распределения элементов flex.
обновление (на основании комментариев)
право... вот чего мне нужно достичь:http://www.jsfiddle.net/s2b0v4ph (смотреть на широком экране, потому что есть точка останова)
и вот проблема: если коробка #2 становится выше, юстировка между поле № 2 и поле № 5: http://www.jsfiddle.net/s2b0v4ph/1
макет работает отлично, как закодировано. Элементы flex основного контейнера flex (.flex-md
) растягиваются на всю высоту контейнера. Независимо от того, сколько контента вы добавляете в поле #1 или поле #2, столбец, содержащий поля #5 и #6, будет одинаковой высоты.
все столбцы в первичном гибкий контейнер (<div class="row flex-md" id="row-quadrati">
) равны по высоте, независимо от количества содержимого. http://jsfiddle.net/s2b0v4ph/1/
причина, по которой поле #5 не совпадает с полем #2 при добавлении содержимого, заключается в том, что каждый из этих ящиков существует в другом контекст форматирования flex. Другими словами, коробки существуют в различных контейнерах flex.
в частности, коробки #1, #2 и #3 являются гибкими элементами #quadr-col-1
, и коробки #4, #5 и #6 детали гибкого трубопровода из #quadr-col-2
. Оба!--3--> и #quadr-col-2
являются элементами flex основного контейнера flex, которые удваиваются как (вложенные) контейнеры flex.
потому что эти коробки существуют в отдельных контейнерах гибкого трубопровода никакая причина для их делить равную высоту. Если вы хотите применить функцию Flex equal height, поместите их все в один контейнер flex.
Я решил проблему в javascript следующим образом, но меня все еще интересует решение css:
function computeMaxHeight(els) {
var ht = 0;
els.forEach(function (el) {
var elht = el.height();
if (elht > ht) {
ht = elht;
}
});
return ht;
}
function setMinMeight(els) {
var maxht = computeMaxHeight(els);
//console.log("here resize. maxht = " + maxht);
els.forEach(function (el) {
el.css('min-height', maxht);
});
}
$(document).ready(function () {
var els = [$("#non-porre-limiti"), $("#we-love-pagi"), $("#vuoto"), $("#pagiletter"), $("#pagi-focus")];
$(window).on('resize', function () {
setMinMeight(els);
});
setMinMeight(els);
});
скрипка:http://jsfiddle.net/s2b0v4ph/3/
фокус в этой части
.xyz {
width: 70%;
box-shadow: 0 0 30px;
text-align:center;
-webkit-flex: 9 0 0;
flex: 9 0 0;
}
http://codepen.io/damianocel/pen/XmxmQE
теперь эти divs будут иметь одинаковую высоту, независимо от общей высоты страниц.
это то, что вы искали?