admin 管理员组

文章数量: 1087139


2024年3月11日发(作者:idea是什么意思中文意思)

元素居中的几种方法

一、水平居中

1.行内元素水平居中

利用 text-align: center 可以实现在块级元素内部的行内元素水平居中。此方

法对inline、inline-block、inline-table和inline-flex元素水平居中都有效。

此外,如果块级元素内部包着也是一个块级元素,我们可以先将其由块级元

素改变为行内块元素,再通过设置行内块元素居中以达到水平居中。

2.块级元素的水平居中

①将该块级元素左右外边距margin-left和margin-right设置为auto。

②使用table+margin

先将子元素设置为块级表格来显示(类似),再将其设置水平居中。

display:table在表现上类似block元素,但是宽度为内容宽。

③使用absolute+transform

先将父元素设置为相对定位,再将子元素设置为绝对定位,向右移动子元素,

移动距离为父容器的一半,最后通过向左移动子元素的一半宽度以达到水平居中。

不过transform属于css3内容,兼容性存在一定问题,高版本浏览器需要添

加一些前缀。

④使用flex+justify-content

通过CSS3中的布局利器flex中的justify-content属性来达到水平居中。

⑤使用flex+margin

通过flex将父容器设置为为Flex布局,再设置子元素居中。

3.多块级元素水平居中

①利用flex布局

利用弹性布局(flex),实现水平居中,其中justify-content 用于设置弹性盒子

元素在主轴(默认横轴)方向上的对齐方式,本例中设置子元素水平居中显示。

②利用inline-block

将要水平排列的块状元素设为display:inline-block,然后在父级元素上设置

text-align:center,达到与上面的行内元素的水平居中一样的效果。

4.浮动元素水平居中

对于定宽的浮动元素,通过子元素设置relative + 负margin

对于不定宽的浮动元素,父子容器都用相对定位

通用方法(不管是定宽还是不定宽):flex布局

二、垂直居中

1.多行内联元素垂直居中

①利用flex布局(flex)

利用flex布局实现垂直居中,其中flex-direction: column定义主轴方向为纵

向。这种方式在较老的浏览器存在兼容性问题。

②利用表布局(table)

利用表布局的vertical-align: middle可以实现子元素的垂直居中。

2.块级元素垂直居中

①使用absolute+负margin(已知高度宽度)

通过绝对定位元素距离顶部50%,并设置margin-top向上偏移元素高度的一

半,就可以实现了。

②使用absolute+transform

当垂直居中的元素的高度和宽度未知时,可以借助CSS3中的transform属性

向Y轴反向偏移50%的方法实现垂直居中。但是部分浏览器存在兼容性的问题。

③使用flex+align-items

通过设置flex布局中的属性align-items,使子元素垂直居中。

④使用table-cell+vertical-align

通过将父元素转化为一个表格单元格显示(类似 和 ),再通过

设置 vertical-align属性,使表格单元格内容垂直居中。

三、水平垂直居中

1、绝对定位+CSS3(未知元素的高宽)

利用Css3的transform,可以轻松的在未知元素的高宽的情况下实现元素的

垂直居中。

CSS3的transform固然好用,但在项目的实际运用中必须考虑兼容问题,大

量的hack代码可能会导致得不偿失。

2、flex布局

利用flex布局,其中justify-content 用于设置或检索弹性盒子元素在主轴(横

轴)方向上的对齐方式;而align-items属性定义flex子项在flex容器的当前行的

侧轴(纵轴)方向上的对齐方式。不能兼容低版本的IE浏览器。

3、flex/grid与margin:auto(最简单写法)

容器元素设为 flex 布局或是grid布局,子元素只要写 margin: auto 即可,

不能兼容低版本的IE浏览器。


本文标签: 元素 居中 水平 设置 垂直