您如何使用Twitter Bootstrap获得居中的内容?


569

我正在尝试遵循一个非常基本的示例。使用入门页面和网格系统,我希望以下几点:

<div class="row">
  <div class="span12">
    <h1>Bootstrap starter template</h1>
    <p>Example text.</p>
  </div>
</div>

...将产生居中的文字。

但是,它仍然显示在最左侧。我究竟做错了什么?


5
您是要让'<div class =“ span12”>'内的文本居中还是要使整个'<div class =“ row”>'div在浏览器窗口中居中?
NerdFury 2012年


3
@Chloe关心HTML兼容性的人。<center>不赞成使用text-align: center,顺便提一下,正是bootstrap类.text-center包装的内容。
jmoss 2015年

如果您使用的是Bootstrap 4,请访问:stackoverflow.com/questions/42388989/…–
Zim

Answers:


690

这是用于文本居中的(这就是问题所在

有关其他类型的内容,请参见Flavien的答案

更新:Bootstrap 2.3.0+答案

最初的答案是引导程序的早期版本。从bootstrap 2.3.0开始,您可以简单地给div这个class.text-center


原始答案(2.3.0之前)

您需要定义两个类之一,row或者span12使用text-align: center。参见http://jsfiddle.net/xKSUH/http://jsfiddle.net/xKSUH/1/


2
我已经尝试过对row12和span12进行此操作,但是我在span12(内部行)中的表始终位于左侧。添加填充会将其移动到中心,但是我想以一种响应方式将其居中。我可以以某种方式进行自动填充吗?
ATSiem 2012年

我看,这是工作,但我们为什么要需要定义it.Are这些没有定义我说的只是文字....?
Akshat几碗夏尔马

@AkshatJiwanSharma-定义了这些类,但是我最后一次看,text-align: center这些类不是默认的。通常,默认设置为left对齐。
ScottS 2012年

对于2.3.0之前的版本,.pagination-centered也可以使用:P节省添加另一个类的按键。
萨里姆2014年

@Sarim:实际上,pagination-centered要求您向html添加另一个类。我的2.3.0之前的答案只需要扩展一个已经存在的类的属性定义即可。另外,如果您使用查看了答案的注释pagination-centered,则会发现一些与此有关的异议和警告。但是,如果适合您的情况,那就继续吧!:-)
ScottS

240

注意:这已在Bootstrap 3删除


在Bootstrap 3之前,您可以使用CSS类,pagination-centered如下所示:

<div class="span12 pagination-centered">
    Centered content.
</div>

该类pagination-centered已经在bootstrap.css(或bootstrap.min.css)中,并且只有一条规则:

.pagination-centered{text-align:center;}

使用Bootstrap 2.3.0。只是使用类text-center


41
我不建议使用它作为分页的非常专用(从类名推断)。如果bootstrap决定此类需要为中心的分页做更多工作,则它可能与您在分页上应用的样式冲突,并且可能与以后的更新不兼容。
Dayson'9

4
@ lurii.k这使一切都集中在中心,包括孩子。如果我们只想对齐外部容器,但内部的所有内容都向左对齐,那该怎么办?
gatzkerob 2012年

1
使用Bootstrap 2.3.0。只需使用CSS类.text-center
Iurii.K,2013年

迄今为止最大的答案!使用bootstrap 2.3.2
jQuery00 2013年

4
看来Bootstrap 3.0.0已删除此类。.text-center在父版本上使用是此版本的正确解决方案。
Blazemonger,2013年

152

我想这里的大多数人实际上是在寻找使整个div内容居中的方法,而不仅仅是文本内容(这是琐碎的……)。

在HTML中使内容居中的第二种方法(而不是使用text-align:center)是使元素具有固定的宽度和自动边距(左右)。使用Bootstrap,定义自动边距的样式是“容器”类。

<div class="container">
    <div class="span12">
        "Centered stuff there"
    </div>
</div>

看看这里的小提琴:http : //jsfiddle.net/D2RLR/7788/


9
正如此处正式记录的那样,这是正确的答案:twitter.github.com/bootstrap/scaffolding.html#layouts
Qlimax 2012年

