水平居中
是否是 inline 或 inline-* 元素(比如文本或链接)?
在块级的父元素中添加
|
|
这对 inline,inline-block,inline-table,inline-flex都有效。
是否是块级元素?
你可以通过给块级元素设置 margin-left
和 margin-right
或者 auto
来居中它。
|
|
不管块级元素的宽度设置多少,我们都可以用这种方式来居中。
多个块级元素?
如果需要在一行内居中两个或者更多的块级元素,可以将他们转换显示类型。
- 将块级元素转换为
display: inline-block;
,然后给其父元素添加text-align: center;
- 给父级设置
display: flex; justify-content: center;
垂直居中
是否是 inline 或 inline-* 元素(比如文本或链接)?
单行?
单行居中的话,只需要设置相同的上下 padding
即可。
|
|
如果不想设置 padding
的话,那么还有一个办法,将 line-height
和 height
设置成一样的高度。
多行?
给多行内联元素设置相同的上下 padding
也是可以做到居中的。但是如果这样不起作用,那么文本所在的元素可能是表格的单元格,我们用 vertical-align: middle
解决。
|
|
|
|
|
|
觉得表格 out 了?那么试试 flex 吧
|
|
请记住,如果父容器具有固定高度(px,%等),那么它才真正起作用,这就是为什么这里的容器有一个高度。
如果这两种技术都没有了,那么可以使用“ghost element”技术,在该技术中,将全高伪元素放置在容器内,并且文本与该元素垂直对齐。
|
|
是否为块级元素?
知道块级元素的高度吗?
不知道网页布局的高度是相当普遍的,有以下几个原因:如果宽度改变,那么文本重排会改变高度。文字造型的差异可以改变高度,文字数量的变化可以改变高度。具有固定宽高比的元素(如图像)可在更改大小时更改高度,等等。
但是,如果你知道元素的高度的话,那么你可以用下面的方法来居中。
|
|
不确定的高度?
如果不知道块级元素的高度,那么可以这样做
|
|
用 flex 了吗?
|
|
|
|
水平垂直同时居中
您可以以任何方式将上述技巧结合起来,以获得完美居中的元素。但我发现这通常分为三个阵营:
元素是不是弹性的宽度和高度?
使用等于该宽度和高度的一半的负边距,在将其绝对定位在50%/ 50%后,将以极佳的跨浏览器支持为中心:
|
|
元素是不是不确定的宽度和高度?
如果您不知道宽度或高度,则可以使用transform属性和两个方向上的50%负向平移(它基于元素的当前宽度/高度)居中:
|
|
用 flex 了吗?
要使用flexbox在两个方向上居中,您需要使用两个居中属性:
|
|
用 grid 了吗?
|
|
本文结束,感谢阅读。
本文作者:melody0z
本文链接:https://melodyvoid.github.io/CSS/css-centered.html
欢迎转载,转载请注明文本链接