Twitter Bootstrap-在行之间添加顶部空间


Answers:


801

在Twitter引导程序中编辑或覆盖行是一个坏主意,因为这是页面支架的核心部分,并且您将需要没有上边距的行。

要解决此问题,请创建一个新类“ top-buffer”,添加所需的标准边距。

.top-buffer { margin-top:20px; }

然后在需要上边距的行div上使用它。

<div class="row top-buffer"> ...

45
对于框架而言,编辑本机行是错误的,而新类应该只是对行类的补充……这是一个微妙的区别,但是在Twitter Bootstrap中,该行具有特定的页面布局角色。无论如何,我只是想提供帮助,我的解决方案可以解决该问题。
Acyra 2013年

11
没办法,这些答案与恕我直言略有不同。此方法更有用,因为它包含“为您的类样式命名,以便您的html易于阅读”,并且您可以在html中读取margin-top而不是rowSpecificForName。这个答案更符合Twitter引导模式。
院长希勒

2
他们将向Bootstrap 4中添加特定的垂直间距类:github.com/twbs/bootstrap/issues/4286
icc97

2
所有我从这些意见,了解到的情况是开发者非常刚愎自用,有些喜欢2 + 3 = 5和其他3 + 2 = 5的移动...
法比奥S.

3
@FabioS。应该了解的是,对于Bootstrap这样的框架,编辑本机代码或覆盖它是一个坏主意。场景无穷无尽,但这里有几个示例。a。)覆盖-如果您覆盖.row类,则现在需要遍历您的项目,并将其他类添加到不应有余量的行中。b。编辑本机代码-您在工作时继承了一个项目向上移动到bootstrap4; 糟糕!看起来不对!!现在,您将需要遍历bootstrap 3文件,以查找以前的开发人员所做的更改。
peroija

176

好的,只是为了让您知道发生了什么,我使用了一些新的类,如Acyra所述:

.top5 { margin-top:5px; }
.top7 { margin-top:7px; }
.top10 { margin-top:10px; }
.top15 { margin-top:15px; }
.top17 { margin-top:17px; }
.top30 { margin-top:30px; }

每当我想做 <div class="row top7"></div>

为了更好地响应,您可以添加margin-top:7%而不是5px例如:D


13
我觉得这个解决方案比公认的解决方案优雅得多。
rdiaz82 2014年

72
这是相同的。
亚历山大

@alexander,但更通用。
Ejaz

6
如何.top-buffer { margin-top:20px; }不同.top30 { margin-top:30px; }?好吧,从任何开发人员的角度来看:都是一样的。适应用例的调节器不在此处计算。特别是不是,如果OP回答了他自己的问题。
亚历山大

2
经典的17px上边距;很有用。
adripanico

129

引导程序3

如果您需要在引导程序中分隔行,则只需使用即可.form-group。这会将15px的边距添加到行的底部。

对于您的情况,要获得最高利润,可以将此类添加到上一个.row元素

<div class="row form-group">

/* From bootstrap.css */
.form-group {
        margin-bottom: 15px;
}

引导程序4

您可以使用内置的间距类

<div class="row mt-3"></div>

类名中的“ t”使其仅适用于“上”侧,下,左,右也有类似的类。该数字定义空间大小。


表格组是否从BS4中剥离?
Z. Khullah '17

3
否,form-group仍然存在,但是添加了用于边距/填充的特殊类,可以完成此任务并提供更多选项。
Buksy

Bootstrap V 4中对此进行了多次更改吗?我在一个版本的4现在mt-3不工作,所以使用form-group
尼克Schwaderer

它应该工作,检查链接到项目的引导CSS是否包含“ .mt-3”类定义。
Buksy '18年

81

对于Bootstrap 4,应使用

速记实用程序类

格式如下:

{属性} {面}-{大小}

其中财产是以下之一:

  • m-对于设置边距的类
  • p-用于设置填充的类

其中是以下之一:

  • t-对于设置margin-top或padding-top的类
  • b-对于设置margin-bottom或padding-bottom的类
  • l-对于设置margin-left或padding-left的类
  • r-对于设置margin-right或padding-right的类
  • x-对于同时设置* -left和* -right的类
  • y-对于同时设置* -top和* -bottom的类
  • 空白-用于在元素的所有4个面上设置边距或填充的类