2
@Qlimax您的链接似乎已断开,我想这是您想要2.3.2的功能:getbootstrap.com/2.3.2/scaffolding.html#layouts
Chris

1
@Sebastialonso我刚刚修复了不赞成使用的依赖关系,感谢您报告此问题
Flavien Volken 2015年

如果您想将列居中,则此方法将无效。要使网格列居中,请使用col-*offset-*。例如<div class="col-10 offset-1"><div class="col-8 offset-2">
sgon00,19年

47

更新2019-Bootstrap 4

“居中的内容”可能意味着许多不同的东西,并且自发布以来,Bootstrap居中已发生了很大变化。

水平中心

引导程序3

  • text-center用于display:inline元素
  • center-blockdisplay:block元素为中心
  • col-*offset-* 居中网格列
  • 查看此答案以使导航栏居中

演示Bootstrap 3水平居中

引导程序4

  • text-center仍用于display:inline元素
  • mx-auto替换center-block为中心display:block元素
  • offset-* mx-auto可用于居中网格列
  • justify-content-centerrow也可以用于居中col-*

mx-auto(自动x轴边距)将围绕display:blockdisplay:flex具有一元件限定的宽度,( ,,% 等。)。默认情况下,在网格列上使用Flexbox,因此也有多种Flexbox居中方法。vwpx

演示 Bootstrap 4水平居中


垂直中心

现在,默认情况下,Bootstrap 4是flexbox,因此有许多不同的垂直对齐方法可以使用:auto-marginsflexbox utilsdisplay utils以及vertical align utils。乍一看,“ vertical align utils”似乎很明显,但它们适用于内联和表显示元素。这是一些Bootstrap 4垂直居中选项。


1-使用自动页边距的垂直中心:

垂直居中的另一种方法是使用my-auto。这将使元素在容器内居中。例如,h-100使行全高,并使列my-auto垂直居中col-sm-12

<div class="row h-100">
    <div class="col-sm-12 my-auto">
        <div class="card card-block w-25">Card</div>
    </div>
</div>

使用自动边距演示的垂直中心

my-auto 代表垂直y轴上的边距,它等效于:

margin-top: auto;
margin-bottom: auto;

2-带Flexbox的垂直中心:

垂直中心网格列

由于.row现在display:flex使用Bootstrap 4,因此您可以align-self-center在任何列上直接使用以使其垂直居中...

       <div class="row">
           <div class="col-6 align-self-center">
                <div class="card card-block">
                 Center
                </div>
           </div>
           <div class="col-6">
                <div class="card card-inverse card-danger">
                    Taller
                </div>
          </div>
    </div>

或者,align-items-center整体.row上使所有col-*行垂直居中对齐...

       <div class="row align-items-center">
           <div class="col-6">
                <div class="card card-block">
                 Center
                </div>
           </div>
           <div class="col-6">
                <div class="card card-inverse card-danger">
                    Taller
                </div>
          </div>
    </div>

垂直中心不同高度的列演示


3-使用显示实用程序的垂直居中:

自举4具有显示utils的,可以被用于display:tabledisplay:table-celldisplay:inline等。这些可与所使用的垂直取向utils的要对齐的内联,内联块或表格单元格的元件。

<div class="row h-50">
    <div class="col-sm-12 h-100 d-table">
        <div class="card card-block d-table-cell align-middle">
            I am centered vertically
        </div>
    </div>
</div>

垂直中心使用显示实用程序演示


使用网格布局时,我发现只有以下css组合才能在列内水平和垂直对齐div,以使列的最大高度也与同一行中的最大列匹配。 .className-of-inner-div { display: inline-block; text-align: left; padding-top: 25%; padding-bottom: 20%; margin-top: auto; margin-bottom: auto; } .className-of-Grid-column { vertical-align:middle; text-align: center; }
user3188040

非常感谢。这解决了我的问题。
sgon00

如果可以的话,我会为每个演示投票。他们很棒。:) 非常感谢!
Pascal

36

Bootstrap 3.1.1具有一个.center-block用于使div居中的类。请参阅:http : //getbootstrap.com/css/#helper-classes-center

中心内容块将元素设置为display: block并通过居中margin。可作为mixin和class。

<div class="center-block">...</div>

或者,正如其他人已经说过的那样,使用.text-center该类将文本居中。


29

最好的方法是定义一个CSS样式:

.centered-text {
    text-align:center
}    

然后,在任何需要居中文本的地方,都可以像这样添加文本:

<div class="row">
    <div class="span12 centered-text">
        <h1>Bootstrap starter template</h1>
        <p>Use this document as a way to quick start any new project.<br> All you get is this message and a barebones HTML document.</p>
    </div>
</div>

或者,如果您只是想让p标签居中:

<div class="row">
    <div class="span12 centered-text">
        <h1>Bootstrap starter template</h1>
        <p class="centered-text">Use this document as a way to quick start any new project.<br> All you get is this message and a barebones HTML document.</p>
    </div>
</div>

使用的内联CSS越少越好。


好,我用它来将按钮放在Bootstrap Modal页脚的中央。
巨麋鹿

13

.show-grid类在链接的示例中应用居中对齐的文本。

您总是可以style="text-align:center"将div或其他我想的类添加到行中。


4
像这样添加内联样式通常被认为是不好的做法
Spencer Williams

2
我同意,这就是为什么我也说“或其他课程”的原因:)
PAULDAWG 2012年

12

从2013年2月开始,在某些情况下,我向“ span” div中添加了“中心”类:

<div class="container">
  <div class="row">
    <div class="span9 centred">
      This div will be centred.
    </div>
  </div>
</div>

和CSS:

[class*="span"].centred {
  margin-left: auto;
  margin-right: auto;
  float: none;
}

这样做的原因是因为span * div的位置向左浮动,并且“ auto margin”居中技术仅在div不浮动的情况下有效。

演示(在JSFiddle上):http : //jsfiddle.net/5RpSh/8/embedded/result/

JSFiddle:http : //jsfiddle.net/5RpSh/8/


3
这是最好的答案,因为它使div居中并且仍然响应。这是演示的小提琴。答案中的一个无效:jsfiddle.net/r7Qgn/6
Rafi

9

如果您使用Bootstrap 3,它还具有名为.text-center的内置CSS类。那正是你想要的。

<div class="text-left">
    left
</div>

<div class="text-center">
    center
</div>

<div class="text-right">
    right
</div>

请参阅jsfiddle中的示例。http://jsfiddle.net/ucheng/Q4Fue/


8

Bootstrap 2.3有一个text-center类。

<p class="text-left">Left aligned text.</p>
<p class="text-center">Center aligned text.</p>
<p class="text-right">Right aligned text.</p>

不,这仅适用于文本,问题在于主要容器
drmartin

“问题是关于主容器的”我不明白为什么要这么声称(并看到公认的答案)
leonbloy

5

在我这边,我定义了CSS易于使用且易于记忆的新样式:

.center { text-align: center;}
.left { text-align: left;}
.right { text-align: right;}
.justify { text-align: justify;}
.fleft { float: left;} /*-> similar to .pull-left already existing in bootstrap*/
.fright { float: right;}  /*-> similar to .pull-right already existing in bootstrap*/
.vab { vertical-align: bottom;}
.bold { font-weight: bold;}
.italic { font-style: italic;}

这是个好主意吗?有什么好的做法吗?


3
滑坡。CSS应该从文档结构中消除样式问题。这些(尽管是间接地)将它们重新添加。也许TBS用他们的span12s等等树立了一个不好的榜样
将于

我同意滑坡的评论。我还要补充一点,Twitter Bootstrap本身的使用可以说是一个滑坡。
杰森·斯威特

4

如果您使用的是Bootstrap 2.0+

这可以使div居中于页面。

<div class="row">
    <div class="span4 offset4">
        //your content here gets centered of the page
    </div>
</div>

11
这不会使元素居中。它将元素的左上角向前4列。定心是指将元素的确切中心放到容器元素的中心。
卡加泰·卡兰

3

任何文本对齐实用程序类都可以解决问题。Bootstrap使用.text-center类将文本居中已有很长时间了。

.text-center { text-align: center !important; }

或者,您可以创建自己的实用程序。这些年来,我看到了一些变化:

.u-text-center { text-align: center !important; }
.ta-center { text-align: center !important; }
.ta\:c { text-align: center !important; }

3
这不是一个好的设计,因为向左和向右拉会影响给定类的元素。您定义的拉中心会影响元素的子元素。
卡加泰·卡兰

3

您需要用进行调整.span

例:

<div class="container-fluid">
  <div class="row-fluid">
    <div class="span4"></div>
    <!--/span-->
    <div class="span4" align="center">
      <div class="hero-unit" align="center">
        <h3>Sign In</h3>
        <form>
          <div class="input-prepend">
            <span class="add-on"><i class="icon-envelope"></i> </span>
            <input class="span6" type="text" placeholder="Email address">
          </div>
          <div class="input-prepend">
            <span class="add-on"><i class="icon-key"></i> </span>
            <input class="span6" type="password" placeholder="Password">
          </div>
        </form>
      </div>
    </div>
    <!-- /span -->
    <div class="span4"></div>
  </div>
  <!-- /row -->
</div>

2

在保持响应性(移动兼容性)的同时,将信息块居中的首选方法是在要居中span1的内容前后放置两个空div。

<div class="row-fluid">

    <div class="span1">
    </div>

        <div class="span10">
          <div class="hero-unit">
            <h1>Reading Resources</h1>
            <p>Read here...</p>
          </div>
        </div><!--/span-->

    <div class="span1">
    </div>

</div><!--/row-->

2

对于Bootstrap 3.1.1及更高版本,将内容居中的最佳类是.center-blockhelper类。


是的,现在很好了,主题非常好,用户使用的引导程序版本大于3.1.1
SAFEEN 1990

1
<div class="container">
  <div class="col-md-12 centered">
    <div class="row">
      <div class="col-md-1"></div>
       <div class="col-md-10">
           label
       </div>
      <div class="col-md-1"></div>
    </div>
  </div>
</div>

请勿在主体上使用液体容器。


centered的代码中有一个类,它将引起很多混乱
bg17aw 2016年

有趣的方法,但是对于我特定的Webform CSS,这是一个不错的选择。
JoshYates1980

1

中心块也是上述答案中未提及的选项

    <div class="center-block" style="width:200px;background-color:#ccc;">...</div>

该类center-block所做的只是告诉元素的auto边距为0,其中auto为左/右边距。但是,除非类text-center或css text-align:center; 在父对象上设置时,元素不知道要从中进行此自动计算的点,因此它不会像预期的那样居中。

因此,以文本为中心是一个更好的选择。


1

您可以使用以下任何一种类型

  1. 使用Bootstrap现有类text-center
  2. 添加自定义样式style = "text-align:center"
  3. 使用列偏移量:

    例: <div class="col-md-offset-6 col-md-12"></div>


0

我创建了此类,以在不考虑屏幕大小的情况下保持居中,同时保持响应功能:

.container {
    alignment-adjust: central;
}

0

只需将一个文本中心类用于所需的div或标签即可。我认为这可能很好。这是用于文本对齐中心的Bootstrap类。

以下是一些文本对齐的Bootstrap类:

text-left, text-right, text-justify, etc.
<div class="row">
 <div class="col-md-12 text-center">
  <h1>Bootstrap starter template</h1>
  <p>Example text.</p>
 </div>
</div>

0

我尝试了两种方法,但将div居中的效果很好。两种方式都会在所有屏幕上对齐div。

方法1:使用推送:

<div class = "col-lg-4 col-md-4 col-sm-4 col-xs-4 col-lg-push-4 col-md-push-4 col-sm-push-4 col-xs-push-4" style="border-style:solid;border-width:1px">
    <h2>Grievance form</h2> <!-- To center this text, use style="text-align: center" -->
  </div>

方法2:使用偏移:

<div class = "col-lg-4 col-md-4 col-sm-4 col-xs-4 col-lg-offset-4 col-md-offest-4 col-sm-offest-4 col-xs-offest-4" style="border-style:solid;border-width:1px">
    <h2>Grievance form</h2> <!--to center this text, use style="text-align: center"-->
</div>

结果:

在此处输入图片说明

说明

引导程序将在左侧指定屏幕占用率的第一列。如果我们使用offset或push,它将把“ this”列移动“ those”许多列。尽管我在抵消能力方面遇到了一些问题,但推动还是很棒的。


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.