最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
web前端之css水平居中代码示例解析
时间:2021-05-20 编辑:袖梨 来源:一聚教程网
本篇文章小编给大家分享一下web前端之css水平居中代码示例解析,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
如何让一个行内元素(文字、图片等)水平垂直居中
行内元素的居中问题比较简单。
行内元素水平居中
给父容器设置:
text-align: center;
行内元素垂直居中
让文字的行高等于盒子的高度,可以让单行文本垂直居中。比如:
.father { line- }
如何让一个块级元素水平垂直居中
这一段是本文的核心。如何让一个块级的子元素在父容器里水平垂直居中?有好几种写法。我们一起来看看。
margin: auto 的问题
在 CSS 中对元素进行水平居中是非常简单的:如果它是一个行内元素,就对它的父容器应用text-align: center;如果它是一个块级元素,就对它自身应用margin: auto或者margin: 0 auto。
在这里,margin: auto相当于margin: auto auto auto auto。margin: 0 auto相当于margin: 0 auto 0 auto,四个值分别对应上右下左。其计算值取决于剩余空间。
但是,如果要对一个元素垂直居中,margin: auto就行不通了。
比如下面这段代码:
上面的代码中,父元素和子元素都是定宽高的,即便在这种情况下,我给子元素设置margin: auto,子元素依然没有垂直居中。
那还有没有比较好的通用的做法呢?
方式一:绝对定位 + margin(需要指定子元素的宽高,不推荐)
子元素的内容
代码解释:我们先让子元素的左上角居中,然后向上移动宽度的一半(50px),就达到了垂直居中的效果;水平居中的原理类似。
不足之处:要求指定子元素的宽高,才能写出margin-top和margin-left的属性值。
但是,在通常情况下,对那些需要居中的元素来说,其宽高往往是由其内容来决定的,不建议固定宽高。
方式二:绝对定位 + translate(无需指定子元素的宽高,推荐)
子元素的内容
这种写法,在没有指定子元素宽高的情况下,也能让其在父容器中垂直居中。因为 translate() 函数中使用百分比值时,是以这个元素自身的宽度和高度为基准进行换算和移动的(动态计算宽高)。
方式3:flex 布局(待改进)
将父容器设置为 Flex 布局,再给父容器加个属性justify-content: center,这样的话,子元素就能水平居中了;再给父容器加个属性align-items: center,这样的话,子元素就能垂直居中了。
代码举例:
子元素的内容
上面这种写法,不足之处在于:给父容器设置属性justify-content: center和align-items: center之后,导致父容器里的所有子元素们都垂直居中了(如果父容器里有多个子元素的话)。可我明明想让指定的某个子元素居中,要怎么改进呢?
方式4: flex 布局 + margin: auto(推荐)
我们只需写两行声明即可:先给父容器设置display: flex,再给指定的子元素设置我们再熟悉不过的margin: auto,即可让这个指定的子元素在剩余空间里,水平垂直居中。大功告成。
代码举例:
子元素的内容,想水平垂直居中这个元素不想水平垂直居中