其中大小是以下之一:

  • 0-对于通过将其设置为0消除边距或填充的类
  • 1-(默认情况下)用于将边距或填充设置为$ spacer * .25的类
  • 2-(默认情况下)用于将边距或填充设置为$ spacer * .5的类
  • 3-(默认情况下)用于将边距或填充设置为$ spacer的类
  • 4-(默认情况下)用于将边距或填充设置为$ spacer * 1.5的类
  • 5-(默认情况下)用于将边距或填充设置为$ spacer * 3的类
  • auto-用于将边距设置为auto的类

因此,您应该执行以下任一操作:

<div class="row mt-1">
<div class="row mt-2">
          ...
<div class="row mt-5">

阅读文档以获取更多说明。在这里尝试现场示例。


3
现在,Bootstrap 4发行版应该会接受这个答案。这些内置类附带了这些类,无需创建新类。
马特·K

45

有时,页边空白可能会导致设计问题:

http://www.w3.org/TR/CSS2/box.html#collapsing-margins

因此,我建议创建“ margin-bottom类”而不是“ margin-top类”,并将它们应用于上一个项目。

如果您正在使用Bootstrap导入LESS Bootstrap文件,请尝试使用比例Bootstrap主题空间定义margin-bottom类:

.margin-bottom-xs {margin-bottom: ceil(@line-height-computed / 4);}  
.margin-bottom-sm {margin-bottom: ceil(@line-height-computed / 2);} 
.margin-bottom-md {margin-bottom: @line-height-computed;}
.margin-bottom-lg {margin-bottom: ceil(@line-height-computed * 2);}  

33

我将这些类添加到我的引导样式表中

.voffset  { margin-top: 2px; }
.voffset1 { margin-top: 5px; }
.voffset2 { margin-top: 10px; }
.voffset3 { margin-top: 15px; }
.voffset4 { margin-top: 30px; }
.voffset5 { margin-top: 40px; }
.voffset6 { margin-top: 60px; }
.voffset7 { margin-top: 80px; }
.voffset8 { margin-top: 100px; }
.voffset9 { margin-top: 150px; }

<div class="container">
  <div class="row voffset2">
    <div class="col-lg-12">
      <p>
        Vertically offset text.
      </p>
    </div>
  </div>
</div>

27

我正在使用这些类来更改上边距:

.margin-top-05 { margin-top: 0.5em; }
.margin-top-10 { margin-top: 1.0em; }
.margin-top-15 { margin-top: 1.5em; }
.margin-top-20 { margin-top: 2.0em; }
.margin-top-25 { margin-top: 2.5em; }
.margin-top-30 { margin-top: 3.0em; }

当我需要一个元素与上面的元素具有2em的间距时,可以这样使用它:

<div class="row margin-top-20">Something here</div>

如果您喜欢像素,请将em更改为px即可。


6
好主意,但我将数字抽象化了,因为它们太具体了。如果坚持使用s,m,l,xl,xxl等抽象性,则可以通过CSS更改大小,而不必更改模板中的名称。
Mike Purcell 2015年

1
@MikePurcell好主意,它可能是适合您的解决方案。但是我更喜欢定义边距的更精确方法。使用em而不是px为我提供了一种宽松的方法来实现它,而无需太具体。
Hexodus

3
<div class="row margin-top-20">over有<div class"row" style="margin-top: 2.0em">什么好处?
icc97 '16

@ icc97基本上是分开关注的,但是在这里您可以看到其他意见:stackoverflow.com/a/2612494/1683224
Wiley Marques

@WileyMarques对于名为“ top-buffer”的类(如公认的答案)是正确的,但对于名为margin-top-20的类却没有意义。除非您对margin-top-20实际添加除2em的填充以外的内容感到满意,否则这会造成混淆。
Thelem


4

Bootstrap 4 Alpha,用于上边距:速记CSS类名称mt-1,mt-2(mt-lg-5,mt-sm-2),其底部,右侧,左侧相同,并且您还具有自动类ml-汽车

    <div class="mt-lg-1" ...>

单位从from 15:在variables.scss中,这意味着如果您设置mt-1,则会提供.25rem的页边距上限。

$spacers: (
  0: (
    x: 0,
    y: 0
  ),
  1: (
    x: ($spacer-x * .25),
    y: ($spacer-y * .25)
  ),
  2: (
    x: ($spacer-x * .5),
    y: ($spacer-y * .5)
  ),
  3: (
    x: $spacer-x,
    y: $spacer-y
  ),
  4: (
    x: ($spacer-x * 1.5),
    y: ($spacer-y * 1.5)
  ),
  5: (
    x: ($spacer-x * 3),
    y: ($spacer-y * 3)
  )
) !default;

在这里阅读更多

https://v4-alpha.getbootstrap.com/utilities/spacing/#horizo​​ntal-centering


3

在.css文件中添加到此类:

.row {
    margin-left: -20px;
    *zoom: 1;
    margin-top: 50px;
}

或创建一个新类并将其添加到元素中

.rowSpecificFormName td {
    margin-top: 50px;
}

7
嗯,我不喜欢触摸CSS,如果我需要其他页面中没有空白的行怎么办?
itsme 2012年

您可以制作一个新类.rowSpecificForm
Nielsen Ramon

2
但是在Twitter Bootstrap中,仅“ margin-top”没有定义css类。
Nielsen Ramon '04

奇怪的是,他们没有在垂直方向设置几个班级,我需要添加它们,没有其他解决方案了:/,谢谢尼尔森
itsme 2012年

8
记住CSS级联,因此您无需编辑bootstrap.css。
ONOZ 2012年

1

如果只想在一页上进行更改,请添加以下样式规则:

 #myCustomDivID .row {
     margin-top:20px;
 }

1

在Bootstrap 4 alpha +中,您可以使用此功能

class margin-bottom-5

这些类使用以下格式命名: {property}-{sides}-{size}


1
just take a new class beside every row and apply css of margin-top: 20px;
here is the code below
<style>
  .small-top
   {
     margin-top: 25px;  
   }
</style>    
<div class="row small-top">
   <div class="col-md-12">
   </div>
 </div>

请在您的答案中添加说明。没有解释的回答是没有用的。
ADreNaLiNe-DJ

1

Bootstrap3

CSS(仅装订线,周围没有空白):

.row.row-gutter {
  margin-bottom: -15px;
  overflow: hidden;
}
.row.row-gutter > *[class^="col"] {
  margin-bottom: 15px;
}

CSS(左右边距等于15px / 2):

.row.row-margins {
  padding-top: 7px; /* or margin-top: 7px; */
  padding-bottom: 7px; /* or margin-bottom: 7px; */
}
.row.row-margins > *[class^="col"] {
  margin-top: 8px;
  margin-bottom: 8px;
}

用法:

<div class="row row-gutter">
    <div class="col col-sm-9">first</div>
    <div class="col col-sm-3">second</div>
    <div class="col col-sm-12">third</div>
</div>

(使用SASS或LESS 15px可能是引导程序中的变量)



0

您可以添加以下代码:

[class*="col-"] {
    padding-top: 1rem;
    padding-bottom: 1rem;
}


0

如果您使用的是BootStrap 3.3.7,则可以通过NPM使用开源库bootstrap-spacer

npm install bootstrap-spacer

或者您可以访问github页面:

https://github.com/chigozieorunta/bootstrap-spacer

这是使用.row-spacer类分隔行的示例:

<div class="row row-spacer">
    <div class="col-md-4">
    </div>
    <div class="col-md-4">
    </div>
    <div class="col-md-4">
    </div>
</div>

<div class="row row-spacer">
    <div class="col-md-4">
    </div>
    <div class="col-md-4">
    </div>
    <div class="col-md-4">
    </div>
</div>

如果在列之间需要空格,则还可以添加.row-col-spacer类:

<div class="row row-col-spacer">
    <div class="col-md-4">
    </div>
    <div class="col-md-4">
    </div>
    <div class="col-md-4">
    </div>
</div>

您还可以将各种.row-spacer和.row-col-spacer类组合在一起:

<div class="row row-spacer row-col-spacer">
    <div class="col-md-4">
    </div>
    <div class="col-md-4">
    </div>
    <div class="col-md-4">
    </div>
</div>

1
我建议不要添加依赖对CSS的40线
安德鲁钻石

-3

我的把戏 不太干净,但是对我来说很好

<p>&nbsp;</p>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.