简体   繁体   English

如何为显示 flex 子项设置相同的高度?

[英]How to set same height for display flex childs?

Is there any way to say that the "TEST 1.1" row get the same height as the "TEST 1 TEST 1 TEST 1 TEST 1 TEST 1" only with CSS?有什么办法可以说“TEST 1.1”行仅使用CSS与“TEST 1 TEST 1 TEST 1 TEST 1 TEST 1”具有相同的高度? Same should be if the "TEST 2" row includes more Text, the "TEST 2.1" row should be as height as "TEST 2".如果“TEST 2”行包含更多文本,则“TEST 2.1”行的高度应与“TEST 2”相同。

The HTML Structure and Markup should stay like it is. HTML 结构和标记应该保持原样。

Edit: Or is there an easy way to do it with JS?编辑:或者有没有一种简单的方法可以用 JS 做到这一点?

 .outer { display: flex; width: 200px; } .inner {flex: 1 1 50%} .inner-child { background-color: lightgrey; padding: 10px; border: 1px dotted; }
 <div class="outer"> <div class="inner"> <div class="inner-child"> TEST 1 TEST 1 TEST 1 TEST 1 TEST 1 </div> <div class="inner-child"> TEST 2 </div> <div class="inner-child"> TEST 3 </div> <div class="inner-child"> TEST 4 </div> </div> <div class="inner"> <div class="inner-child"> TEST 1.1 </div> <div class="inner-child"> TEST 2.1 </div> <div class="inner-child"> TEST 3.1 </div> <div class="inner-child"> TEST 4.1 </div> </div> </div>

You should consider using css grid .您应该考虑使用css grid

Flexbox was design to create a one dimensional array either horizontally or vertically. Flexbox 旨在创建一个水平或垂直的一维数组。

While css grid was designed to accomodate two dimensional arrays (Both horizontal and vertical simultaneously.)虽然 css grid 旨在容纳二维数组(同时水平和垂直。)

 .outer { display: grid; grid-template-columns: 1fr 1fr; width: 200px; } .inner-child { background-color: lightgrey; padding: 10px; border: 1px dotted; }
 <div class="outer"> <div class="inner-child"> TEST 1 TEST 1 TEST 1 TEST 1 TEST 1 </div> <div class="inner-child"> TEST 1.1 </div> <div class="inner-child"> TEST 2 </div> <div class="inner-child"> TEST 2.1 </div> <div class="inner-child"> TEST 3 </div> <div class="inner-child"> TEST 3.1 </div> <div class="inner-child"> TEST 4 </div> <div class="inner-child"> TEST 4.1 </div> </div>

Changing a little the html and adding display: flex in inner class you can do something similar to what you're looking for.稍微更改 html 并添加display: flex在内部类中,您可以执行与您正在寻找的类似的操作。 Here is an example:下面是一个例子:

 .outer { width: 200px; } .inner { display: flex; width: 100%; } .inner-child { width: 50%; background-color: lightgrey; padding: 10px; border: 1px dotted; }
 <div class="outer"> <div class="inner"> <div class="inner-child">TEST 1 TEST 1 TEST 1 TEST 1 TEST 1</div> <div class="inner-child">TEST 1.1</div> </div> <div class="inner"> <div class="inner-child">TEST 2</div> <div class="inner-child">TEST 2.1</div> </div> </div>

Done by simple jQuery由简单的 jQuery 完成

 $(".outer .inner:first .inner-child").each(function(i,e){ i += 1; if($(".outer .inner:last .inner-child:nth-child("+i+")").length) { var heightInFirst = $(this).height(); var heightInSecond = $(".outer .inner:last .inner-child:nth-child("+i+")").height(); $(".outer .inner .inner-child:nth-child("+i+")").css("height",Math.max(heightInFirst, heightInSecond)+"px"); } });
 .outer { display: flex; width: 200px; } .inner {flex: 1 1 50%} .inner-child { background-color: lightgrey; padding: 10px; border: 1px dotted; }
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="outer"> <div class="inner"> <div class="inner-child"> TEST 1 TEST 1 TEST 1 TEST 1 TEST 1 </div> <div class="inner-child"> TEST 2 </div> <div class="inner-child"> TEST 3 </div> <div class="inner-child"> TEST 4 </div> </div> <div class="inner"> <div class="inner-child"> TEST 1.1 </div> <div class="inner-child"> TEST 2.1 </div> <div class="inner-child"> TEST 3.1 </div> <div class="inner-child"> TEST 4.1 </div> </div> </div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM