Twitter Bootstrap - 如何水平或垂直居中元素

its*_*sme 282 css twitter-bootstrap

有没有办法在主要父母的内部垂直或水平居中html元素?

its*_*sme 244

更新:虽然这个答案在2013年初可能是正确的,但它不应再被使用了.适当的解决方案使用抵消.


至于其他用户的建议,还有一些本机引导类可用,如:

class="text-center"
class="pagination-centered"
Run Code Online (Sandbox Code Playgroud)

感谢@Henning和@trejder

  • Bootstrap中已包含完全相同的样式; 只需使用`class ="text-center"` (22认同)
  • 这应该是答案,其他人忽略了问题中的整个"引导程序"部分. (7认同)
  • 或者`.pagination-centered`作为替代. (3认同)
  • 使用“text-center”进行布局是非常糟糕的做法。在 Bootstrap 中对齐列的正确方法是使用“col-XX-offset-Y”类。http://getbootstrap.com/css/#grid-offsetting。这个答案在 2013 年可能是正确的,但现在不应该再使用了。 (3认同)

小智 76

Bootstrap文档:

将元素设置为display: block中心并通过中心margin.可作为mixin和class使用.

<div class="center-block">...</div>
Run Code Online (Sandbox Code Playgroud)


css*_*hus 54

对于此问题的未来访问者:

如果您尝试将图像居中在div中但图像不会居中,则可以描述您的问题:

jsFiddle DEMO的问题

<div class="col-sm-4 text-center">
    <img class="img-responsive text-center" src="myPic.jpg" />
</div>
Run Code Online (Sandbox Code Playgroud)

img-responsive类添加display:block到图像标签,其停止指令text-align:center(text-center从工作类).

解:

<div class="col-sm-4">
    <img class="img-responsive center-block" src="myPic.jpg" />
</div>
Run Code Online (Sandbox Code Playgroud)

jsFiddle of the solution

添加center-block类会覆盖display:block使用img-responsive该类放入的指令.

没有这个img-responsive类,图像就会通过添加text-center类来居中


更新:

此外,您应该了解flexbox的基础知识以及如何使用它,因为Bootstrap4现在原生使用它.

这是Brad Schiff的一个优秀,快节奏的视频教程

这是一本很棒的备忘单


Zim*_*Zim 30

2018年更新

Bootstrap 4中,定心方法发生了变化..

BS4的水平中心

  • text-center仍然用于display:inline元素
  • mx-auto取代center-block中心display:flex儿童
  • offset-* 或者 mx-auto可以用于居中网格列

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

演示 Bootstrap 4水平居中

有关BS4中的垂直居中,请参阅 /sf/answers/2902507821/


小智 29

您可以直接写入您的css文件,如下所示:

.content {
  position: absolute;
  top: 50%;
  left:50%;
  transform: translate(-50%,-50%);
  }
Run Code Online (Sandbox Code Playgroud)
<div class = "content" >
  
   <p> some text </p>
  </div>
Run Code Online (Sandbox Code Playgroud)


小智 9

我用这个

<style>
    html, body {
        height: 100%;
        margin: 0;
        padding: 0 0;
    }

    .container-fluid {
        height: 100%;
        display: table;
        width: 100%;
        padding-right: 0;
        padding-left: 0;
    }

    .row-fluid {
        height: 100%;
        display: table-cell;
        vertical-align: middle;
        width: 100%;
    }

    .centering {
        float: none;
        margin: 0 auto;
    }
</style>
<body>
    <div class="container-fluid">
        <div class="row-fluid">
            <div class="offset3 span6 centering">
                content here
            </div>
        </div>
    </div>
</body>
Run Code Online (Sandbox Code Playgroud)

  • 在某些情况下不起作用(请参阅[对基本相同答案的评论](http://stackoverflow.com/questions/10088706/twitter-bootstrap-how-to-center-elements-horizo​​ntally-or-vertically#comment24195315_15853518)并且不使用[Bootstrap特定类进行居中](http://getbootstrap.com/css/#helper-classes-center)。 (2认同)

Per*_*Man 7

对于水平居中,你可以有这样的东西:

.centering{
float:none;
margin:0 auto
}

 <div class="span8 centering"></div>
Run Code Online (Sandbox Code Playgroud)

  • 当直接在图像中使用时不起作用(至少不在当前实现中):`<img rel="nofollow noreferrer" src ="img/logo.png"style ="float:none; margin:0 auto"/>`.将父母`div`与`img`一起包围并将`.text-center`或`.pagination-centered`类赋予父类就像魅力一样. (4认同)
  • 要使用margin:0 auto将元素居中,您需要为该元素添加宽度。在上面的示例中,未指定宽度,因为span8在boobstrap中具有宽度,但是您的图像却不是这样&lt;img src =“ img / logo.png” style =“ float:none; margin:0 auto; width:300px” /&gt;会将图片在父对象中水平居中 (2认同)
  • 这忽略了问题的"Bootstrap"部分. (2认同)

xan*_*ler 5

我喜欢这个类似问题的解决方案./sf/answers/1752541241/text-center在实际的表数据<td>和表头<th>元素上使用bootstraps 类.所以

<td class="text-center">Cell data</td>

<th class="text-center">Header cell data</th>


alv*_*eek 5

使用 bootstrap 4,您可以使用 flex

<div class="d-flex justify-content-center align-items-center">
    <button type="submit" class="btn btn-primary">Create</button>
</div>
Run Code Online (Sandbox Code Playgroud)

来源:引导程序 4.1