Lil*_*ter 10 html css3 twitter-bootstrap twitter-bootstrap-3
我正在构建一个最终将成为投资组合页面的Bootstrap 3网格.在下面的bootply中,在第一个示例中,您可以看到它在我的bootply中完美地堆叠从6到4到3
但是在第二个示例中,在同一个bootply中,有一个项目,其中项目的tile更长,并且在堆叠时会在网格中产生间隙.
什么是最好的bootstrap友好解决方案?任何帮助非常感谢.
jme*_*e11 17
有几种方法可以解决这个问题:
如果您的内容是动态生成的,因此您不知道哪些元素将具有更长的内容,并且您为不同的断点设置了不同的布局,则响应类方法可以成为一个可以适应的方法.我用了一个小技巧.在网格中的每个元素之后,我添加了一个div,我可以应用mini clearfix来使用媒体查询.这是额外的标记,但它很好地解决了问题,并允许我具有可读和可维护的标记,同时避免使用javascript来调整布局.以下是使用标记的示例:
<div class="row portfolio"> <!--Add a class so you can target with nth-child-->
<div class="col-lg-2 col-sm-3 col-xs-4">
<div class="panel panel-default">
<div class="panel-body">
<a href="#">
<img src="http://placehold.it/200x200" class="img-thumbnail img-responsive">
</a>
</div>
<div class="panel-footer">
This is text
</div>
</div>
</div>
<div class="clear"></div> <!--Here's the added div after every element-->
....
</div> <!--/.portfolio.row-->
Run Code Online (Sandbox Code Playgroud)
CSS:
@media (max-width: 767px) {
.portfolio>.clear:nth-child(6n)::before {
content: '';
display: table;
clear: both;
}
}
@media (min-width: 768px) and (max-width: 1199px) {
.portfolio>.clear:nth-child(8n)::before {
content: '';
display: table;
clear: both;
}
}
@media (min-width: 1200px) {
.portfolio>.clear:nth-child(12n)::before {
content: '';
display: table;
clear: both;
}
}
Run Code Online (Sandbox Code Playgroud)
如果您更喜欢jQuery路由(同样,这假设您已经将一个类"组合"添加到包含您的投资组合元素的行中,以便更容易定位):
var row=$('.portfolio');
$.each(row, function() {
var maxh=0;
$.each($(this).find('div[class^="col-"]'), function() {
if($(this).height() > maxh)
maxh=$(this).height();
});
$.each($(this).find('div[class^="col-"]'), function() {
$(this).height(maxh);
});
});
Run Code Online (Sandbox Code Playgroud)
Bootstrap"only"方法是使用Bootstrap .clearfix
.你必须每隔x个列迭代一次,所以在你的情况下,clearfix
div将放在第6 列之后col-lg-2
.这适用于lg
屏幕宽度..
http://www.bootply.com/SV0kI3TSN3
但是,由于您使用了多种响应断点,你需要放置clearfix
在md
与xs
colums包了.这将防止所有屏幕宽度的间隙.
http://www.bootply.com/3TsF0arPRS
1 - 如上所述,'clearfix'方法(由Bootstrap推荐)就像这样(需要每x列迭代一次).这将强制每3列包裹一次
<div class="row">
<div class="col-md-4">Content</div>
<div class="col-md-4">Content</div>
<div class="col-md-4">Content</div>
<div class="clearfix"></div>
<div class="col-md-4">Content</div>
<div class="col-md-4">Content</div>
<div class="col-md-4">Content</div>
<div class="clearfix"></div>
<div class="col-md-4">Content</div>
<div class="col-md-4">Content</div>
<div class="col-md-4">Content</div>
</div>
Run Code Online (Sandbox Code Playgroud)
还有一个仅限CSS的"clearfix"变体(不支持). http://www.codeply.com/go/lUbs1JgXUd
2 - 使列具有相同的高度(使用flexbox):
由于问题是由高度差异引起的,因此可以使每列的列高度相等.Flexbox是执行此操作的最佳方式,并且在Bootstrap 4中本机支持.
.row.display-flex {
display: flex;
flex-wrap: wrap;
}
.row.display-flex > [class*='col-'] {
display: flex;
flex-direction: column;
}
Run Code Online (Sandbox Code Playgroud)
3 - CSS3列方法(类似砌体的CSS解决方案)..
这不是Bootstrap 3的原生,而是使用CSS多列的另一种方法.这种方法的一个缺点是列顺序是从上到下而不是从左到右.
4 - JavaScript/jQuery方法
最后,您可能想要使用像Isotope/Masonry这样的插件:
归档时间: |
|
查看次数: |
11441 次 |
最近记录: |