关于元素居中的问题一直都是css中抱怨的典范。小伙伴们常常抱怨为什么居个中这么难~ 为了能居中,拼了!!!!!
为了更更好的居中,特地总结了一下居中的方法,方便以后使用。
不要左,不要右,我就要居中!!
一、水平居中(horizontally)
(1)inline、inline-*元素(如文本,超链接等)的水平居中
我们知道,行内元素所占的空间是与元素本身大小相关的。 若要水平居中一个行内元素,只需要用一个块级元素包含它即可:
1 2 3 |
|
demo:
See the Pen 行内元素居中 by senola (@senola) on CodePen.
次方法适用于inline
、inline-block
、inline-table
、inline-fex
等行内元素
(2)块级元素水平的居中
众所周知,块级元素霸道,它会独占一行。所有我们可以使用margin-left
和margin-right
的值为auto
来居中块级元素(注意,需要给块级元素一个宽度,因为如果不给块级元素一个宽度那么该元素将充满整个屏幕,就不需要居中了)。
1 2 3 |
|
demo:
See the Pen 块级元素居中 by senola (@senola) on CodePen.
此方法适用于任何宽度的块级元素。不要太爽!
(3)多个块级元素水平居中
假如需要使一个以上的块级元素水平居中,有两种方法:
方法一: 使用inline-block
。方法二: 使用flex-box
。 如下:
See the Pen RNYyLL by senola (@senola) on CodePen.
其实,水平居中很简单。留意一下行内元素和块级元素的不同就行~ 接下来整整垂直居中!
二、垂直居中(Vertical)
垂直居中需要一些css技巧。
(1)inline、inline-*元素(如文本,超链接等)的垂直居中
1. 单行垂直居中
有时候inline
或text
元素会默认垂直居中,这是因为元素的padding-top
和padding-bottom
值相等。
1 2 3 4 |
|
如果再一些情况下,padding不方便使用,那么可以设置text
的line-height
值为text
的高度。
1 2 3 4 5 |
|
See the Pen 行内元素单行垂直居中 by senola (@senola) on CodePen.
2. 多行行垂直居中
设置元素的padding-top
与padding-bottom
相等也可以是多行文本垂直居中。但这不是通用的方法,也许文本元素是在表格的单元格中,又或者是用了css让其行为类似表格。这时候可以使用vertical-align
就可以帮助设置元素垂直居中。
下面介绍一种很有意思的方法,该方法被称为ghost element
技术,顾名思义,ghost
诡异的。该技术中采用了伪元素,来看看吧~ 保证不打死你!!!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
See the Pen ghost element technique by senola (@senola) on CodePen.
(2)会计元素的垂直居中
1. 知道元素的高度
如果知道块级元素的高度,你可以这样做:
1 2 3 4 5 6 7 8 9 |
|
2. 不知道元素的高度
如果不知道元素的高度,那么可以采用transform变换。
1 2 3 4 5 6 7 8 |
|
3. 采用flexbox
1 2 3 4 5 6 |
|
三、水平和垂直居中
当然你可以结合以上方法来使元素垂直水平居中。对于水平、垂直同时居中的话我们可以分三种情况:
1. 元素有固定的狂高度
可以采用元素的宽高值得一半并取负值作为margin
的值,同时采用绝对定位。这种方法各浏览器都有良好的支持。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
2. 元素没有固定的狂高度
如果元素没有固定的宽度和高度,那么我们可以采用transform
和绝对定位
实现。
1 2 3 4 5 6 7 8 9 |
|
也可以设置left
、right
、top
、bottom
值为0,再设置margin
为 auto
1 2 3 4 5 6 7 8 9 10 11 |
|
3. 使用flexbox
1 2 3 4 5 6 |
|
四、总结
通过以上方法,你可以居中任何元素。妈妈再也不用担心我不会居中喽 O(∩_∩)O~