如何在Twitter Bootstrap 3中将容器中的一个列大小的div(12列)居中 .
请参阅起始fiddle .
<body class="container">
<div class="col-lg-1 col-offset-6 centered">
<img data-src="holder.js/100x100" alt="" />
</div>
</body>
所以,我想要 div
,类 centered
在容器中居中 . 如果有多个div,我可以使用一行,但是现在我只想要一个在容器中居中的一列大小的div(12列) .
我也不确定上述方法是否足够好,因为意图不是将 div
偏移一半 . 我不需要 div
之外的空闲空间,并且 div
的内容按比例缩小 . 我想 empty space outside the div to be evenly distributed (缩小到容器宽度==一列) .
30 回答
Method 1:
Method 2:
CSS
Bootstrap提示,示例和工具:OnAirCode
使用Bootstrap v4,只需将
.justify-content-center
添加到.row
<div>
即可完成https://getbootstrap.com/docs/4.0/utilities/flex/#justify-content
如果你把它放在你的行上,里面的所有列都将居中:
centering columns 的首选方法是使用"offsets"(即:
col-md-offset-3
)Bootstrap 3.x centering examples
对于 centering elements ,有一个
center-block
helper class .您还可以使用
text-center
到 center text (和内联元素) .Demo :http://bootply.com/91632
EDIT - 如评论中所述,
center-block
适用于列内容和display:block
元素,但不适用于列本身(col-*
divs),因为Bootstrap使用float
.更新2018年
现在使用 Bootstrap 4 , centering 方法已更改..
text-center
仍用于display:inline
元素mx-auto
将center-block
替换为中心display:block
元素offset-*
或mx-auto
可用于居中网格列mx-auto
(自动x轴边距)将使具有已定义宽度的display:block
或display:flex
元素居中(%
,vw
,px
等...) . Flexbox is used by default 在网格列上,因此还有各种flexbox居中方法 .Demo Bootstrap 4 Horizontal Centering
For vertical centering in BS4 see https://stackoverflow.com/a/41464397/171456
Bootstrap版本3有一个.text-center类 .
只需添加此类:
它只会加载这种风格:
例:
我建议只使用类
text-center
:这不是我的代码,但它完美运行(在Bootstrap 3上测试),我不必乱用col-offset .
Demo:
试试这个
您可以使用其他
col
以及col-md-2
等 .这可能不是最好的答案,但还有一个更有创意的解决方案 . 正如koala_dev所指出的,列偏移仅适用于偶数列大小 . 但是,通过嵌套行,您也可以实现对齐不均匀的列 .
要坚持原始问题,你想在12格的网格中居中一列1 .
通过偏移5将列居中2
创建一个嵌套行,这样您就可以在2列中获得新的12列 .
由于您希望将列居中1,并且1是"half"的2(我们在步骤1中居中),您现在需要在嵌套行中居中6列,这可以通过偏移3来轻松完成 .
例如:
请参阅this fiddle,请注意您必须增加输出窗口的大小,以便查看结果,否则列将换行 .
您可以使用非常灵活的解决方案flexbox到您的Bootstrap .
可以使您的列居中 .
看看flex .
因为我从来不需要在
.row
中只有一个.col-
,所以我在目标列的包装.row
上设置了以下类 .例
我们可以通过使用表格布局机制来实现这一点:
机制是:
将所有列包装在一个div中 .
将该div设为具有固定布局的表 .
将每列作为表格单元格 .
使用vertical-align属性控制内容位置 .
示例演示在这里
要使我们需要使用以下代码 . cols是除了margin auto之外的浮动元素 . 我们也将它设置为float,
为了使上面的col-lg-1居中,我们将写:
要将内容置于div中心,请使用
text-align:center
,如果您只想将其居中放在桌面和大屏幕上,而不是移动设备上,请使用以下媒体查询 .
并且仅在移动版本上居中div,请使用以下代码 .
抵消的另一种方法是有两个空行,例如:
只需将此添加到您的自定义CSS文件中,不建议直接编辑Bootstrap CSS文件并取消使用cdn的能力 .
Why?
Bootstrap CSS(Ver 3.7及更低版本)使用: margin: 0 auto; ,但它被size容器的float属性覆盖 .
PS :添加此类后,不要忘记按正确的顺序设置类 .
您可以使用
text-center
作为行,并确保内部div具有display:inline-block
(不是float
)如:
和css:
小提琴:http://jsfiddle.net/DTcHh/3177/
只需将显示内容的一列设置为col-xs-12(mobile-first ;-)并仅配置容器以控制您希望居中内容的宽度,因此:
有关演示,请参阅http://codepen.io/Kebten/pen/gpRNMe :-)
我对中心列的方法是使用
display: inline-block
作为列,使用text-align: center
作为容器父级 .您只需将CSS类'centered'添加到
row
即可 .HTML:
CSS:
JSfiddle: http://jsfiddle.net/steyffi/ug4fzcjd/
试试这个代码 .
在这里我使用了col-lg-1,并且偏移应该是10,以便在大型设备上正确居中div,如果你需要它将媒体中心放到大型设备上然后只需将lg更改为md等等,让我知道如果有任何问题 .
请注意,如果您使用的是Bootstrap 4,则可以在
row
中使用.align-items-center
作为Boostrap 4现在使用flex系统 .在Bootstrap 3中将列
<div>
居中的方法有两种:方法1(抵消):
第一种方法使用Bootstrap自己的偏移类,因此它不需要更改标记,也不需要额外的CSS . 关键是 set an offset equal to half of the remaining size of the row . 因此,例如,大小为2的列将通过添加5的偏移量来居中,即
(12-2)/2
.在标记中,这看起来像:
现在,这个方法有一个明显的缺点, it only works for even column sizes ,所以只支持
.col-X-2
,.col-X-4
,col-X-6
,col-X-8
和col-X-10
.方法2(旧边距:自动)
您可以使用经过验证的
margin: 0 auto;
技术 center any column size ,您只需要处理Bootstrap网格系统添加的浮动 . 我建议定义一个自定义CSS类,如下所示:现在,您可以将其添加到任何屏幕大小的任何列大小,并且它将与Bootstrap的响应式布局无缝协作:
Note: 使用这两种技术,您可以跳过
.row
元素并使列在.container
内居中,但由于容器类中的填充,您会注意到实际列大小的最小差异 .Update:
从v3.0.1开始,Bootstrap有一个名为
center-block
的内置类,它使用margin: 0 auto
但缺少float:none
. 您可以将其添加到CSS以使其与网格系统一起使用 .别忘了添加
!important
. 然后你可以确定元素真的会在中心:对于那些希望将列元素置于屏幕中心的人,当你没有确切的数字来填充你的网格时,我写了一小段JavaScript来返回类名:
如果您有5个元素,并且希望在
md
屏幕上每行有3个元素,则执行以下操作:请记住,第二个参数必须可以被12分割 .
Bootstrap 3 现在有一个内置类
.center-block
如果您仍在使用2.X,则只需将其添加到CSS中即可 .
现在Bootstrap 3.1.1正在使用
.center-block
,这个帮助程序类可以与列系统一起使用 .Bootstrap 3 Helper Class Center .
请检查this jsfiddle DEMO:
使用
col-center-block
辅助类的行列中心 .这很有效 . 可能是一种hackish方式,但它很好用 . 测试了响应性(Y) .
更准确地说,Bootstrap的网格系统包含12列并且以任何内容为中心,例如,内容占用一列 . 需要占用两列Bootstrap的网格,并将内容放在两个占用列的一半上 .
'col-xs-offset-5'告诉网格系统从哪里开始放置内容 .
'col-xs-2'告诉网格系统内容占用的剩余列数 .
'居中'将是一个定义的类,将内容集中 .
以下是Bootstrap网格系统中此示例的外观 .
列:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
.......偏移....... . 数据 . .......不曾用过........
要在Bootstrap行中居中多个列 - 并且cols的数量是奇数,只需将此
css
类添加到该行中的所有列:所以在你的HTML中你有类似的东西:
正如koala_dev在他的方法1中使用的那样,我更喜欢偏移方法而不是中心块或边距,这些方法的用途有限,但他提到:
对于奇数列,可以使用以下方法解决这个问题 .