居中大全

(参考原文https://css-tricks.com/centering-css-complete-guide/?utm_source=caibaojian.com

平时做居中,拿过来就做,全靠运气。知道很多种可以居中的办法,每次应用也是哪个可以实现就用哪个,今天有时间整理一下居中问题,不要再瞎猫碰死耗子了,遇到什么情况直接找到对应的方法。高效直接找到不同情境下的居中实现方法不是更好么。大概可以分为三中居中:水平居中、垂直居中、水平垂直同时居中

1.水平居中(基础初级)

行内元素:父元素中添加text-align: center;

单个块级元素:居中元素本身添加margin0 auto;

多个块级元素:父元素中添加display: flex;justify-content: center;

 

2.垂直居中(稍微有难度了)

一、行内

单行文本

1)父元素设置相同的上下padding

2居中元素本身height=line-height

多行文本

1)过时了的table

1)包裹在table tr td中,内容自动垂直居中(过时了吧,老土的方法)

2)模拟table样式,父元素添加display: table;子元素添加display: table-cell;vertical-align: middle;

2父元素有高度:

父元素上设置display: flex;flex-direction: column;justify-content: center;

3)父元素没高度:

父元素上设置positionabsolute;父元素::before设置content: " "; display: inline-block; height: 100%; width: 1%; vertical-align: middle;子元素上设置display:inline-block;vertical-align:middle;

二、块级 

居中元素高度固定

父元素上设置positionrelative;子元素:position: absolute; top: 50%; height: 100px; margin-top: -50px; /*padding时,padding要另算,即(height+2*padding)/2*/

 ②居中元素高度不固定

父元素上设置positionrelative;子元素:position: absolute; top: 50%;transform: translateY(-50%);(上周用这个做了个弹框,改成position:fixed就可以了)

③可以使用flexbox一切就变得简单多了

父元素上设置display: flex; flex-direction: column; justify-content: center;

3.水平垂直同时居中(重头戏、终极boss

居中元素高度宽度都固定

父元素设置:position: relative;

子元素设置:width: 300px; height: 100px; padding: 20px; position: absolute; top: 50%; left: 50%; margin: -70px 0 0 -170px;

②居中元素高度宽度不固定

父元素设置:position: relative;

子元素设置:position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);}

③可以使用flexbox

父元素上设置display: flex; justify-content: center; align-items: center;

 小结:没有什么是不可以居中的

猜你喜欢

转载自blog.csdn.net/aerbaba/article/details/78432760