【问题标题】:Bootstrap: How to correctly centre a 6 column DIV inside of a fluid containerBootstrap:如何在流体容器内正确居中 6 列 DIV
【发布时间】:2016-07-02 23:47:56
【问题描述】:

我很想知道使用 Bootstrap 将 DIV(col-lg-6)居中在流体容器(12 列)内的正确方法是什么?

这是我的设计模型的屏幕截图,它解释了我想要实现的目标:http://d.pr/i/1iBrP

到目前为止,我在 Bootstraps 网站上看到,这种事情可以通过添加偏移类来实现,例如:

<div class="container-fluid">
    <div class="row">
      <h1 class="col-xs-12 col-sm-10 col-md-6 col-sm-offset-1 col-md-offset-3">Auto cargo</h1>
    </div>
</div>

这是一种正确的方法,还是有更好(或更可取)的方法来完成这项任务?

另外,如果 DIV 的宽度为 7 列,这意味着 DIV 一侧的列数会有所不同,因为 12 - 7 = 5 列且 5 不是偶数?

非常感谢您。

【问题讨论】:

  • 当前场景看起来是正确的。我很想知道是否有奇数列居中的框架解决方案。我不知道一个

标签: html css twitter-bootstrap


【解决方案1】:
  1. 如果您有 7 列,则无法使用纯 Bootstrap 将其居中,您可以这样做:

.col-center {
  float: none;
  margin: 0 auto;
}

<div class="col-md-7 col-center">
  1. 您的代码是正确的,但您不需要设置 col-xs-12 类(如果没有该类,它将自动在移动设备上设置 12 列 - div width = 100%
  2. 你将col-md-6col-md-offset-3设置为中等屏幕尺寸,这意味着它在大屏幕(lg)上是一样的,如果你想在大屏幕上重置它你必须这样做(更改列大小并重置偏移量):

<h1 class="col-sm-10 col-md-6 col-sm-offset-1 col-md-offset-3 col-lg-12 col-lg-offset-0">Auto cargo</h1>
  1. 您不应该在 h1 元素上设置此类,这是更好的方法:

<div class="container-fluid">
  <div class="row">
    <div class="col-xs-12 col-sm-10 col-md-6 col-sm-offset-1 col-md-offset-3"> 
      <h1>Auto cargo</h1>
    </div>
  </div>
</div>

【讨论】:

  • 感谢 makshh 的回复,非常感谢。所以这就是我现在更改代码的方式:&lt;div class="container-fluid"&gt; &lt;div class="row"&gt; &lt;div class="col-sm-10 col-md-6 hidden-sm-up"&gt; &lt;h1&gt;Автомобильные&lt;br&gt; перевозки&lt;/h1&gt; &lt;/div&gt; &lt;div class="col-sm-10 col-md-6 col-sm-offset-1 col-md-offset-3 hidden-xs"&gt; &lt;h1&gt;Автомобильные перевозки&lt;/h1&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; 我添加了第二个具有相同内容的

    ,因为我的第一个

    有一个
    标记,用于我想要标题的移动版本显示为 2 行。

  • col-md-7添加了居中解决方案。
  • 太好了,谢谢。虽然,我可以再问你一个关于正确 html 标记的问题,你能看看这个屏幕截图,看看这种添加 div 的方法是否正确?我曾经将类直接添加到

    元素等,但你提到最好将这些元素包装在一个单独的 div 中并给它所有这些类(如果我当然理解正确)。所以这是一个截图:d.pr/i/Gjyy。只是想确保我正确理解了你。谢谢。

  • 一件事:你应该总是在 div 上有 1 个 col- 类,因为它有适当的负边距(左右 -15px)。所以你应该在第三个 div 中有:&lt;div class="col-xs-12 hidden-sm-up&gt;...&lt;/div&gt;。如果你不这样做,你的 div 会比其他的长 30px。
  • 啊,好的,我明白了,非常感谢......除此之外,一切似乎都很好,是吗?
【解决方案2】:

[编辑后的答案]

您可以在 div 中使用帮助程序类 center-block,它可以是 row

这里是关于这个助手类的文档:Center content blocks

.container-fluid {
  border: 1px solid red;
}

.col-xs-7 {
  border: 1px solid blue;
}

.text-center > .single {
  display: inline-block;
  float: none;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>

<div class="container-fluid">
  
  <div class="row">
    <div class="col-xs-7 col-xs-offset-2">
      I'm not centered
    </div>
  </div>
  
  <div class="row">
    <div class="col-xs-7 col-xs-offset-3">
      I'm not centered
    </div>
  </div>
  
  <div class="row center-block">
    <div class="col-xs-7 col-xs-offset-3">
      I'm not really centered
    </div>
  </div>
  
  <div class="row text-center">
    <div class="col-xs-7 single">
      I'm really centered
    </div>
  </div>
  
</div>

编辑:

我更新了 sn-p,因为 center-block 在我给出的示例中不起作用。

因此您可以在row 上使用text-center,以及一个名为single 的自定义类,该类使用display: inline-blockfloat: none

【讨论】:

    【解决方案3】:

    你不需要做那些复杂的代码,只需使用下面的代码,这将适用于所有屏幕。

            <div class="container-fluid">
              <div class="col-sm-6 col-sm-offset-3 text-center">
                <h2>Lorem ipsum dolor sit amet</h2>
              </div>
            </div>

    【讨论】:

    • 提供的代码不同的是,sm大小的div是10 cols,md及以上只缩小到6 cols;这个答案也将 sm 限制为 6 列,这似乎不是 OP 的初衷
    猜你喜欢
    • 2016-05-23
    • 2013-03-18
    • 2014-12-25
    • 2014-09-16
    • 2018-07-22
    • 1970-01-01
    • 2016-05-11
    • 2020-05-18
    • 1970-01-01
    相关资源
    最近更新 更多