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

Posted

技术标签:

【中文标题】如何居中显示:块/内联块【英文标题】:How to center things - display:block/inline-block 【发布时间】:2013-05-10 07:00:51 【问题描述】:

当以 html 和 css 为中心时,我发现了两种方法 - 要么应用于元素:

display:block;
margin:0 auto;

或使用:

display:inline-block;
text-align:center; (on the parent element)

我总是想知道哪个更好,为什么。谢谢!!

【问题讨论】:

【参考方案1】:

这是一个经典而重要的问题。

元素可以是内联的(意味着它们都彼此相邻 - 就像一个 span 标签),也可以是块状的(意味着堆叠在一起 - 就像一个 div 标签)。

Margin: auto,虽然第一次看到它时有点奇怪,但它是使块级别(位置静态)元素居中的最佳且唯一的方法。

对于显示的任何内容:内联(如跨度标记)- only 居中的方式是如果您指定 text-align: center 在父级上。这将使所有显示居中:inline inside,即 position: static;

Display: inline-block 是两者的混合体,相对是新的(但如果您使用另一个答案中提到的 hack,则支持早至 ie7)。使用内联块,您可以获得内联的好处,因为您可以将一堆东西彼此相邻并让它们都居中(想想所有导航项目都居中的导航),但也有每个item 充分利用了你通过 display: block 获得的一些东西 - 最重要的是 HEIGHT。

想象一个场景,其中每个导航项都有一个 80 像素高的背景图片 - 你不能让内联元素的高度为 80 - 所以你必须让每个元素 display: block - 只有这样你才能给它一个高度。因此,要使它们都彼此相邻,您需要浮动它们。问题是如果你浮动它们,你不能让它们都在页面上居中,除非你给导航和边距一个固定的宽度:auto THAT。这意味着导航具有固定宽度 - 可能没问题,但有时导航必须具有动态元素、不同语言的不同宽度等。

输入显示:inline-block。

【讨论】:

将此标记为答案显示:inline-block.!【参考方案2】:

块元素应始终使用

居中
.block 
    margin-left: auto;
    margin-right: auto;
    width: 600px;

如 w3c 所述:http://www.w3.org/Style/Examples/007/center.en.html#block

text-align: center;

名字很好:用它来居中文本。

更新

您现在也可以使用display: flex

.parent 
    display: flex;
    justify-content: center;

.block 
    width: 200px;

【讨论】:

text-align 的名字不是;应该是inline-align【参考方案3】:

在这种情况下,没有更好的方法,这两种方法都可以工作并且都得到了纠正。只有一件事显示:inline-block 在 IE7 上不起作用(如果你支持这个浏览器)你需要一个 hack 才能让它工作

display: inline-block;
*display: inline;
zoom: 1;

【讨论】:

以上是关于如何居中显示:块/内联块的主要内容,如果未能解决你的问题,请参考以下文章

内联块中的垂直居中文本

如何垂直对齐一行文本中的内联块?

居中内联块保持文本左对齐

在 CSS 中以动态宽度居中内联块

CSS 固定大小/居中站点的基本CSS结构(使用内联块)

总结一下各种居中(内联元素块级元素浮动元素绝对定位元素)*(水平垂直)