如何使用 CSS 使多个内联块元素居中?

Posted

技术标签:

【中文标题】如何使用 CSS 使多个内联块元素居中?【英文标题】:How to center multiple inline-block elements with CSS? 【发布时间】:2012-02-03 15:22:23 【问题描述】:

我想在容器块元素内水平居中两个(或可能更多)内联块元素。它应该是这样的:

--------------------------
|      _____   _____      |
|     |     | |     |     |
|     | foo | | bar |     |
|     |_____| |_____|     |
|_________________________|

但是,由于我的代码损坏,它目前看起来像这样:

--------------------------
| _____   ____            |
||     | |     |          |
|| foo | | bar |          |
||_____| |_____|          |
|_________________________|

HTML

<div>
 <a>foo</a>
 <a>bar</a>
</div>

CSS

div a 
 display: inline-block;
 padding: 1em;
 margin: 1em;
 border: 1px solid black;

两个锚点必须是 inline-block 而不仅仅是普通的 inline 的原因是因为我不希望锚点的 padding 和 margin 重叠。

【问题讨论】:

【参考方案1】:

只需在 div 容器上设置text-align: center;

【讨论】:

这很简单。我一直忘记text-align 也适用于非文本元素。 需要注意的是,如果您之前使用过float: left;,您必须确保删除该行并改用display: inline-block; 如果foobar 元素的宽度不同,这将不起作用。很遗憾。此外,当添加 margein-leftmargin-right 值以在两个元素之间添加空格时,事情对我来说变得很奇怪。【参考方案2】:

在父元素上设置text-align: center;

【讨论】:

【参考方案3】:

您是否尝试过以下方法?

div
   text-align:center;

【讨论】:

【参考方案4】:

你可以试试这些

div
   text-align:center;

或者如下图自动设置边距

div a
  margin:auto;
  margin-left:1em;
  margin-right:1em;
  margin-top:1em;
  margin-bottom:1em;
 display:inline-block;

展示了一个很好的例子here

【讨论】:

您的第二个示例不起作用(至少在 Safari 11 上)【参考方案5】:

只是为了清楚......

<div style="display: inline-block; text-align: center"> 
  ....
</div>

不适用于不同宽度的元素,但是

<div style="text-align: center;">
<div style="display: inline-block;">
 ....
</div>
</div>

【讨论】:

【参考方案6】:

我在父容器中使用了text-align: "center",它使 UL 在页面上居中,但它也使 UL 中的文本居中(不需要)。所以我在&lt;ul&gt; 中添加了text-align: "left",这样文本就在list-style 旁边。

【讨论】:

【参考方案7】:

你也可以这样做

.div 
    display: inline-block center;
    text-align: center;

使内联块水平居中!

【讨论】:

以上是关于如何使用 CSS 使多个内联块元素居中?的主要内容,如果未能解决你的问题,请参考以下文章

用CSS如何实现单行图片与文字垂直居中

【css】居中方案

如何居中显示:块/内联块

CSS-居中方法汇总

span内图片元素如何垂直居中

CSS之元素水平居中