视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
利用纯CSS实现居中的方法总结
2020-11-27 18:50:06 责编:小采
文档

这篇文章主要给大家介绍了关于利用纯CSS实现居中的七大方法,其中包括line-height居中法、table-cell居中法、上下左右定位+margin居中法、50%定位+margin居中法、50%定位+translate居中法、Flexbox居中法以及Flexbox+margin居中法,需要的朋友可以参考学习。

前言

记得有次找工作面试的时候,一面试官问了一个CSS方面的问题:如何让元素在浏览器窗口中上下左右居中。我记得当时给了个答案是,先用JS获取浏览器窗口高度,然后给body设置line-height为窗口高度并设置text-align:center, 接着再设置该元素display:inline-block和vertical-align:middle。唉,现在想想自己都觉得累。

难道就一定要用到JS吗?就不能有一种只用CSS方法就能实现元素居中的方法吗?答案是,有!而且方法远不止一种!

一、line-height居中法

父元素:text-align: center; line-height:600px; font-size: 0;

子元素:display: inline-block; vertical-align: middle;

注:600px必须为父元素的高度,这里还需注意的一点是font-size需设为零,若未写该属性将导致元素并不能精确垂直居中。该方法即为我面试时所答的方法,缺点很明显,父元素高度须确定。(兼容IE8+)

二、table-cell居中法

父元素:display: table-cell; text-align: center; vertical-align: middle;

子元素:display: inline-block;

注:兼容IE8+

三、上下左右定位+margin居中法

父元素:position: relative;

子元素:position: absolute; left: 0; right: 0; top: 0; bottom: 0; margin: auto;

注:兼容IE8+

四、50%定位+margin居中法

父元素:position: relative;

子元素:position: absolute; left: 50%; top: 50%; margin: -200px 0 0 -200px;

注:200px须为该子元素的宽高的一半。例如该子元素宽为100px,高为50px,那么margin取值为-25px 0 0 -50px。该方法缺点是须确定子元素宽高。(兼容IE8+)

五、50%定位+translate居中法

父元素:position: relative;

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

注:该方法使用了CSS3 transform属性,适合用于移动端。(兼容IE9+)

六、Flexbox居中法

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

注:该方法使用了Flexbox弹性布局,移动端兼容性也存在很大问题。(兼容IE10+)

七、Flexbox+margin居中法

父元素:display: flex;

子元素:margin: auto;

注:同上,兼容IE10+

下载本文
显示全文
专题