当我做boostrap时,我必须使用“row”类......
当你看我的测试设计时:
为什么我被强制留下-30px的保证金?
使用这个html我希望3行共享每个列33%的整个可用宽度:
<div class="container">
<div class="row">
<div style="background-color: pink;" class="span4">
This is a label
</div>
<div style="background-color: violet;" class="span4">
This is a textbox
</div>
<div style="background-color: slateblue;" class="span4">
This is a button
</div>
</div>
<div class="row">
<div style="background-color: orange;" class="span4">
This is a label
</div>
<div style="background-color: orangered;" class="span4">
This is a textbox
</div>
<div style="background-color: yellow;" class="span4">
This is a button
</div>
</div>
<div class="row">
<div style="background-color: seagreen;" class="span4">
This is a label
</div>
<div style="background-color: green;" class="span4">
This is a textbox
</div>
<div style="background-color: lightgreen;" class="span4">
This is a button
</div>
</div>
</div>
带按钮的灰色区域来自以下代码:
<div style="background-color: gray;">
<div class="pager">
<div class="pull-left">
<a href="#" class="btn" data-bind="css: { disabled: !hasPrevious() }, click: previous">previous</a>
<a href="#" class="btn" data-bind="css: { disabled: !hasNext() }, click: next">next</a>
</div>
<div class="pull-right">
<span data-bind="text: stepNumber()" />
<span>/</span>
<span data-bind="text: stepsLength" />
</div>
</div>
<hr />
<!-- ko compose: { model: activeStep,
transition: 'entrance' } -->
<!-- /ko -->
</div>
当我删除-30px边距时,为什么整个3列设计都会合在一起?
我应该如何更改代码以真正获得3列布局,每列具有相同的宽度。这就是span4应该做的事情。
答案 0 :(得分:32)
问题1 :
span
都有margin-left
30px
来在单个块之间创建一些空格。此空格应仅显示 单个span
和不在开头(或结束)row
。要做到这一点,有几种可能性 - 例如:
margin
(这是bootstrap所做的):first-child
选择器删除连续第一个span
的左边距我只能假设引导程序使用第一个选项,因为它与旧浏览器(最有可能是IE 7及更低版本)更兼容。
一个小例子:假设你的span
宽度为100,空格为10,连续有3个。
问题2
如果您使用span4
s,则您已经拥有3个相同宽度的列。你不需要改变任何东西。
答案 1 :(得分:29)
班级row
添加了
clearfix
margin-left
margin-right
Bootply :http://www.bootply.com/120858
开头有负边距:
<div class="row">
<div class="col-md-4">.col-md-4</div>
<div class="col-md-4">.col-md-4</div>
<div class="col-md-4">.col-md-4</div>
</div>
开头没有负边距:
<div>
<div class="col-md-4">.col-md-4</div>
<div class="col-md-4">.col-md-4</div>
<div class="col-md-4">.col-md-4</div>
</div>
答案 2 :(得分:7)
因为您不再需要使用行液。所有行都执行cleafix并应用负边距。这对于精确的网格系统通常是正确的。您可以使用容器或使用“行”而不是使用“clearfix”,并且您将拥有与之前完全相同的行为,没有边距。
答案 3 :(得分:2)
解决此问题的一种方法是使用
class="container row"
代替class="row"
,此解决方案将使行适合容器内部而不会出现水平溢出。
答案 4 :(得分:0)
如果您处于流体模式且使用较少,则mixin非常有用: .offset First Child(@columns)
(参见mixin.less of Bootstrap)
答案 5 :(得分:0)
使用jQuery:
$('<div>Test</div>').addClass('row').css("margin-left", 0).css("margin-right", 0).appendTo('.content');
答案 6 :(得分:0)
为避免在单独的“ div”上使用“容器”,为什么不在自定义CSS上定义特定的类? 我使用:
.nomargin {margin: 0;}
和HTML:
<div class="row nomargin">
…
</div>
结果相同,但更具可读性。