css居中的几种方式

html-css014

css居中的几种方式,第1张

1.横向居中

(1)方法一

position: fixed

/* 居中对齐begin */

left: 50%

/* 兼容老版本的方法 */

-webkit-transform: translateX(-50%)

transform: translateX(-50%)

(2)方法二

设置固定宽度,并且设置margin:auto

(3)方法三

position: fixed

left: 50% - 居中盒子宽度的50%

2.纵向居中

(1) 高度和行高设置一样

height: 100px

line-height:100px

3.横向和纵向都居中

display: flex

/* 默认的主轴是x轴row, justify-content: center 沿着主轴居中对齐 */

justify-content: center

/* 我们需要一个侧轴居中 */

align-items: center

如果您觉得我的文章有用,欢迎点赞和关注,也欢迎光临我的个人博客 https://github.com/BokFang

在这里总结一下CSS水平居中、垂直居中的各种方式。应该说非常全了。

总览一下:

用法:在父级元素的样式中添加 text-align:center

效果图:

用法:在元素样式添加 margin:0 auto ,使其margin-left和margin-right平分块级元素那一行剩余的宽度。

效果图:

当然如果你的块级元素没有设置width,那么div就会占满一行,也就没有水平居中的说法了。

如果由多个块级元素,则可以使用 inline-block 配合 text-align:center ,将 inline-block 写在需要居中的元素样式上, text-align:center 写在父级元素上。

效果图:

使用flex也可以轻松做到多个块级元素水平居中

用法:在父级元素样式增加 display: flex justify-content: center

效果图与第三个一样。

当然,多个块级元素能用的居中方法,在单个块级元素上也同样可以使用。

使用 display:table 配合 margin:0 auto ,可以达到不定宽块级元素居中效果。

效果图:

使用绝对定位给元素一个left:50%,然后再加一个margin-lelt:-(宽度的一半)

效果图:

不过缺点很明显,就是你知道元素宽度而且得固定不变,所以是比较蠢的一种写法。

效果图:

效果图:

这个方法和水平居中的第6个方法一样,就不多说了。

效果图:

这个和水平居中的第7个方法一样,我也就不多说了。

效果图:

效果图:

效果图:

缺点也比较明显,需要计算。

效果图:

效果图:

效果图:

需要在html中加入 <table>标签,比较低效,我就不详写了,想了解的朋友可以Google搜索一下。

如果您觉得我的文章有用,欢迎点赞和关注,也欢迎光临我的个人博客 https://github.com/BokFang

水平居中

若是行内元素, 给其父元素设置 text-align:center,即可实现行内元素水平居中.

若是块级元素, 该元素设置 margin:0 auto即可.

若子元素包含 float:left 属性, 为了让子元素水平居中, 则可让父元素宽度设置为fit-content,并且配合margin, 作如下设置:

.parent{

width: -moz-fit-content

width: -webkit-fit-content

width:fit-content

margin:0 auto}

使用flex 布局, 可以轻松的实现水平居中, 子元素设置如下:

.son{

display: flex

justify-content: center}

使用CSS3中新增的transform属性, 子元素设置如下:

.son{

position:absolute

left:50%

transform:translate(-50%,0)}

使用绝对定位方式, 以及负值的margin-left, 子元素设置如下:

.son{

position:absolute

width:固定

left:50%

margin-left:-0.5宽度}

使用绝对定位方式, 以及left:0right:0margin:0 auto子元素设置如下:

.son{

position:absolute

width:固定

left:0

right:0

margin:0 auto}

垂直居中

若元素是单行文本, 则可设置 line-height 等于父元素高度

若元素是行内块级元素, 基本思想是使用display: inline-block, vertical-align: middle和一个伪元素让内容块处于容器中央.

.parent::after, .son{

display:inline-block

vertical-align:middle}.parent::after{

content:''

height:100%}

元素高度不定

可用 vertical-align 属性, 而vertical-align只有在父层为 td 或者 th 时, 才会生效, 对于其他块级元素, 例如 div、p 等, 默认情况是不支持的. 为了使用vertical-align, 我们需要设置父元素display:table, 子元素 display:table-cellvertical-align:middle

用 Flex 布局

.parent {

display: flex

align-items: center}

可用 transform , 设置父元素相对定位(position:relative), 子元素如下css样式:

.son{

position:absolute

top:50%

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

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

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

元素高度固定

设置父元素相对定位(position:relative), 子元素如下css样式:

.son{

position:absolute

top:50%

height:固定

margin-top:-0.5高度}

设置父元素相对定位(position:relative), 子元素如下css样式:

.son{

position:absolute

height:固定

top:0

bottom:0

margin:auto 0}