饥人谷技术博客

CSS居中小结

2017-03-22  本文已影响0人  字母31

CSS中在不同场景下,解决居中的方式有很多,经常让人无从下手,所有我们将CSS居中进行一次小结,方便以后我们布局使用。

水平居中

1、 inline或者是inline-*元素

对于这类元素只需要在其块级父元素中规定text-align:center

.parent{text-align:center;}

2、一个块级元素

假如一个块级元素被指定width后,我们可以通过指定margin-left以及margin-right来使其居中(假如未指定width,将占满整行就没有必要居中)

.parent{margin-left:auto;margin-right:auto;}

3.多个块级元素

如果你想让两个或者两个以上的块级元素在一行上面水平居中,那么最好的办法是改变他们display的类型。这儿给两个例子,一个使用inline-block,另一个使用flex。当然,如果你的意思是让多个块级元素堆积叠加显示在一条竖列上,那么设置左右外边距的值为auto这一方法依然有效。

垂直居中

1、单行inline或者inline-*元素

对于该类元素我们可以通过设置padding-top以及padding- bottom来达到垂直居中的效果

.parent{padding-top:50px;padding- bottom:50px;}

但是当padding不可使用时,可以尝试将height以及line-height设为相同的大小的值

.parent{height:50px;line-height:50px;}

2、多行inline或者inline-*元素

使用flex将子元素相对于父元素居中

.parent{display: flex;flex-direction: column;justify-content: center;}

3、块级元素

在网页布局中,不知道元素的具体高度(即高度非固定值)是很常见的,通过下移其父级高度的一半,再向上移动其自身高度的一半达到垂直居中的效果。

.parent{position: relative;}

.child{position: absolute;top:50%;transform:translateY(-50%);}

当然我们也可以使用flex来使其垂直居中,而且使用flex会特别简单

.parent{display: flex;flex-direction: column;justify-content: center;}

水平垂直居中

1、使用flex

很显然通过上面的总结我们知道使用flex可以很简单的让元素到达水平垂直居中

.parent{display: flex;justify-content: center;align-items: center;}

2、使用position

使用绝对定位先设置相对于父元素50%和50%的上/左偏移,再使用transform属性,即translate(-50%, -50%),在横向、纵向上都偏移自身高度的一半以居中。

.parent{position: relative;}

.child{position: absolute;top:50%left:50%;transform:translate(-50%, -50%);}

本文仅是对常用居中方法进行总结,还有很方法并未收录进来,因为我也不是很清楚.....所以将原文地址链接放这里,大家一起学习一起进步吧。

CSS居中完全指南(英文)

CSS完全居中指南(译文)

上一篇 下一篇

猜你喜欢

热点阅读