我正在使用基于响应式设计的 Twitter Bootstrap 布局,并且即将使其响应式。考虑以下网格:
<div class="row-fluid">
<div class="span4"></div>
<div class="span8"></div>
</div>
当屏幕变小时,隐藏并让占据整个宽度的最佳方法是什么?
我正在使用基于响应式设计的 Twitter Bootstrap 布局,并且即将使其响应式。考虑以下网格:
<div class="row-fluid">
<div class="span4"></div>
<div class="span8"></div>
</div>
当屏幕变小时,隐藏并让占据整个宽度的最佳方法是什么?
使用 Bootstrap 2.0.2 或更高版本,您可以:
将 HTML 更改为:
<div class="row-fluid">
<div class="span4 hidden-phone hidden-tablet"></div>
<div class="span8 span12-tablet"></div>
</div>
(我将“更小的屏幕”解释为平板电脑和手机尺寸,您可以根据其他尺寸使用自己的定义)
对于较小的屏幕,.hidden-phone和.hidden-tablet会隐藏span4。
要重新调整span8并恢复该空间,请在您的css中添加以下内容:
@media (max-width: 979px) {
.span12-tablet {
width: 91.48936170212765% !important;
*width: 91.43617021276594% !important;
}
}
如果你正在使用less,你可以使用Bootstrap的网格mixin:
.span12-tablet {
@media (max-width: 979px) {
#grid > .fluid > .span(12) !important;
}
}
使用媒体查询并设置任何最小/最大宽度,将 .span4
设置为 display: none;
然后,在隐藏 .span4
的宽度以下的所有内容中,将 .span8
添加到 .span12
的规则中,因为 Bootstrap 已经完成了所有这些工作,所以没有必要重复。代码如下:
@media (min-width: 320px){
.span12,
.span8 {
width: 300px;
}
}
(最后一段代码只是一个示例,但在bootstrap的脚手架中会有类似的内容。)希望这能帮到你 :) 编辑:这可能有效,我在bootstrap网站上使用开发工具测试过,看起来可以工作。同样,在媒体查询中:@media (min-width: 320px){
#special .span4 {
display: none;
}
#special .span8 {
float: none;
width: auto;
}
}
<div class="row-fluid">
<div class="span4 hidden-phone hidden-tablet"></div>
<div class="span8"></div>
</div>
@media (min-width: 768px) and (max-width: 979px)
{
[class*="span"],
.row-fluid [class*="span"] {
display: block;
float: none;
width: 100%;
margin-left: 0;
}
}
这也适用于您在html中指定的任何其他span宽度。
这些更改的效果使得所有span宽度都为100%,导致iPad在纵向模式下始终使用1列流体模式。
写如下所示
在手机设备中,这个div将会隐藏<div class="span4 hidden-phone"></div>
而这个div将会显示<div class="span8 visible-phone"></div>
更新
之前的答案适用于Bootstrap 2.3
现在市场上已经出现了Bootstrap 3...
因此我为新用户更新了答案→Bootstrap3
在手机设备中,这个div将会隐藏<div class="col-md-4 hidden-xs"></div>
而这个div将会显示<div class="col-xs-4 visible-xs"></div>
[class*="span"] {
width: 100%;
.row-fluid {
[class*="span"] {
width: (@fluidGridColumnWidth * 6) + (@fluidGridGutterWidth * (6 - 1)) - (.5 / @gridRowWidth * 100 * 1%);
float: left;
margin-left: @fluidGridGutterWidth;
&:first-child {
margin-left: 0;
}
}
}
}
简述:使用第二个代码片段
Bootstrap是一个面向移动设备的框架,因此我将从最小的屏幕尺寸开始解释。 在任何断点/屏幕尺寸下,布局始终为12列宽。
从最小的断点(xs - extra small)开始,span4
被隐藏,span8
占据了所有宽度(即12列)。
<div class="row-fluid">
<div class="span4 hidden-xs"></div>
<div class="span8 col-xs-12"></div>
</div>
<div class="row-fluid">
<div class="span4 hidden-xs col-sm-4"></div>
<div class="span8 col-xs-12 col-sm-8"></div>
</div>
<div class="row-fluid">
<div class="span4 visible-md col-md-4"></div>
<div class="span8 col-xs-12 col-md-8"></div>
</div>
我想到了一个小变化。
在 row-fluid
中添加 stack-tablet
类,可以使跨度在平板电脑宽度上堆叠,而不仅仅是在电话宽度上(bootstrap 默认):
@media (max-width: 979px) {
.row-fluid.stack-tablet [class*="span"] {
width: 100%;
display: block;
float: none;
margin-left: 0;
}
}
只是:
<div class="row-fluid">
<div class="span4 hidden-desktop"></div>
<div class="span8"></div>
</div>
hidden-phone
我可以隐藏该 div,但我如何用其他内容替换它呢? - Legendvisible-desktop span4
吗? - jlewkovich