Center a column using Twitter Bootstrap 3
如何在Twitter引导程序3的容器(12列)中居中一个列大小的分区?
1 2 3 | .centered { background-color: red; } |
1 2 3 4 5 | <body class="container"> <img data-src="holder.js/100x100" alt="" /> </body> |
我想要一个
我也不确定上述方法是否足够好,因为其目的是不将
引导程序3中有两种方法可以使列
第一种方法使用引导程序自己的偏移量类,因此它不需要更改标记,也不需要额外的CSS。关键是将偏移量设置为行剩余大小的一半。例如,大小为2的列将通过添加偏移量5居中,即
在标记中,这看起来像:
1 |
现在,这个方法有一个明显的缺点。它只适用于偶数列大小,因此只支持
您可以使用成熟的
1 2 3 4 | .col-centered{ float: none; margin: 0 auto; } |
现在,您可以将它添加到任何屏幕大小的列中,它将与引导程序的响应布局无缝配合:
1 |
注意:使用这两种技术,您可以跳过
更新:
因为v3.0.1引导程序有一个名为
对中柱的首选方法是使用"偏移"(即:
引导3.x居中示例
对于中心元素,有一个
您还可以使用
演示:http://bootply.com/91632
编辑-正如评论中所提到的,
现在对于引导4,对中方法已经改变了。
text-center 仍用于display:inline 元素。mx-auto 代替center-block 使display:block 元素居中。offset-* 或mx-auto 可用于网格列的中心。
演示引导4水平居中
有关BS4中的垂直居中,请参阅https://stackoverflow.com/a/41464397/171456
现在bootstrap 3.1.1与
引导程序3帮助程序类中心。
请检查此jfiddle演示:
1 2 3 4 5 6 7 8 9 10 11 12 13 | row center-block 1 center-block 2 center-block row col-xs-2 col-center-block |
行列中心使用
1 2 3 4 5 6 | .col-center-block { float: none; display: block; margin: 0 auto; /* margin-left: auto; margin-right: auto; */ } |
只需将以下内容添加到自定义CSS文件中即可。不建议直接编辑引导CSS文件,并取消使用cdn的功能。
1 2 3 | .center-block { float: none !important } |
为什么?
引导CSS(3.7及更低版本)使用了Margin:0 Auto;,但它会被大小容器的float属性覆盖。
PS:
添加这个类之后,不要忘记按正确的顺序设置类。
1 | Example |
bootstrap 3现在有了这个
1 2 3 4 5 | .center-block { display: block; margin-left: auto; margin-right: auto; } |
如果您仍然使用2.x,那么只需将其添加到您的CSS中。
我对中心列的方法是对列使用
您只需将css类"centered"添加到
1 2 3 4 5 6 7 | Col 1 Col 2 Col 3 |
CSS:
1 2 3 4 5 6 7 8 9 10 | .centered { text-align: center; font-size: 0; } .centered > div { float: none; display: inline-block; text-align: left; font-size: 13px; } |
jfiddle:http://jsfiddle.net/steyffi/ug4fzcjd/
引导程序版本3具有.text center类。
只需添加此类:
1 | text-center |
它只加载这种样式:
1 2 3 | .text-center { text-align: center; } |
例子:
1 | Bootstrap 4 is coming.... |
使用bootstrap v4,只需将
1 | centered 1 column |
https://getbootstrap.com/docs/4.0/utilities/flex/调整内容
这是可行的。可能是一种黑客的方式,但它很好地工作。测试其反应性(y)。
1 2 3 4 | .centered { background-color: teal; text-align: center; } |
1 | <img src="some.jpg"> |
您可以使用
AS:
1 2 3 | A red block A white block A yellow block |
和CSS:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | .redBlock { width: 100px; height: 100px; background-color: aqua; display: inline-block } .whiteBlock { width: 100px; height: 100px; background-color: white; display: inline-block } .yellowBlock { width: 100px; height: 100px; background-color: yellow; display: inline-block } |
小提琴:http://jsfiddle.net/dtchh/3177/
只需将显示内容的一列设置为col-xs-12(mobile first;-)并将容器配置为仅控制希望中心内容的宽度,因此:
1 2 3 4 5 6 | .container { background-color: blue; } .centered { background-color: red; } |
1 2 3 4 5 | <body class="container col-xs-offset-3 col-xs-6"> <img data-src="holder.js/100x100" alt="" /> </body> |
1 2 3 4 5 | <body class="container col-xs-offset-1 col-xs-10"> <img data-src="holder.js/100x100" alt="" /> </body> |
有关演示,请参阅http://codepen.io/kebten/pen/gprnme:-)
要使列居中,我们需要使用下面的代码。列是浮动元素除了边缘自动。我们也会把它设为不浮动,
1 2 3 4 5 | <body class="container"> <img data-src="holder.js/100x100" alt="" /> </body> |
为使上述col-lg-1居中,并将类居中,我们将写下:
1 2 3 4 5 | .centered { float: none; margin-left: auto; margin-right: auto; } |
要使内容在DIV内居中,请使用
1 2 3 | .centered { text-align: center; } |
如果您只想将其放在桌面和大屏幕上,而不是移动设备上,请使用以下媒体查询。
1 2 3 4 5 6 7 | @media (min-width: 768px) { .centered { float: none; margin-left: auto; margin-right: auto; } } |
要使DIV仅在移动版上居中,请使用下面的代码。
1 2 3 4 5 6 7 | @media (max-width: 768px) { .centered { float: none; margin-left: auto; margin-right: auto; } } |
另一种补偿方法是有两个空行,例如:
1 | Centered Content |
这可能不是最好的答案,但还有一个更具创造性的解决方案。正如Koala_Dev指出的那样,列偏移仅适用于偶数列大小。但是,通过嵌套行,也可以使不均匀列居中。
要坚持原来的问题,您要在12网格内将1列居中。
例如:
1 | centered column with that has an"original width" of 1 col |
请注意,您必须增加输出窗口的大小才能看到结果,否则列将自动换行。
我们可以通过使用表布局机制来实现这一点:
其机制是:
示例演示在这里
这不是我的代码,但它工作得很好(在引导程序3上测试),而且我不必乱弄col offset。
演示:
1 2 3 4 5 6 7 8 9 10 | /* centered columns styles */ .col-centered { display: inline-block; float: none; /* inline-block space fix */ margin-right: -4px; background-color: #ccc; border: 1px solid #ddd; } |
1 2 3 4 5 | Column 6 Column 6 Column 3 Column 3 Column 3 |
正如Koala_Dev在他的方法1中使用的那样,我更喜欢使用偏移方法,而不是使用有限的中心块或页边距,但正如他所提到的:
Now, there's an obvious drawback for this method, it only works for even column sizes, so only .col-X-2, .col-X-4, col-X-6, col-X-8 and col-X-10 are supported.
对于奇数列,可以使用以下方法来解决这一问题。
1 | // Your content here |
您可以在引导程序中使用非常灵活的解决方案flexbox。
1 | justify-content: center; |
可以将列居中。
检查弯曲。
对于那些希望在没有确切数字填充网格时将列元素居中显示在屏幕上的人,我编写了一小段javascript来返回类名:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | function colCalculator(totalNumberOfElements, elementsPerRow, screenSize) { var arrayFill = function (size, content) { return Array.apply(null, Array(size)).map(String.prototype.valueOf, content); }; var elementSize = parseInt(12 / elementsPerRow, 10); var normalClassName = 'col-' + screenSize + '-' + elementSize; var numberOfFittingElements = parseInt(totalNumberOfElements / elementsPerRow, 10) * elementsPerRow; var numberOfRemainingElements = totalNumberOfElements - numberOfFittingElements; var ret = arrayFill(numberOfFittingElements, normalClassName); var remainingSize = 12 - numberOfRemainingElements * elementSize; var remainingLeftSize = parseInt(remainingSize / 2, 10); return ret.concat(arrayFill(numberOfRemainingElements, normalClassName + ' col-' + screenSize + '-push-' + remainingLeftSize)); } |
如果您有5个元素,并且希望在
1 2 | colCalculator(5, 3, 'md') >> ["col-md-4","col-md-4","col-md-4","col-md-4 col-md-push-2","col-md-4 col-md-push-2"] |
记住,第二个参数必须能被12除尽。
因为我从来没有必要将单个
1 2 3 4 5 | .col-center > [class*="col-"] { float: none; margin-left: auto; margin-right: auto; } |
例子
1 2 3 4 | Foo Bar |
试试这个代码。
1 2 3 4 5 | <body class="container"> <img data-src="holder.js/100x100" alt="" /> </body> |
这里我使用了col-lg-1,偏移量应该是10,以便在大型设备上对中DIV。如果你需要它集中在中型到大型设备上,那么只需将lg改为md,依此类推。
要使引导行中的多个列居中-并且列的数目是奇数,只需将此
1 2 3 4 | .many-cols-centered { // To horizontally center bootstrap odd cols, eg col-lg-9, col-md-3, works well in lg display:inline-block; float:none; } |
因此,在HTML中,您有如下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <!-- text-center centers all text in that row --> <img src='assets/image1.jpg'> You See <p> I love coding. </p> <img src='assets/image2.jpg'> You See <p> I love coding. </p> <img src='assets/image3.jpg'> You See <p> I love coding. </p> |
如果将此项放在行上,则其中的所有列都将居中:
1 2 3 4 | .row-centered { display: flex; justify-content: space-between; } |
试试这个
1 |
您可以使用其他
方法1:
1 | YOUR CONTENT |
方法2:
CSS
1 2 3 4 5 6 | .float-center{float: none;} YOUR CONTENT |
引导程序提示、示例和工具:OnArcode
更精确地说,bootstrap的网格系统包含12列,为了使任何内容居中,例如,内容占用一列。其中一个需要占用引导程序网格的两列,并将内容放在两个被占用列的一半上。
1 | ... your content / data will come here ... |
"col-xs-offset-5"告诉网格系统从哪里开始放置内容。
"col-xs-2"告诉网格系统内容应该占用多少剩余的列。
"centered"将是一个将内容居中的定义类。
下面是这个例子在引导程序的网格系统中的样子。
柱:
1 2 3 4 5 6 7 8 9 10 11 12
……偏移量…….数据。……未使用……
我建议只使用
1 2 3 4 5 | <body class="container"> <img data-src="holder.js/100x100" alt="" /> </body> |
在.row或.col中附加以下代码段。这是用于引导4*的。
1 | d-flex justify-content-center |
使用bootstrap 4在DIV类中使用
1 | You content here |
引导4解决方案:
1 | Column in the middle, variable width |
别忘了加上
1 2 3 4 | .col-centered{ float: none !important; margin: 0 auto !important; } |
注意:如果您使用的是bootstrap 4,那么可以在您的