Bootstrap 3在列上应用15px左右填充。
这会给我带来麻烦,因为我的布局有很多嵌套列:
<div class="col-md-6"></div>
<div class="col-md-6"></div>
<div class="col-md-12">
<div class="col-md-6">
<div class="col-md-12"></div>
<div class="col-md-12"></div>
</div>
<div class="col-md-6"></div>
</div>
我不需要删除填充,因为我需要元素之间的分离。
我在视觉上看到的结果是:http://jsfiddle.net/Aeup8/8/
我的第一个方法是设置:
[class^='col-'] {
padding:0;
}
[class^='col-'] + [class^='col-'] {
padding-left: 15px;
}
但是,这不会修复换行到第二行的列。
我的第二种方法是使用JavaScript:
(function($) {
var $els = $('[class^="col-"');
//console.log($els);
var cols = {};
$els.each(function(i, col) {
var classes = $(col).attr('class').split(' ');
classes.forEach(function(str) {
var match = str.match(/col-(\w+)-(\d+)/);
if ( match ) {
//console.log($els.eq(i));
cols[match[1]] = cols[match[1]] || {};
var current = cols[match[1]];
if ( match[2] == 12 ) {
current.ids = [];
current.sum = 0;
$els.eq(i).css({ padding: 0 });
return
}
current.ids = current.ids || [];
current.sum = current.sum || 0;
current.sum += ( +match[2] );
current.ids.push(i);
if (current.sum == 12) {
//console.log(current);
current.ids.forEach(function(id) {
$els.eq(id).css({ 'padding': 0, 'padding-right': '15px' });
if (id == i) $els.eq(id).css({ 'padding': 0, 'padding-left': '15px' });
});
current.ids = [];
current.sum = 0;
}
}
});
});
})(jQuery);
但它有问题:
我该怎么办?
答案 0 :(得分:43)
您可以通过将每个图层包装在自己的.row
中来nesting columns来对抗重复的填充:
<div class="row">
<div class="col-md-6"></div>
<div class="col-md-6"></div>
<div class="col-md-12">
<div class="row">
<div class="col-md-6">
<div class="row">
<div class="col-md-12"></div>
<div class="col-md-12"></div>
</div>
</div>
<div class="col-md-6"></div>
</div>
</div>
</div>
两个主要列之间的差距将保留,但嵌套不会继续进一步缩进:http://jsfiddle.net/5uqmE/。
They currently accomplish this的apply a negativemargin
反对外padding
:
// Row
//
// Rows contain and clear the floats of your columns.
.row {
.make-row();
}
// Creates a wrapper for a series of columns
.make-row(@gutter: @grid-gutter-width) {
margin-left: (@gutter / -2);
margin-right: (@gutter / -2);
&:extend(.clearfix all);
}
答案 1 :(得分:10)
在你的容器上
.row .row {
margin: 0px -15px;
}
答案 2 :(得分:-1)
一个简单的基于CSS的解决方案可以创建自定义类并将它们应用于col- *以清除内部div上的填充或不需要填充的位置。
<div class="col-md-6 mmLR15"></div>
<div class="col-md-6 mM15"></div>
<div class="col-md-12 mM15">
<div class="row">
<div class="col-md-6 mmR15">
<div class="col-md-12 mm15"></div>
<div class="col-md-12 mm15"></div>
</div><!-- col-md-6 -->
<div class="col-md-6 mmL15"></div>
</div><!-- row -->
</div><!-- col-md-12 -->
现在对于mmLR15,mmR15,mmL15将在需要时清除自举列填充。下面有书面的课程声明,以帮助您清楚地理解我的观点。
.mmLR15 {
margin: 0px -15px;
}
.mmR15 {
margin-right: -15px;
}
.mmL15 {
margin-left: -15px;
}
这只会清除你不想要的div上的bootstrap类。必须包括所需的课程。您可以创建一个单独的文件并在bootstrap之后包含,以便您的代码更清晰。 mmR15&amp; mmL15仅适用于div的行,因为行会清除左右边距。
对于介质断点,其中bootstrap使列100%,您可以根据您的需要重置它们,或者我应该说你的布局。希望这会对你有所帮助。