14种CSS实现水平或垂直居中的技巧

3、:before + inline-block


原理::before 伪类元素搭配 inline-block 属性的写法应该是很传统的垂直居中的技巧了,此方式的好处在于子元素居中可以不需要特别设定高度。

我们将利用:before伪类元素设定为100%高的inline-block,再搭配上将需要居中的子元素同样设置成inline-block性质后,就能使用vertical-align: middle来达到垂直居中的目的了。

此方式在以往其实是个非常棒的垂直居中解决方案,唯独需要特别处理掉inline-block元素之间的4-5px空间这个小缺陷,不用怕,设置父元素font-size: 0,子元素font-size: 15px即可。

CSS:

.example3 { margin-top: 10px; width: 400px; height: 150px; font-size: 0; border: 1px solid #dcdcdc;}.example3::before { content: ‘’; display: inline-block; height: 100%; width: 0; vertical-align: middle;}.example .con { width: 300px; font-size: 15px; background: #afddf3; display: inline-block; vertical-align: middle;}

4、table + margin


适用情景:单对象(水平居中)

原理:将子元素设置块级表格,再设置水平居中。

CSS:

.example4 { margin-top: 10px; width: 400px; height: 150px; font-size: 0; border: 1px solid #dcdcdc;}.example .con { display: table; margin: 0 auto; width: 300px; font-size: 15px; background: #afddf3;}

5、table + table-cell + vertical-align: middle


适用情景:多对象(垂直居中)

html:

超级好用超级放心 在线压缩图片 压缩完可以打包下载哦
CSS-TRICKS

css:

.example5 { display: table; margin-top: 10px; width: 400px; height: 150px; font-size: 0; border: 1px solid #dcdcdc;}.example .con { display: table-cell; vertical-align: middle; width: 300px; font-size: 15px; background: #afddf3;}

6、absolute + margin 负值


原理:设置绝对定位,top: 50%;后,再设置高度一半的负值实现。说来说去,这就是一道简单的数学题而已。

缺陷:需要设置居中元素的高度。

优势:无浏览器兼容性问题

css:

.example6 { position: relative; margin-top: 10px; width: 400px; height: 150px; font-size: 0; border: 1px solid #dcdcdc;}.example6 .con { position: absolute; top: 50%; height: 80px; margin-top: -40px; width: 300px; font-size: 15px; background: #afddf3;}

7、absolute + margin auto


原理:当元素设置为绝对定位后,假设它是抓不到整体可运用的空间范围,所以margin: auto会失效,但当你设置了top:0;bottom:0;时,绝对定位元素就抓到了可运用的空间了,这时你的margin:auto就生效了。

缺陷:定位元素必须有固定的宽高(百分比也算)。

css:

.example7 { position: relative; margin-top: 10px; width: 400px; height: 150px; font-size: 0; border: 1px solid #dcdcdc;}.example7 .con { position: absolute; top: 0; bottom: 0; left: 0; right: 0; margin: auto; height: 80px; width: 300px; font-size: 15px; background: #afddf3;}

8、absolute + translate


原理:利用绝对定位时的top 与right设置元素的上方跟左方各为50%,再利用transform: translate(-50%, -50%);位移居中元素自身宽与高的50%就能达成居中的目的了。

缺陷:translate是css3属性,低版本浏览器不支持。

显著优势:无需固定定位元素的宽高。

css:

.example8 { position: relative; margin-top: 10px; width: 400px; height: 150px; font-size: 0; border: 1px solid #dcdcdc;}.example8 .con { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); font-size: 15px; background: #afddf3;}

9、Flex + align-items


适用情景:多行文字(垂直居中)

原理:弹性布局,align-items定义flex子项在flex容器的当前行的侧轴(纵轴)方向上的对齐方式,参考CSS-TRICKS。

缺陷:css3属性,低版本浏览器不支持。

显著优势:无需固定定位元素的宽高,代码干净利索。

css:

.example9 {

display: flex;

align-items: center;

margin-top: 10px;

width: 400px;

height: 150px;

font-size: 0;

border: 1px solid #dcdcdc;

}

.example9 .con {

font-size: 15px;

background: #afddf3;

}

10、Flex + justify-content


适用情景:多行文字(水平居中)

原理:弹性布局,justify-content设置或检索弹性盒子元素在主轴(横轴)方向上的对齐方式,参考CSS-TRICKS。

缺陷:css3属性,低版本浏览器不支持。

显著优势:无需固定定位元素的宽高,代码干净利索。

css:

.example10 { display: flex; justify-content: center; margin-top: 10px; width: 400px; height: 150px; font-size: 0; border: 1px solid #dcdcdc;}.example .con { height: 80px; font-size: 15px; background: #afddf3;}

11、Flex + :before + flex-grow


适用情景:多行文字(垂直居中)

原理:弹性布局,Flex-direction:column;将项目垂直显示,正如一个列一样。flex-grow: [number];规定项目将相对于其他灵活的项目进行扩展的量,参考CSS-TRICKS。

缺陷:css3属性,低版本浏览器不支持,并且难度稍大,一般不会想到这种方法。

显著优势:无需固定定位元素的宽高

css:

.example11 { display: flex; flex-direction: column; margin-top: 10px; width: 400px; height: 150px; font-size: 0; border: 1px solid #dcdcdc;}.example11:before { content: ‘’; flex-grow: .5;}.example11 .con { font-size: 15px; background: #afddf3;}

12、Flex + margin


缺陷:css3属性,低版本浏览器不支持。

css:

.example12 { display: flex; margin-top: 10px; width: 400px; height: 150px; font-size: 0; border: 1px solid #dcdcdc;}.example12 .con { margin: auto; width: 300px; font-size: 15px; background: #afddf3;}

13、Flex + align-self

原理:align-self定义flex子项单独在侧轴(纵轴)方向上的对齐方式。

缺陷:css3属性,低版本浏览器不支持。

css:

.example13 { display: flex; justify-content: center; margin-top: 10px; width: 400px; height: 150px; font-size: 0; border: 1px solid #dcdcdc;}.example13 .con { align-self: center; width: 300px; font-size: 15px; background: #afddf3;}

14、Flex + align-content


原理:align-content在弹性容器内的各项没有占用交叉轴上所有可用的空间时对齐容器内的各项(垂直),弹性项目有多项此属性才会发挥作用。

缺陷:css3属性,低版本浏览器不支持。

css:

.example14 {

display: flex;

align-content: center;

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

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

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

img

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

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

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

最后:

总结来说,面试成功=基础知识+项目经验+表达技巧+运气。我们无法控制运气,但是我们可以在别的地方花更多时间,每个环节都提前做好准备。

面试一方面是为了找到工作,升职加薪,另一方面也是对于自我能力的考察。能够面试成功不仅仅是来自面试前的临时抱佛脚,更重要的是在平时学习和工作中不断积累和坚持,把每个知识点、每一次项目开发、每次遇到的难点知识,做好积累,实践和总结。

点击这里领取Web前端开发经典面试题

**

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

最后:

总结来说,面试成功=基础知识+项目经验+表达技巧+运气。我们无法控制运气,但是我们可以在别的地方花更多时间,每个环节都提前做好准备。

面试一方面是为了找到工作,升职加薪,另一方面也是对于自我能力的考察。能够面试成功不仅仅是来自面试前的临时抱佛脚,更重要的是在平时学习和工作中不断积累和坚持,把每个知识点、每一次项目开发、每次遇到的难点知识,做好积累,实践和总结。

点击这里领取Web前端开发经典面试题

  • 21
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值