块元素和行内元素的居中方法有多少种?

163 阅读1分钟

块元素实现水平垂直居中

flex

QQ图片20220415171250.png

绝对定位+margin(需要知道固定宽高)

QQ图片20220415171022.png 绿色框内是绝对定位,那红色框的margin有什么含义呢?首先我们回顾一下绝对定位,移动基点为左上角,所以我们的第一步只是将item的左上角移到了父元素的中间,而他本身还未居中,他的中心点离他的左上角,相差了他本身宽高的一半,所以我们用margin移动过去。

绝对定位+transform

QQ图片20220415172255.png 使用transform: translate(-50%,-50%);可以解决不知道item宽高或者item宽高不固定的问题。

不使用css3和flex(需要知道固定宽高)

QQ图片20220415175529.png 我们使用绝对定位,每条边都使用相同的力气拉item,item就相当于被架在中间,这样也能实现居中效果。需要注意的是,div中添加图片的话,图片宽高要和div宽高保持一致。

行内元素实现水平垂直居中

text-align+line-height(只适用单行文本)

QQ图片20220415181216.png line-height=盒子的height能实现单行文字垂直居中,但是对多行文字失效,需要注意的是text-align+line-height是对父元素设置,不是对文本设置。

text-align+padding(不固定高度)

QQ图片20220415181602.png 该方法只适用于没有固定高度的文本,使用padding,让四周的边距变得一样,就自然居中了。

table

QQ图片20220415182227.png

父元素和子元素的table(固定高度)

QQ图片20220415182729.png 根据table方法的原理,我们对父元素使用(text-align: center;display: table;),对子元素使用(display: table-cell;vertical-align: middle;)也能实现多行文本居中效果。table中默认vertical-align: middle;。