CSS 垂直居中的正确打开方式

2132f7ea71e64dfb8f2b9c5bd91b61c6.png

居中元素宽高已知


1. absolute + margin auto

顾名思义,就是利用当前元素的 position: absolute;margin: auto;

注意使用此方法:父元素与当前元素的高度要设置;

通过将各个方向的距离都设置为 0,此时将 margin 设置为 auto,就可以实现垂直居中显示了;

具体代码如下:

.parent{

position: relative;

width: 90vw;

height: 90vh;

border: 3px solid steelblue;

}

.child{

background: tomato;

width: 50vw; height: 50vh;

/* 核心代码 */

position:absolute;

top: 0; bottom: 0; left: 0; right: 0;

margin: auto;

}

具体效果如下:

2ba9f668d0a8ca8782109e2b5c0d5e1e.png

2. absolute + 负 margin

利用绝对定位百分比 50% 来实现,因为当前元素的百分比是基于相对定位(也就是父元素)来定位的;

然后再用负的 margin-top 和 margin-left 来进行简单的位移即可,因为现在的负 margin 是基于自身的高度和宽度来进行位移的。

具体代码如下:

.parent{

position:relative;

width: 90vw;

height: 90vh;

border: 3px solid steelblue;

}

.child{

background: tomato;

width: 100px; height: 100px;

/* 核心代码 */

position:absolute;

top: 50%; left: 50%;

margin-top: -50px;

margin-left: -50px;

}

具体效果如下:

0c41470da781535c5433d86bb18b3324.png

3. absolute + calc

使用 CSS3 的一个计算函数来进行计算即可;方法与上面类似

具体代码如下:

.parent{

width: 90vw;

height: 90vh;

border: 3px solid steelblue;

/* 核心代码 */

position:relative;

}

.child{

background: tomato;

width: 200px; height: 200px;

/* 核心代码 */

position:absolute;

top: calc(50% - 100px);

left: calc(50% - 100px);

}

具体效果如下:

725f93ae23b1ecd09752dbc3b6a20906.png

居中元素宽高未知


4. absolute + transform

利用 CSS3 的新特性 transform;因为 transformtranslate 属性值如果是一个百分比,那么这个百分比将是基于自身的宽高计算出来的。

具体代码如下:

.parent{

width: 90vw;

height: 90vh;

border: 3px solid steelblue;

/* 核心代码 */

position:relative;

}

.child{

background: tomato;

/* 核心代码 */

position:absolute;

top: 50%;

left: 50%;

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

}

具体效果如下:

16eac9151e0bd5f27916e57274684fe1.png

5. line-height + vertical-align

把当前元素设置为行内元素,然后通过设置父元素的text-align: center; 实现水平居中;

同时通过设置当前元素的 vertical-align: middle; 来实现垂直居中;

最后设置当前元素的 line-height: initial; 来继承父元素的line-height

具体代码如下:

.parent{

width: 90vw;

border: 3px solid steelblue;

/* 核心代码 */

line-height: 500px;

text-align: center;

}

.child{

background: tomato;

/* 核心代码 */

display: inline-block;

vertical-align: middle;

line-height: initial;

}

具体效果如下:

f79a13bc6972aa48e0c506273551fc48.png

6. table 表格元素

通过最经典的 table 元素来进行水平垂直居中,不过代码看起来会很冗余,不推荐使用;

具体代码如下:
具体效果如下:

b9a628cf56fe135fceba257b8f2ee9e5.png

7. css-table 表格样式

如果一定要使用 table 的特性,但是不想写 table 元素的话,那么css-table 就很适合你;

具体代码如下:

.parent{

width: 90vw;

height: 90vh;

border: 3px solid steelblue;

/* 核心代码 */

display: table-cell;

text-align: center;

vertical-align: middle;

}

.child{

background: tomato;

/* 核心代码 */

display: inline-block;

}

具体效果如下:

02c14e32976eac6004f6d34d195ac032.png

8. flex 布局(一)

要说现在较为流行和使用较多的布局方案,那么非 flex 莫属了,那么举例两个最常见的使用方式 ~

直接在 flex-container 上通过几行代码即可很优雅的实现

具体代码如下:

.parent {

width: 90vw;

height: 90vh;

border: 3px solid steelblue;

/* 核心代码 */

display: flex;

justify-content: center;

align-items: center;

}

.child{

background: tomato;

}

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

align-items 表示:定义 flex 子项在 flex 容器的当前行的侧轴(纵轴)方向上的对齐方式。

具体效果如下:

dfa2418cda0db65c1f6f7d2355316f0a.png

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后

文章到这里就结束了,如果觉得对你有帮助可以点个赞哦,如果有需要前端校招面试题PDF完整版的朋友可以点击这里即可获取,包括答案解析。

转存中…(img-RjlsuFeB-1712869449107)]

[外链图片转存中…(img-hc9WZQXl-1712869449107)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

[外链图片转存中…(img-S0gvHlT0-1712869449107)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后

文章到这里就结束了,如果觉得对你有帮助可以点个赞哦,如果有需要前端校招面试题PDF完整版的朋友可以点击这里即可获取,包括答案解析。

[外链图片转存中…(img-3LzqhvJ0-1712869449108)]

  • 26
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值