2024 CSS 水平垂直居中方式汇总,全到没朋友(锤爆面试官系列),成功从小公司跳槽

44 阅读5分钟

前端资料汇总

我一直觉得技术面试不是考试,考前背背题,发给你一张考卷,答完交卷等通知。

首先,技术面试是一个 认识自己 的过程,知道自己和外面世界的差距。

更重要的是,技术面试是一个双向了解的过程,要让对方发现你的闪光点,同时也要 试图去找到对方的闪光点,因为他以后可能就是你的同事或者领导,所以,面试官问你有什么问题的时候,不要说没有了,要去试图了解他的工作内容、了解这个团队的氛围。 找工作无非就是看三点:和什么人、做什么事、给多少钱,要给这三者在自己的心里划分一个比例。 最后,祝愿大家在这并不友好的环境下都能找到自己心仪的归宿。

开源分享:docs.qq.com/doc/DSmRnRG…

5、flex 布局(推荐)

6、flex + margin auto

7、grid 网格布局(一)

8、grid 网格布局(二)

场景推荐


前言

--

无论是实际开发中,还是求职面试中,css 垂直居中往往都是一个绕不开的话题,其中有许多面试者在遭受多次打击之后,却没有一个很好的反击点,刚好结合自己的经历与痛处,来给大家一个锤爆面试官大佬们的机会。

垂直居中主要分为了两种类型:居中元素宽高已知居中元素宽高未知,那么我们就结合这两种类型来一一举例。

居中元素宽高已知


1、absolute + margin auto

注意:父元素与当前元素的宽高已知

.parent{

position: relative;

width: 500px;

height: 500px;

border: 1px solid blue;

}

.child{

background: green;

width: 200px;

height: 200px;

/* 核心代码 */

position:absolute;

top: 0;

bottom: 0;

left: 0;

right: 0;

margin: auto;

}

2、absolute + 负 margin

注意:负 margin 是基于自身的高度和宽度来进行位移的(设置为自身的 -1/2)

.parent{

position:relative;

width: 500px;

height: 500px;

border: 1px solid blue;

}

.child{

background: green;

width: 200px;

height: 200px;

/* 核心代码 */

position:absolute;

top: 50%;

left: 50%;

margin-top: -100px;

margin-left: -100px;

}

3、absolute + calc

注意:使用 CSS3 的一个计算函数来进行计算(相当于负 margin 的简化版)

.parent{

position:relative;

width: 500px;

height: 500px;

border: 1px solid blue;

}

.child{

background: green;

width: 200px;

height: 200px;

/* 核心代码 */

position:absolute;

top: calc(50% - 100px);

left: calc(50% - 100px);

}

居中元素宽高未知


1、absolute + transform

注意:transform 的 translate 属性值如果是一个百分比,那么这个百分比是基于自身的宽高进行计算

.parent{

position: relative;

width: 500px;

height: 500px;

border: 1px solid blue;

}

.child{

background: green;

/* 核心代码 */

position: absolute;

top: 50%;

left: 50%;

transform: translate(-50%, -50%);

}

2、line-height + vertical-align

把当前元素设置为行内元素,然后通过设置父元素的 text-align: center来实现水平居中;同时通过设置当前元素的 vertical-align: middle来实现垂直居中;最后设置当前元素的 line-height: initial来继承父元素的line-height

.parent{

width: 500px;

border: 1px solid blue;

/* 核心代码 */

line-height: 500px;

text-align: center;

}

.child{

background: green;

/* 核心代码 */

display: inline-block;

vertical-align: middle;

line-height: initial;

}

3、table 表格元素(不推荐)

通过经典的table来进行布局(不推荐)

.parent{ width: 500px; height: 500px; border: 1px solid blue; /* 核心代码 */ text-align: center; } .child{ background: green; /* 核心代码 */ display: inline-block; }

4、css-table(display:table-cell)

不写 table 元素,也可以使用 table 的特性,需使用 css-table(display:table-cell)

.parent{

width: 500px;

height: 500px;

border: 1px solid blue;

/* 核心代码 */

display: table-cell;

text-align: center;

vertical-align: middle;

}

.child{

background: green;

/* 核心代码 */

display: inline-block;

}

5、flex 布局(推荐)

.parent{

width: 500px;

height: 500px;

border: 1px solid blue;

/* 核心代码 */

display: flex;

/* 水平居中 */

justify-content: center;

/* 垂直居中 */

align-items: center;

}

.child{

background: green;

}

justify-content:设置或检索弹性盒子元素在主轴(横轴)方向上的对齐方式;

align-items:设置或检索弹性盒子元素在侧轴(纵轴)方向上的对齐方式。

前端资料汇总

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

我一直觉得技术面试不是考试,考前背背题,发给你一张考卷,答完交卷等通知。

首先,技术面试是一个 认识自己 的过程,知道自己和外面世界的差距。

更重要的是,技术面试是一个双向了解的过程,要让对方发现你的闪光点,同时也要 试图去找到对方的闪光点,因为他以后可能就是你的同事或者领导,所以,面试官问你有什么问题的时候,不要说没有了,要去试图了解他的工作内容、了解这个团队的氛围。 找工作无非就是看三点:和什么人、做什么事、给多少钱,要给这三者在自己的心里划分一个比例。 最后,祝愿大家在这并不友好的环境下都能找到自己心仪的归宿。