我开始自定义我的引导程序,到目前为止,我有一些与以下模板非常相似的东西:
http://twitter.github.com/bootstrap/examples/fluid.html
但我有四个 span3,而不是三个 span4。一旦浏览器达到一定的宽度,我想要三个 span3s。然后,在另一个宽度,两个 span3s。
有没有办法用直接的css做到这一点?
我开始自定义我的引导程序,到目前为止,我有一些与以下模板非常相似的东西:
http://twitter.github.com/bootstrap/examples/fluid.html
但我有四个 span3,而不是三个 span4。一旦浏览器达到一定的宽度,我想要三个 span3s。然后,在另一个宽度,两个 span3s。
有没有办法用直接的css做到这一点?
.span3
您可以简单地将s的宽度减小为.span2
媒体查询中的 's 的宽度。
/* Bootstrap defaults: */
.span3 {
width:270px;
}
.span4 {
width:370px;
}
@media screen and (max-width: 1024px) and (min-width: 767px) {
/* Decreased span4 size within media query. */
.span4 {
width:270px;
}
...
}
这是一种使用 jQuery / javascript 的方法。“.colElement”是您想要影响的每个 .span* 元素。只需调整窗口宽度断点以满足您的需求。
基于 twitter 引导程序 2.*
function arrangeColumns(tile, numColsLG, numColsMED, numColsSM){
$(tile).removeClass('first');
var colSize = 0;
var windowWidth = $(window).width();
switch(numColsLG) {
case 2: colSizeLG = 6; break;
case 3: colSizeLG = 4; break;
case 4: colSizeLG = 3; break;
case 5: colSizeLG = 3; break;
case 6: colSizeLG = 2; break;
}
switch(numColsMED) {
case 2: colSizeMED = 6; break;
case 3: colSizeMED = 4; break;
case 4: colSizeMED = 3; break;
case 5: colSizeMED = 3; break;
case 6: colSizeMED = 2; break;
}
switch(numColsSM) {
case 2: colSizeSM = 6; break;
case 3: colSizeSM = 4; break;
case 4: colSizeSM = 3; break;
case 5: colSizeSM = 3; break;
case 6: colSizeSM = 2; break;
}
if( windowWidth > 1200){
$(tile).removeClass('span' + colSizeMED + " " + 'span' + colSizeSM);
$(tile).addClass('span' + colSizeLG);
$(tile + ':nth-child('+numColsLG+'n+1)').addClass('first');
} else if( windowWidth < 1200 && windowWidth > 900) {
$(tile).removeClass('span' + colSizeLG + " " + 'span' + colSizeSM);
$(tile).addClass('span' + colSizeMED);
$(tile + ':nth-child('+numColsMED+'n+1)').addClass('first');
} else {
$(tile).removeClass('span' + colSizeLG + " " + 'span' + colSizeMED);
$(tile).addClass('span' + colSizeSM);
$(tile + ':nth-child('+numColsSM+'n+1)').addClass('first');
}
}
/* Initialize */
arrangeColumns('.colElement', 3, 2, 2);
/* Call on window resize */
$(window).resize(function() {
arrangeColumns('.colElement', 3, 2, 2);
});
我最近需要这个作为我的原型。我可以想到三个肮脏的解决方案,它们都不是真正完美的,足以让我在生产代码中实现。但是,如果您需要它用于简单的静态网站或使用原型演示某些东西,它们都可以正常工作。
编写两个场景。一个有 4 列,另一个有 3 列。使用@media 查询隐藏/显示所需的一项。(使用引导程序中的实用程序类)。
类似于没有。1 但不那么凌乱。而不是编写两个不同的场景 - 动态更改 HTML 标记。放置一个简单的 JS/Jquery 脚本,它将删除一些类并在特定宽度上添加新的类。您可能需要销毁一些 [div class="row"] 并动态创建新的,以连续获得不同数量的项目。
忽略此部分的网格(如果可以)并硬编码您的项目。您可以修复它们的宽度,因此当空间不足时,它们将开始换行,或者仅使用百分比和硬编码特定宽度与 @media 查询。您始终可以使用所有列并将硬编码的项目放在一行中(例如,使用所有 12 列作为容器)。
奖励 - 使用同位素 ( http://mpezzi.github.io/bootstrap_isotope/ ) 或 Mansonry http://masonry.desandro.com/来实现你的效果。
如果能够控制我想显示的特定断点处连续有多少项目,那就太好了,但这需要重新考虑引导程序......也许他们会弄清楚并添加为附加组件或其他东西.. . 目前我什至无法想到这如何与引导默认类一起工作......
我了解您要求使用 Bootsrap,但 Zurb Foundation 具有这样的内置功能
<div class="row">
<div class="small-4 medium-6 large-12 columns">
</div>
<div class="small-8 medium-6 columns">
</div>
</div>
这样做是为小型设备创建 2 列 4 和 8 列,或为中型设备创建 2 列 6 列,在大屏幕上创建 1 个 12 列全宽列。如果您想在屏幕尺寸上保持相同的布局,只需 small-* 列,它将用于中型和大型媒体查询