我正在使用Bootstrap。如何将三列完全相同的高度?
以下是问题的屏幕截图。我希望蓝色和红色的列与黄色列的高度相同。
以下是代码:
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<div class="container-fluid">
<div class="row">
<div class="col-xs-4 panel" style="background-color: red">
some content
</div>
<div class="col-xs-4 panel" style="background-color: yellow">
catz
<img width="100" height="100" src="https://lorempixel.com/100/100/cats/">
</div>
<div class="col-xs-4 panel" style="background-color: blue">
some more content
</div>
</div>
</div>
&#13;
答案 0 :(得分:960)
使用负边距的解决方案1(不会破坏响应性)
.row{
overflow: hidden;
}
[class*="col-"]{
margin-bottom: -99999px;
padding-bottom: 99999px;
}
解决方案2使用表格
.row {
display: table;
}
[class*="col-"] {
float: none;
display: table-cell;
vertical-align: top;
}
使用flex 的解决方案3于2015年8月添加。之前发布的评论不适用于此解决方案。
.row {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
flex-wrap: wrap;
}
.row > [class*='col-'] {
display: flex;
flex-direction: column;
}
答案 1 :(得分:256)
Bootstap 3.x的最佳方法 - 使用CSS flexbox (并且需要最少的CSS)..
.equal {
display: flex;
display: -webkit-flex;
flex-wrap: wrap;
}
Bootstrap same height flexbox example
要仅在特定断点处应用相同高度的flexbox(响应),请使用媒体查询。例如,这里是sm
(768px)及以上:
@media (min-width: 768px) {
.row.equal {
display: flex;
flex-wrap: wrap;
}
}
此解决方案也适用于多行(列包装):
https://www.bootply.com/gCEXzPMehZ
其他解决方法
其他人会推荐这些选项,但are not a good idea会推荐响应式设计。这些仅适用于没有列包装的简单单行布局。
1)使用huge negative margins & padding
2)使用display:table-cell(此解决方案也会影响响应网格,因此@media查询可用于仅在列垂直堆叠之前在更宽的屏幕上应用table
显示。
<小时/>
Flexbox现在默认在Bootstrap 4中使用,因此不需要额外的CSS来制作相等的高度列:http://www.codeply.com/go/IJYRI4LPwU
示例:
<div class="container">
<div class="row">
<div class="col-md-6"></div>
<div class="col-md-6"></div>
</div>
</div>
答案 2 :(得分:83)
不需要JavaScript。只需将类.row-eq-height
添加到现有的.row
,就像这样:
<div class="row row-eq-height">
<div class="col-xs-12 col-sm-4 panel" style="background-color: red">
some content
</div>
<div class="col-xs-6 col-sm-4 panel" style="background-color: yellow">
kittenz
<img src="http://placekitten.com/100/100">
</div>
<div class="col-xs-6 col-sm-4 panel" style="background-color: blue">
some more content
</div>
</div>
提示:如果您的行中有超过12列,则引导网格将无法包装它。因此,每12列添加一个新的div.row.row-eq-height
。
提示:您可能需要添加
<link rel="stylesheet" href="http://getbootstrap.com.vn/examples/equal-height-columns/equal-height-columns.css" />
到您的HTML
答案 3 :(得分:59)
要回答您的问题,这就是您所需要的see full responsive demo with prefixed css:
/* Using col-xs media query breakpoint but you can change 481 to 768 to only apply to col-sm and above if you'd like*/
@media only screen and (min-width : 481px) {
.flex-row {
display: flex;
flex-wrap: wrap;
}
.flex-row > [class*='col-'] {
display: flex;
flex-direction: column;
}
.flex-row.row:after,
.flex-row.row:before {
display: flex;
}
}
要在flex列中添加对缩略图内容flex的支持,例如上面的屏幕截图,请添加此内容...请注意,您也可以使用面板执行此操作:
.flex-row .thumbnail,
.flex-row .caption {
display: flex;
flex: 1 0 auto;
flex-direction: column;
}
.flex-text {
flex-grow: 1;
}
.flex-row img {
width: 100%;
}
虽然flexbox在IE9及以下版本中不起作用,但您可以使用带有javascript grids之类的条件标签作为polyfill的回退使用该演示:
<!--[if lte IE 9]>
<![endif]-->
至于接受的答案中的另外两个例子......表演示是一个不错的想法,但实施错误。将CSS专门应用于引导列类将毫无疑问地完全打破网格框架。您应该为一个和两个表使用自定义选择器,不应将表样式应用于已定义宽度的[class*='col-']
。仅当您需要相等高度和相等宽度的列时,才应使用此方法。它不适用于任何其他布局,也不响应。我们可以在移动显示器上实现它的后备......
<div class="table-row-equal">
<div class="thumbnail">
Content...
</div>
<div class="thumbnail">
Content...
</div>
</div>
@media only screen and (min-width : 480px){
.table-row-equal {
display: table;
width: 100%;
table-layout: fixed;
border-spacing: 30px 0px;
word-wrap: break-word;
}
.table-row-equal .thumbnail {
float: none;
display: table-cell;
vertical-align: top;
width: 1%;
}
}
最后,实现one true layout版本的接受答案中的第一个演示对于某些情况是一个不错的选择,但不适合自举列。原因是所有列都扩展到容器高度。因此,这也会破坏响应性,因为列不会扩展到它们旁边的元素,而是扩展到整个容器。此方法也不允许您将底部边距应用于行,并且还会导致其他问题,例如滚动到锚标记。
有关完整代码,请参阅Codepen,它自动为flexbox代码添加前缀。
答案 4 :(得分:41)
您只显示一行,因此您的用例可能仅限于此。万一你有多行,这个插件 - github Javascript-grids - 完美无缺!它使每个面板扩展到最高的面板,根据该行中最高的面板为每一行提供不同的高度。这是一个jquery解决方案与css,但想推荐它作为替代方法。
答案 5 :(得分:26)
如果您想在任何浏览器中使用此功能,请使用javascript:
$( document ).ready(function() {
var heights = $(".panel").map(function() {
return $(this).height();
}).get(),
maxHeight = Math.max.apply(null, heights);
$(".panel").height(maxHeight);
});
答案 6 :(得分:8)
.row-eq-height {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
}
自:
http://getbootstrap.com.vn/examples/equal-height-columns/equal-height-columns.css
答案 7 :(得分:7)
你也可以使用inline-flex,它工作得很好,可能比用CSS修改每一行元素更清晰。
对于我的项目,我希望每一行的子元素都具有相同的高度,因此边框看起来是锯齿状的。为此,我创建了一个简单的css类。
.row.borders{
display: inline-flex;
width: 100%;
}
答案 8 :(得分:7)
厚脸皮的jquery解决方案,如果有人感兴趣的话。只要确保你的所有cols(el)都有一个共同的类名...如果你把它绑定到$(window)上也会起作用.resize
function equal_cols(el)
{
var h = 0;
$(el).each(function(){
$(this).css({'height':'auto'});
if($(this).outerHeight() > h)
{
h = $(this).outerHeight();
}
});
$(el).each(function(){
$(this).css({'height':h});
});
}
$(document).ready(function(){
equal_cols('.selector');
});
注意:此帖子已根据@Chris的评论进行了编辑,注释该代码仅设置为$.each()
函数中的最后一个高度
答案 9 :(得分:7)
以前的一些答案解释了如何使div具有相同的高度,但问题是当宽度太窄时div不会叠加,因此你可以用一个额外的部分来实现它们的答案。对于每一个,您可以使用此处给出的CSS名称以及您使用的行类,因此如果您始终希望div彼此相邻,则div应如下所示:
<div class="row row-eq-height-xs">Your Content Here</div>
对于所有屏幕:
.row-eq-height-xs {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
flex-direction: row;
}
当你想使用sm时:
.row-eq-height-sm {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
flex-direction: column;
}
@media (min-width:768px) {
.row-eq-height-sm {
flex-direction: row;
}
}
当你想要md时:
.row-eq-height-md {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
flex-direction: column;
}
@media (min-width:992px) {
.row-eq-height-md {
flex-direction: row;
}
}
当你想使用lg:
时.row-eq-height-lg {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
flex-direction: column;
}
@media (min-width:1200px) {
.row-eq-height-md {
flex-direction: row;
}
}
修改强>
根据评论,确实有一个更简单的解决方案,但您需要确保从所需大小的最大所需宽度提供列信息,直至xs(例如<div class="col-md-3 col-sm-4 col-xs-12">
:
.row-eq-height {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
flex-direction: row;
flex-wrap: wrap;
}
答案 10 :(得分:6)
我尝试了很多在这个帖子和其他页面上提出的建议,但没有解决方案在每个浏览器中都能100%运行。
所以我试验了很长时间并想出了这个。 Bootstrap Equal Height列的完整解决方案,在flexbox 的帮助下只有1个类。 这适用于所有主流浏览器IE10 +。
<强> CSS:强>
struct sockaddr_in ip4addr;
ip4addr.sin_family = AF_INET;
ip4addr.sin_port = htons(1234);
addrDest.sin_addr.s_addr = inet_addr("1.2.3.4");
<强> HTML:强>
.row.equal-cols {
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-flex-wrap: wrap;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
}
.row.equal-cols:before,
.row.equal-cols:after {
display: block;
}
.row.equal-cols > [class*='col-'] {
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-flex-direction: column;
-ms-flex-direction: column;
flex-direction: column;
}
.row.equal-cols > [class*='col-'] > * {
-webkit-flex: 1 1 auto;
-ms-flex: 1 1 auto;
flex: 1 1 auto;
}
要支持更多版本的IE,您可以使用https://github.com/liabru/jquery-match-height并定位<div class="container">
<div class="row equal-cols">
<div class="col-sm-4">
<div class="content"></div>
</div>
<div class="col-sm-4">
<div class="content"></div>
</div>
<div class="col-sm-4">
<div class="content"></div>
</div>
</div>
</div>
的所有子列。像这样:
.equal-cols
如果没有这个polyfill,列的行为就像通常的Bootstrap列一样,这是一个非常好的后备。
答案 11 :(得分:5)
令我感到惊讶的是,我无法在2018年末在这里找到一个有价值的解决方案。我继续使用Flexbox自己找到了Bootstrap 3解决方案。
干净简单的示例:
HTML
<div class="row row-equal">
<div class="col-lg-4 col-md-4 col-sm-4 col-xs-12 col-equal">
<p>Text</p>
</div>
<div class="col-lg-4 col-md-4 col-sm-4 col-xs-12 col-equal">
<img src="//placehold.it/200x200">
</div>
<div class="col-lg-4 col-md-4 col-sm-4 col-xs-12 col-equal">
<p>Text</p>
</div>
</div>
CSS
img {
width: 100%;
}
p {
padding: 2em;
}
@media (min-width: 768px) {
.row-equal {
display: flex;
flex-wrap: wrap;
}
.col-equal {
margin: auto;
}
}
答案 12 :(得分:5)
我知道我已经很晚了,但现在你可以使用“min-height”样式属性来实现你的目的。
答案 13 :(得分:3)
来自官方文档。也许你可以在你的情况下使用它。
<块引用>当您需要相同的高度时,将 .h-100 添加到卡片中。
<div class="row row-cols-1 row-cols-md-3 g-4">
<div class="col">
<div class="card h-100">
<div>.....</div>
</div>
<div class="col">
<div class="card h-100">
<div>.....</div>
</div>
答案 14 :(得分:3)
在仅在行中的列上应用解决方案1时出现问题。想改进解决方案1.
[class^="col-"]:not([class*="-12"]){
margin-bottom: -99999px;
padding-bottom: 99999px;
}
(对不起,不能评论Popnoodles的答案。我没有足够的声誉)
答案 15 :(得分:2)
这是我的方法,我使用flex在媒体查询中进行了一些更改。
@media (min-width: 0px) and (max-width: 767px) {
.fsi-row-xs-level {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
}
}
@media (min-width: 768px) and (max-width: 991px) {
.fsi-row-sm-level {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
}
}
@media (min-width: 992px) and (max-width: 1199px) {
.fsi-row-md-level {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
}
}
@media (min-width: 1200px) {
.fsi-row-lg-level {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
}
}
然后将类添加到父级中,这是必需的。
<div class="row fsi-row-lg-level fsi-row-md-level">
<div class="col-sm-4">column 1</div>
<div class="col-sm-4">column 2</div>
<div class="col-sm-4">column 3</div>
</div>
我正在使用响应断点,因为磁通通常会妨碍自举标准响应性。
答案 16 :(得分:2)
对于那些寻求快速,简单解决方案的人来说 - 如果你有一组相对一致的块内容设置,div上的最小高度比最大块更大,可以更容易实现。
.align-box {
min-height: 400px;
}
答案 17 :(得分:2)
.row.container-height {
overflow: hidden;
}
.row.container-height > [class*="col-"]{
margin-bottom: -99999px;
padding-bottom: 99999px;
}
其中.container-height是必须添加到.row样式元素的样式类,其所有.col *子元素的高度都相同。
仅将这些样式应用于某些特定的.row(使用.container-height,如示例中所示)也避免将边距和填充溢出应用于所有.col *。
答案 18 :(得分:2)
我搜索了同样问题的解决方案,发现一个刚刚工作!! - 几乎没有额外的代码..
见https://medium.com/wdstack/bootstrap-equal-height-columns-d07bc934eb27 为了一个好的解决方案,并在底部设置你需要的resposne,并带有一个链接。
https://www.codeply.com/go/EskIjvun4B
这对我来说是正确的回应方式...... 报价: ... 3 - 使用flexbox(最好!)
截至2017年,在响应式设计中制作相同高度列的最佳(也是最简单)方法是使用CSS3 flexbox。
.row.display-flex {
display: flex;
flex-wrap: wrap;
}
.row.display-flex > [class*='col-'] {
display: flex;
flex-direction: column;
}
并简单地使用:
div class="container">
<div class="row display-flex .... etc..
答案 19 :(得分:2)
最好的:
使用bootstrap
<强>更新强>
/*!
*
* Reflex v1.0
*
* Reflex is a flexbox grid which provides a way to take advantage of emerging
* flexbox support while providing a fall back to inline-block on older browsers
*
* Built by Lee Jordan G.C.S.E.
* email: ldjordan@gmail.com
* github: https://github.com/leejordan
*
* Structure and calculations are inspired by twitter bootstrap
*
*/
.reflex-order-12 {
-webkit-order: 12;
-ms-flex-order: 12;
order: 12;
}
.reflex-order-11 {
-webkit-order: 11;
-ms-flex-order: 11;
order: 11;
}
.reflex-order-10 {
-webkit-order: 10;
-ms-flex-order: 10;
order: 10;
}
.reflex-order-9 {
-webkit-order: 9;
-ms-flex-order: 9;
order: 9;
}
.reflex-order-8 {
-webkit-order: 8;
-ms-flex-order: 8;
order: 8;
}
.reflex-order-7 {
-webkit-order: 7;
-ms-flex-order: 7;
order: 7;
}
.reflex-order-6 {
-webkit-order: 6;
-ms-flex-order: 6;
order: 6;
}
.reflex-order-5 {
-webkit-order: 5;
-ms-flex-order: 5;
order: 5;
}
.reflex-order-4 {
-webkit-order: 4;
-ms-flex-order: 4;
order: 4;
}
.reflex-order-3 {
-webkit-order: 3;
-ms-flex-order: 3;
order: 3;
}
.reflex-order-2 {
-webkit-order: 2;
-ms-flex-order: 2;
order: 2;
}
.reflex-order-1 {
-webkit-order: 1;
-ms-flex-order: 1;
order: 1;
}
.reflex-order-0 {
-webkit-order: 0;
-ms-flex-order: 0;
order: 0;
}
.reflex-container {
display: inline-block;
display: -webkit-flex;
display: flex;
zoom: 1;
*display: inline;
margin: 0;
padding: 0;
position: relative;
width: 100%;
letter-spacing: -0.31em;
*letter-spacing: normal;
word-spacing: -0.43em;
list-style-type: none;
}
.reflex-container *,
.reflex-container:before,
.reflex-container:after {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
max-width: 100%;
letter-spacing: normal;
word-spacing: normal;
white-space: normal;
}
.reflex-container *:before,
.reflex-container *:after {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
[class*="reflex-col-"] {
width: 100%;
vertical-align: top;
position: relative;
display: inline-block;
display: -webkit-flex;
display: flex;
zoom: 1;
*display: inline;
text-align: left;
text-align: start;
}
.reflex-item {
display: block;
display: -webkit-flex;
display: flex;
-webkit-flex-direction: column;
flex-direction: column;
-webkit-flex: 1 1 auto;
flex: 1 1 auto;
}
_:-ms-fullscreen,
:root .reflex-item {
width: 100%;
}
.reflex-col-12 {
width: 100%;
*width: 99.9%;
}
.reflex-col-11 {
width: 91.66666666666666%;
*width: 91.56666666666666%;
}
.reflex-col-10 {
width: 83.33333333333334%;
*width: 83.23333333333335%;
}
.reflex-col-9 {
width: 75%;
*width: 74.9%;
}
.reflex-col-8 {
width: 66.66666666666666%;
*width: 66.56666666666666%;
}
.reflex-col-7 {
width: 58.333333333333336%;
*width: 58.233333333333334%;
}
.reflex-col-6 {
width: 50%;
*width: 49.9%;
}
.reflex-col-5 {
width: 41.66666666666667%;
*width: 41.56666666666667%;
}
.reflex-col-4 {
width: 33.33333333333333%;
*width: 33.23333333333333%;
}
.reflex-col-3 {
width: 25%;
*width: 24.9%;
}
.reflex-col-2 {
width: 16.666666666666664%;
*width: 16.566666666666663%;
}
.reflex-col-1 {
width: 8.333333333333332%;
*width: 8.233333333333333%;
}
@media (min-width: 480px) {
.reflex-col-xs-12 {
width: 100%;
*width: 99.9%;
}
.reflex-col-xs-11 {
width: 91.66666666666666%;
*width: 91.56666666666666%;
}
.reflex-col-xs-10 {
width: 83.33333333333334%;
*width: 83.23333333333335%;
}
.reflex-col-xs-9 {
width: 75%;
*width: 74.9%;
}
.reflex-col-xs-8 {
width: 66.66666666666666%;
*width: 66.56666666666666%;
}
.reflex-col-xs-7 {
width: 58.333333333333336%;
*width: 58.233333333333334%;
}
.reflex-col-xs-6 {
width: 50%;
*width: 49.9%;
}
.reflex-col-xs-5 {
width: 41.66666666666667%;
*width: 41.56666666666667%;
}
.reflex-col-xs-4 {
width: 33.33333333333333%;
*width: 33.23333333333333%;
}
.reflex-col-xs-3 {
width: 25%;
*width: 24.9%;
}
.reflex-col-xs-2 {
width: 16.666666666666664%;
*width: 16.566666666666663%;
}
.reflex-col-xs-1 {
width: 8.333333333333332%;
*width: 8.233333333333333%;
}
}
@media (min-width: 768px) {
.reflex-col-sm-12 {
width: 100%;
*width: 99.9%;
}
.reflex-col-sm-11 {
width: 91.66666666666666%;
*width: 91.56666666666666%;
}
.reflex-col-sm-10 {
width: 83.33333333333334%;
*width: 83.23333333333335%;
}
.reflex-col-sm-9 {
width: 75%;
*width: 74.9%;
}
.reflex-col-sm-8 {
width: 66.66666666666666%;
*width: 66.56666666666666%;
}
.reflex-col-sm-7 {
width: 58.333333333333336%;
*width: 58.233333333333334%;
}
.reflex-col-sm-6 {
width: 50%;
*width: 49.9%;
}
.reflex-col-sm-5 {
width: 41.66666666666667%;
*width: 41.56666666666667%;
}
.reflex-col-sm-4 {
width: 33.33333333333333%;
*width: 33.23333333333333%;
}
.reflex-col-sm-3 {
width: 25%;
*width: 24.9%;
}
.reflex-col-sm-2 {
width: 16.666666666666664%;
*width: 16.566666666666663%;
}
.reflex-col-sm-1 {
width: 8.333333333333332%;
*width: 8.233333333333333%;
}
}
@media (min-width: 992px) {
.reflex-col-md-12 {
width: 100%;
*width: 99.9%;
}
.reflex-col-md-11 {
width: 91.66666666666666%;
*width: 91.56666666666666%;
}
.reflex-col-md-10 {
width: 83.33333333333334%;
*width: 83.23333333333335%;
}
.reflex-col-md-9 {
width: 75%;
*width: 74.9%;
}
.reflex-col-md-8 {
width: 66.66666666666666%;
*width: 66.56666666666666%;
}
.reflex-col-md-7 {
width: 58.333333333333336%;
*width: 58.233333333333334%;
}
.reflex-col-md-6 {
width: 50%;
*width: 49.9%;
}
.reflex-col-md-5 {
width: 41.66666666666667%;
*width: 41.56666666666667%;
}
.reflex-col-md-4 {
width: 33.33333333333333%;
*width: 33.23333333333333%;
}
.reflex-col-md-3 {
width: 25%;
*width: 24.9%;
}
.reflex-col-md-2 {
width: 16.666666666666664%;
*width: 16.566666666666663%;
}
.reflex-col-md-1 {
width: 8.333333333333332%;
*width: 8.233333333333333%;
}
}
@media (min-width: 1200px) {
.reflex-col-lg-12 {
width: 100%;
*width: 99.9%;
}
.reflex-col-lg-11 {
width: 91.66666666666666%;
*width: 91.56666666666666%;
}
.reflex-col-lg-10 {
width: 83.33333333333334%;
*width: 83.23333333333335%;
}
.reflex-col-lg-9 {
width: 75%;
*width: 74.9%;
}
.reflex-col-lg-8 {
width: 66.66666666666666%;
*width: 66.56666666666666%;
}
.reflex-col-lg-7 {
width: 58.333333333333336%;
*width: 58.233333333333334%;
}
.reflex-col-lg-6 {
width: 50%;
*width: 49.9%;
}
.reflex-col-lg-5 {
width: 41.66666666666667%;
*width: 41.56666666666667%;
}
.reflex-col-lg-4 {
width: 33.33333333333333%;
*width: 33.23333333333333%;
}
.reflex-col-lg-3 {
width: 25%;
*width: 24.9%;
}
.reflex-col-lg-2 {
width: 16.666666666666664%;
*width: 16.566666666666663%;
}
.reflex-col-lg-1 {
width: 8.333333333333332%;
*width: 8.233333333333333%;
}
}
.reflex-wrap {
-webkit-flex-wrap: wrap;
flex-wrap: wrap;
}
.reflex-wrap-reverse {
-webkit-flex-wrap: wrap-reverse;
flex-wrap: wrap-reverse;
}
.reflex-direction-row-reverse {
-webkit-flex-direction: row-reverse;
flex-direction: row-reverse;
}
.reflex-direction-column {
-webkit-flex-direction: column;
flex-direction: column;
}
.reflex-direction-column-reverse {
-webkit-flex-direction: column-reverse;
flex-direction: column-reverse;
}
.reflex-align-start {
-webkit-align-items: flex-start;
align-items: flex-start;
}
.reflex-align-end {
-webkit-align-items: flex-end;
align-items: flex-end;
}
.reflex-align-end [class*="reflex-col-"] {
vertical-align: bottom;
}
.reflex-align-center {
-webkit-align-items: center;
align-items: center;
}
.reflex-align-center [class*="reflex-col-"] {
vertical-align: middle;
}
.reflex-align-baseline {
-webkit-align-items: baseline;
align-items: baseline;
}
.reflex-align-baseline [class*="reflex-col-"] {
vertical-align: baseline;
}
.reflex-align-content-start {
-webkit-align-content: flex-start;
align-content: flex-start;
}
.reflex-align-content-end {
-webkit-align-content: flex-end;
align-content: flex-end;
}
.reflex-align-content-end [class*="reflex-col-"] {
vertical-align: bottom;
}
.reflex-align-content-center {
-webkit-align-content: center;
align-content: center;
}
.reflex-align-content-space-between {
-webkit-align-content: space-between;
align-content: space-between;
}
.reflex-align-content-space-around {
-webkit-align-content: space-around;
align-content: space-around;
}
.reflex-align-self-stretch {
-webkit-align-self: stretch;
align-self: stretch;
}
.reflex-align-self-start {
-webkit-align-self: flex-start;
align-self: flex-start;
}
.reflex-align-self-end {
-webkit-align-self: flex-end;
align-self: flex-end;
vertical-align: bottom;
}
.reflex-align-self-center {
-webkit-align-self: center;
align-self: center;
vertical-align: middle;
}
.reflex-align-self-baseline {
-webkit-align-self: baseline;
align-self: baseline;
vertical-align: baseline;
}
.reflex-justify-start {
text-align: left;
-webkit-justify-content: flex-start;
justify-content: flex-start;
}
.reflex-justify-end {
text-align: right;
-webkit-justify-content: flex-end;
justify-content: flex-end;
}
.reflex-justify-center {
text-align: center;
-webkit-justify-content: center;
justify-content: center;
}
.reflex-justify-space-between {
text-align: justify;
-moz-text-align-last: justify;
text-align-last: justify;
-webkit-justify-content: space-between;
justify-content: space-between;
}
.reflex-justify-space-around {
text-align: justify;
-moz-text-align-last: justify;
text-align-last: justify;
-webkit-justify-content: space-around;
justify-content: space-around;
}
.reflex-item-margin-sm {
margin: 0 0.25em 0.5em;
}
.reflex-item-margin-md {
margin: 0 0.5em 1em;
}
.reflex-item-margin-lg {
margin: 0 1em 2em;
}
.reflex-item-content-margin-sm * {
margin-right: 0.25em;
margin-left: 0.25em;
}
.reflex-item-content-margin-md * {
margin-right: 0.5em;
margin-left: 0.25em;
}
.reflex-item-content-margin-lg * {
margin-right: 1em;
margin-left: 1em;
}
.reflex-img {
display: inline-block;
display: -webkit-flex;
display: flex;
zoom: 1;
*display: inline;
-webkit-flex: 0 0 auto;
flex: 0 0 auto;
margin-left: 0;
margin-right: 0;
max-width: 100%;
width: 100%;
height: auto;
}
.reflex-item-footer {
margin-top: auto;
margin-left: 0;
margin-right: 0;
}
&#13;
<link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet"/>
<link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="reflex-container reflex-wrap">
<div class="reflex-col-xs-12 reflex-col-sm-4 panel" style="background-color: red">
some content
</div>
<div class="reflex-col-xs-6 reflex-col-sm-4 panel" style="background-color: yellow">
kittenz
<img src="http://upload.wikimedia.org/wikipedia/en/1/13/Matrona.jpg">
</div>
<div class="reflex-col-xs-6 reflex-col-sm-4 panel" style="background-color: blue">
some more content
</div>
</div>
&#13;
答案 20 :(得分:2)
如果有人使用bootstrap 4并寻找相等高度的列,只需使用row-eq-height
来表示父div
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" rel="stylesheet" />
<div class="row row-eq-height">
<div class="col-xs-4" style="border: 1px solid grey;">.row.row-eq-height > .col-xs-4</div>
<div class="col-xs-4" style="border: 1px solid grey;">.row.row-eq-height > .col-xs-4<br>this is<br>a much<br>taller<br>column<br>than the others</div>
<div class="col-xs-4" style="border: 1px solid grey;">.row.row-eq-height > .col-xs-4</div>
</div>
&#13;
参考:http://getbootstrap.com.vn/examples/equal-height-columns/
答案 21 :(得分:1)
@media (min-width: @screen-sm-min) {
div.equal-height-sm {
display: table;
> div[class^='col-'] {
display: table-cell;
float: none;
vertical-align: top;
}
}
}
<div class="equal-height-sm">
<div class="col-xs-12 col-sm-7">Test<br/>Test<br/>Test</div>
<div class="col-xs-12 col-sm-5">Test</div>
</div>
示例:
https://jsfiddle.net/b9chris/njcnex83/embedded/result/
在这里改编自几个答案。基于flexbox的答案是正确的方式,一旦IE8和9死了,一旦Android 2.x死了,但2015年不是这样,可能不会在2016年.IE8和9仍然弥补4-6%的使用量取决于您的衡量方式,对于许多企业用户而言,情况要糟糕得多。 http://caniuse.com/#feat=flexbox
display: table
,display: table-cell
技巧更向后兼容 - 一个很棒的事情是唯一严重的兼容性问题是Safari问题,它会强制box-sizing: border-box
,已经应用于您的Bootstrap标签。 http://caniuse.com/#feat=css-table
显然,你可以添加更多类似的东西,比如.equal-height-md
。为了在我的约束用法中获得小的性能优势,我将这些绑定到div,但是您可以删除标记以使其像Bootstrap的其余部分一样更加通用。
请注意,这里的jsfiddle使用CSS,因此,Less会提供的东西在链接的示例中是硬编码的。例如,@ screen-sm-min已替换为Less将插入的内容 - 768px。
答案 22 :(得分:1)
我使用clearfix
这个非常简单的解决方案,没有任何副作用。
以下是AngularJS的一个例子:
<div ng-repeat-start="item in list">
<div class="col-lg-4 col-md-6 col-sm-12 col-xs-12"></div>
</div>
<div ng-repeat-end>
<div ng-if="$index % 3 == 2" class="clearfix visible-lg"></div>
<div ng-if="$index % 2 == 1" class="clearfix visible-md"></div>
</div>
还有一个关于PHP的例子:
<?php foreach ($list as $i => $item): ?>
<div class="col-lg-4 col-md-6 col-sm-12 col-xs-12"></div>
<div class="clearfix visible-md"></div>
<?php if ($i % 2 === 1): ?>
<div class="clearfix visible-lg"></div>
<?php endif; ?>
<?php endforeach; ?>
答案 23 :(得分:1)
如果在你的上下文中有意义,你可以在每次休息后添加一个空的12列div,它作为一个分隔符,拥抱你行中最高单元格的底部。
<div class="row">
<div class="col-xs-6">Some content</div>
<div class="col-xs-6">
Lots of content! Lots of content! Lots of content! Lots of content! Lots of content!
</div>
<div id="spacer-div" class="col-xs-12"></div>
<div class="col-xs-6">More content...</div>
</div><!--this You forgot to close -->
希望这有帮助!
答案 24 :(得分:0)
我想补充一点,Dr.Flink给出的答案也可以应用于Bootstrap 3 form-horizontal
块 - 如果你想为每个单元格使用背景颜色,这可能非常方便。为了使其适用于引导程序表单,您需要包装表单内容,该表单内容仅用于复制表格式结构。
下面的示例还提供了CSS,它演示了一个额外的媒体查询,允许Bootstrap 3简单地接管并在较小的屏幕上执行它是正常的事情。这也适用于IE8 +。
示例:
<form class="form-horizontal" role="form">
<div class="form-wrapper">
<div class="form-group">
<label class="col-xs-12 col-sm-2 control-label">My Label</label>
<div class="col-xs-12 col-sm-10">
Some content
</div>
</div>
</div>
</form>
.form-wrapper {
display: table;
}
.form-wrapper .form-group {
display: table-row;
}
.form-wrapper .form-group .control-label {
display: table-cell;
float: none;
}
.form-wrapper .form-group label + div {
display: table-cell;
float: none;
}
@media (max-width: 768px) {
.form-wrapper {
display: inherit;
}
.form-wrapper .form-group {
display: block;
}
.form-wrapper .form-group .control-label {
display: inherit;
}
.form-wrapper .form-group label + div {
display: inherit;
}
}
答案 25 :(得分:0)
是的,Bootstrap 4确实使行中的所有列等于高度,但是,如果在行内内容周围创建边框,您可能会发现它看起来像列的高度不相等!
当我将height: 100%
应用于col中的元素时,我发现我失去了利润。
我的解决方案是在col的div上使用填充(而不是内部元素的空白)。像这样:
<div class="container">
<div class="row">
<div class="col-lg-4 col-md-6 col-12 py-4">
<div class="h-100 border round">
...
</div>
</div>
<div class="col-lg-4 col-md-6 col-12 py-4">
<div class="h-100 border round">
...
</div>
</div>
<div class="col-lg-4 col-md-6 col-12 py-4">
<div class="h-100 border round">
...
</div>
</div>
<div class="col-lg-4 col-md-6 col-12 py-4">
<div class="h-100 border round">
...
</div>
</div>
<div class="col-lg-4 col-md-6 col-12 py-4">
<div class="h-100 border round">
...
</div>
</div>
<div class="col-lg-4 col-md-6 col-12 py-4">
<div class="h-100 border round">
...
</div>
</div>
<div class="col-lg-4 col-md-6 col-12 py-4">
<div class="h-100 border round">
...
</div>
</div>
<div class="col-lg-4 col-md-6 col-12 py-4">
<div class="h-100 border round">
...
</div>
</div>
<div class="col-lg-4 col-md-6 col-12 py-4">
<div class="h-100 border round">
...
</div>
</div>
</div>
</div>
上面的代码示例使用Bootstrap 4.1创建一组九个带有边框的盒子
答案 26 :(得分:0)
<强> HTML 强>
<div class="container-fluid">
<div class="row-fluid">
<div class="span4 option2">
<p>left column </p>
<p>The first column has to be the longest The first column has to be the longes</p>
</div>
<div class="span4 option2">
<p>middle column</p>
</div>
<div class="span4 option2">
<p>right column </p>
<p>right column </p>
<p>right column </p>
<p>right column </p>
<p>right column </p>
</div>
</div>
</div>
<强> CSS 强>
.option2 { background: red; border: black 1px solid; color: white; }
<强> JS 强>
$('.option2').css({
'height': $('.option2').height()
});
答案 27 :(得分:0)
尝试通过flex-box
执行此操作
.container {
display: flex;
padding-bottom: 50px;
}
.col {
background: blue;
padding: 30px;
}
.col.center {
background: red;
height: 100px;
margin-bottom: -50px;
}
<div class="container">
<div class="col">Left</div>
<div class="col center">Center</div>
<div class="col">Right</div>
</div>
Live JSFiddle - https://jsfiddle.net/grinmax_/spsn4fnq/
答案 28 :(得分:-1)
您可以将列包装在div
中 Dim xe As XElement
xe = <configuration>
<tag1>
<interestingstuff>avalue</interestingstuff>
</tag1>
<tag2>
<item_type1 name="foo">
<item_type2 name="bar">
<property>value1</property>
<property>value2</property>
</item_type2>
<item_type2 name="pub">
<property>valueX</property>
<property>valyeY</property>
</item_type2>
</item_type1>
<item_type1 name="foo2">
<item_type2 name="pub">
<property>valueX</property>
</item_type2>
</item_type1>
</tag2>
</configuration>
Dim passed_item1_value As String = "foo" 'for test
Dim passed_item2_value As String = "pub" 'for test
Dim ie As IEnumerable(Of String)
ie = (From el In xe.<tag2>.<item_type1>...<item_type2>
Where el.Parent.@name = passed_item1_value AndAlso el.@name = passed_item2_value
From sel In el...<property> Select sel.Value)
Return ie.ToArray
答案 29 :(得分:-2)
2019/03/19
** Bootstrap 4等高解决方案**
Bootstrap Utilities/flex for equal height
通过引导程序类将父div固定为height
或min-height
的相等高度
<div class="d-flex align-content-stretch flex-wrap" style="min-height: 200px">
<div>Flex height test text for example , Flex height test text for example </div>
<div>Flex item</div>
<div>Flex item</div>
<div>Flex item</div>
</div>
.bd-highlight {
background-color: rgba(86,61,124,.15);
border: 1px solid rgba(86,61,124,.15);
}
.fixed-height-200 {
min-height: 200px;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet"/>
<br><br><br>
<div class="d-flex align-content-stretch flex-wrap fixed-height-200">
<div class="p-2 bd-highlight">Flex item <br> 1111111111</div>
<div class="p-2 bd-highlight bg-danger">Flex item</div>
<div class="p-2 bd-highlight">Flex item</div>
<div class="p-2 bd-highlight bg-info">Flex item</div>
<div class="p-2 bd-highlight">Flex item</div>
<div class="p-2 bd-highlight">Flex item</div>
<div class="p-2 bd-highlight bg-light">Flex item <br> 1111111111</div>
<div class="p-2 bd-highlight">Flex item <br> 1111111111</div>
<div class="p-2 bd-highlight">Flex item <br> 1111111111</div>
<div class="p-2 bd-highlight">Flex item</div>
<div class="p-2 bd-highlight bg-primary">Flex item</div>
<div class="p-2 bd-highlight">Flex item</div>
<div class="p-2 bd-highlight">Flex item</div>
<div class="p-2 bd-highlight">Flex item</div>
<div class="p-2 bd-highlight">Flex item</div>
</div>
答案 30 :(得分:-3)
只需通过bootstrap文档检查,我找到了相同高度的列问题的简单解决方案。
仅为所需的视口添加额外的clearfix
<div class="clearfix visible-xs-block"></div>
例如:
<div class="col-md-3 col-xs-6">This is a long text</div>
<div class="col-md-3 col-xs-6">This is short</div>
<div class="clearfix visible-xs-block">This is a long text</div>
<div class="col-md-3 col-xs-6">Short</div>
<div class="col-md-3 col-xs-6">Long Text</div>
<div class="clearfix visible-xs-block"></div>
<div class="col-md-3 col-xs-6">Longer text which will push down</div>
<div class="col-md-3 col-xs-6">Short</div>
答案 31 :(得分:-4)
您可以使用以下代码
var heights = $(".row > div").map(function() {
return $(this).height();
}).get(),
maxHeight = Math.max.apply(null, heights);
$(".row > div").height(maxHeight);
答案 32 :(得分:-7)
很多css在这里...
<强>的jQuery 强>
$(document).ready(function() {
// Get height of original column you want to match
var box-height = $('.panel:nth-child(1)').outerHeight();
// Output same height on particular element or element(s)
$('.panel').height(box-height);
});
非常简单的代码无需使用css,尽管上面的所有选项都完全可用。