Ric*_*ard 919 css twitter-bootstrap
我正在使用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>Run Code Online (Sandbox Code Playgroud)
Pop*_*les 1005
使用负边距的解决方案1(不会破坏响应性)
<div class="container">
<div class="row ">
<div class="col-md-4" style="background-color: red">
some content
</div>
<div class="col-md-4" style="background-color: yellow">
catz
<img width="100" height="100" src="https://lorempixel.com/100/100/cats/">
</div>
<div class="col-md-4" style="background-color: green">
some more content
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
解决方案2使用表格
.row{
overflow: hidden;
}
[class*="col-"]{
margin-bottom: -99999px;
padding-bottom: 99999px;
}
Run Code Online (Sandbox Code Playgroud)
使用flex的解决方案3在2015年8月添加.之前发布的评论不适用于此解决方案.
.row {
display: table;
}
[class*="col-"] {
float: none;
display: table-cell;
vertical-align: top;
}
Run Code Online (Sandbox Code Playgroud)
Zim*_*Zim 283
Bootstap 3.x的最佳方法 - 使用CSS flexbox(并且需要最少的CSS)..
.equal {
display: flex;
display: -webkit-flex;
flex-wrap: wrap;
}
Run Code Online (Sandbox Code Playgroud)
要仅在特定断点处应用相同高度的flexbox(响应),请使用媒体查询.例如,这是sm(768px)及以上:
@media (min-width: 768px) {
.row.equal {
display: flex;
flex-wrap: wrap;
}
}
Run Code Online (Sandbox Code Playgroud)
此解决方案也适用于多行(列包装):https:
//www.bootply.com/gCEXzPMehZ
其他解决方法
其他人会推荐这些选项,但对于响应式设计并不是一个好主意.这些仅适用于没有列包装的简单单行布局.
1)使用巨大的负边距和填充
2)使用display:table-cell(此解决方案也会影响响应网格,因此@media查询可用于仅table在列垂直堆叠之前在更宽的屏幕上应用显示)
默认情况下,Flexbox现在在Bootstrap 4中使用,因此不需要额外的CSS来制作相同高度的列:http://www.codeply.com/go/IJYRI4LPwU
Kev*_* R. 84
不需要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>
Run Code Online (Sandbox Code Playgroud)
提示:如果您的行中有超过12列,则引导网格将无法包装它.因此,div.row.row-eq-height每12列添加一个新列.
提示:您可能需要添加
<link rel="stylesheet" href="http://getbootstrap.com.vn/examples/equal-height-columns/equal-height-columns.css" />
Run Code Online (Sandbox Code Playgroud)
你的HTML
Bry*_*lis 62
要回答你的问题,这就是你需要看到带有前缀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;
}
}
Run Code Online (Sandbox Code Playgroud)
要在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%;
}
Run Code Online (Sandbox Code Playgroud)
虽然flexbox在IE9及以下版本中不起作用,但您可以使用带有条件标记的回退使用javascript网格作为polyfill:
<!--[if lte IE 9]>
<![endif]-->
Run Code Online (Sandbox Code Playgroud)
至于接受的答案中的另外两个例子......表演示是一个不错的想法,但实施错误.将CSS专门应用于引导列类将毫无疑问地完全打破网格框架.您应该为一个和两个表使用自定义选择器,不应将表样式应用于[class*='col-']具有已定义宽度的表.仅当您需要相等高度和相等宽度的列时,才应使用此方法.它不适用于任何其他布局,也不响应.我们可以在移动显示器上实现它的后备......
<div class="table-row-equal">
<div class="thumbnail">
Content...
</div>
<div class="thumbnail">
Content...
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
@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%;
}
}
Run Code Online (Sandbox Code Playgroud)
最后,在接受的答案中实现一个真实布局版本的第一个演示对于某些情况是一个不错的选择,但不适用于引导列.原因是所有列都扩展到容器高度.因此,这也会破坏响应性,因为列不会扩展到它们旁边的元素,而是扩展到整个容器.此方法也不允许您将底部边距应用于行,并且还会导致其他问题,例如滚动到锚标记.
有关完整代码,请参阅Codepen,它自动为flexbox代码添加前缀.
glo*_*idt 42
您只显示一行,因此您的用例可能仅限于此.万一你有多行,这个插件 - github Javascript-grid - 完美无缺!它使每个面板扩展到最高的面板,根据该行中最高的面板为每一行提供不同的高度.这是一个jquery解决方案与css,但希望推荐它作为替代方法.
pau*_*dru 28
如果您想在任何浏览器中使用此功能,请使用javascript:
$( document ).ready(function() {
var heights = $(".panel").map(function() {
return $(this).height();
}).get(),
maxHeight = Math.max.apply(null, heights);
$(".panel").height(maxHeight);
});
Run Code Online (Sandbox Code Playgroud)
你也可以使用inline-flex,它工作得很好,可能比用CSS修改每个行元素要干净一些.
对于我的项目,我希望每一行的子元素都有相同的高度,所以边框看起来是锯齿状的.为此我创建了一个简单的css类.
.row.borders{
display: inline-flex;
width: 100%;
}
Run Code Online (Sandbox Code Playgroud)
.row-eq-height {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
}
Run Code Online (Sandbox Code Playgroud)
从:
http://getbootstrap.com.vn/examples/equal-height-columns/equal-height-columns.css
小智 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});
});
}
Run Code Online (Sandbox Code Playgroud)
$(document).ready(function(){
equal_cols('.selector');
});
Run Code Online (Sandbox Code Playgroud)
注意:这篇文章已根据@Chris的评论进行了编辑,注释该代码仅设置为$.each()函数中的最后一个最高高度
之前的一些答案解释了如何使div具有相同的高度,但问题是当宽度太窄时div不会叠加,因此你可以用一个额外的部分来实现它们的答案.对于每一个,您可以使用此处给出的CSS名称以及您使用的行类,因此如果您始终希望div彼此相邻,则div应如下所示:
<div class="row row-eq-height-xs">Your Content Here</div>
Run Code Online (Sandbox Code Playgroud)
对于所有屏幕:
.row-eq-height-xs {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
flex-direction: row;
}
Run Code Online (Sandbox Code Playgroud)
当你想使用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;
}
}
Run Code Online (Sandbox Code Playgroud)
当你想要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;
}
}
Run Code Online (Sandbox Code Playgroud)
当你想使用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;
}
}
Run Code Online (Sandbox Code Playgroud)
编辑
根据评论,确实有一个更简单的解决方案,但您需要确保从所有尺寸的最大所需宽度提供列信息,直到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;
}
Run Code Online (Sandbox Code Playgroud)
如果有人使用 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>Run Code Online (Sandbox Code Playgroud)
参考:http : //getbootstrap.com.vn/examples/equal-height-columns/
小智 6
我尝试了很多在这个帖子和其他页面上提出的建议,但没有解决方案在每个浏览器中100%工作.
所以我试验了很长时间并想出了这个. 一个完整的Bootstrap Equal Height列解决方案,只有1个类 的flexbox帮助.这适用于所有主流浏览器IE10 +.
CSS:
.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;
}
Run Code Online (Sandbox Code Playgroud)
HTML:
<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>
Run Code Online (Sandbox Code Playgroud)
例如,要支持更多版本的IE,您可以使用https://github.com/liabru/jquery-match-height并定位所有子列.equal-cols.像这样:
// Create a check for IE9 (or any other specific browser).
if(IE9) {
$(".row.equal-cols > [class*='col-']").matchHeight();
}
Run Code Online (Sandbox Code Playgroud)
如果没有这个polyfill,列的行为就像通常的Bootstrap列一样,这是一个非常好的后备.
令我惊讶的是,我无法在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>
Run Code Online (Sandbox Code Playgroud)
的CSS
img {
width: 100%;
}
p {
padding: 2em;
}
@media (min-width: 768px) {
.row-equal {
display: flex;
flex-wrap: wrap;
}
.col-equal {
margin: auto;
}
}
Run Code Online (Sandbox Code Playgroud)
查看工作演示:http : //jsfiddle.net/5kmtfrny/
所以,是的,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>
Run Code Online (Sandbox Code Playgroud)
上面的代码示例使用 Bootstrap 4.1 创建一组带有边框的九个框
小智 5
来自官方文档。也许你可以在你的情况下使用它。
当您需要相同的高度时,将 .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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
795611 次 |
| 最近记录: |