分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

CSS3 Flex实现元素的水平居中和垂直居中

发布时间:2023-09-06 01:15责任编辑:傅花花关键词:CSS

CSS3 Flex实现元素的水平居中和垂直居中

转载 2017年03月06日 23:07:20

网上有很多关于Flex的教程,对于Flex的叫法也不一,有的叫Flexbox,有的叫Flex,其实这两种叫法都没有错,只是Flexbox旧一点,而Flex是刚出来不久的东西而已,为了方便说明,赶上新技术,下面我就把这种布局叫Flex布局。

元素居中,相信作为前端工程师的你肯定会经常用到,不管是在水平方向居中,还是垂直方向居中,都可在你的职业生涯中徘徊。不过很多时候要实现垂直居中,还是比较麻烦的。不过你也不用担心,下面就给大家分享下通过Flex布局轻松实现元素在水平、垂直方向上的居中效果。

水平居中

水平居中最为简单我们直接来看下代码

1.单个元素水平居中

CSS3 Flexbox轻松实现元素的水平居中和垂直居中

CSS代码

view source
1.box{
2display: flex;
3justify-content:center;
4background:#0099cc
5}
6h1{
7color:#FFF
8}

HTML代码

view source
1<div class="box">
2<h1>flex弹性布局justify-content属性实现元素水平居中</h1>
3</div>

在这段代码里我们只需要给h1标签的父元素添加两个属性就可以了,justify-content其作用就是让class类为box的div盒子居中。盒 子居中了,盒子里面的元素就自然居中了,他的好处就是不需要对需居中的元素(h1)设置任何样式,如果:width,margin。

2.多个h1元素水平居中

CSS3 Flexbox轻松实现元素的水平居中和垂直居中

HTML代码

view source
1<div class="box">
2<h1>flex弹性布局justify-content属性实现元素水平居中</h1>
3<h1>flex弹性布局justify-content属性实现元素水平居中</h1>
4<h1>flex弹性布局justify-content属性实现元素水平居中</h1>
5</div>

CSS代码

view source
01.box{
02display: flex;
03justify-content:center;
04width:100%;
05background:#0099cc
06}
07h1{
08font-size:1rem;
09padding:1rem;
10border:1px dashed#FFF;
11color:#FFF;
12font-weight:normal;
13}

代码还是相当的整洁的,在Flex布局中,作用对象是子元素与及父元素,所以在这里我们不妨把body当作一个正常的标签使用,虽然很少这样用,但是为了说明body标签也是很接地气的,所以本例中使用了body标签作为box的父元素。

现在我们来分析下代码,在Flex有两个东西,一个是Flex容器(子项目父元素),另一个是子项目(Flex容器子元素)。如果不给.box添加样式, 一个h1标签占一行,也就是页面会显示三行文字“flex弹性布局justify-content属性实现元素水平居中”。如果我们给.box添加了 display: flex;那么三个h1标签就妥妥地在一行里排列了,相当于浮动,只不过他不会因为超出了.box的宽度而换行,他总是会在一行内显示。

元素垂直居中

元素垂直居中在开端开发中有时候还是比较麻烦的,但是用了Flex布局后一切就化繁为简!我们还是来看看例子吧!

1.单个h1标签垂直居中

CSS3 Flexbox轻松实现元素的水平居中和垂直居中

HTML代码

view source
1<div class="box">
2<h1>flex弹性布局justify-content属性实现元素水平居中</h1>
3</div>

CSS代码

view source
01.box{
02display: flex;
03width:980px;
04height:30rem;
05align-items:center;
06background:#0099cc
07}
08h1{
09font-size:1rem;
10padding:1rem;
11border:1px dashed#FFF;
12color:#FFF
13}

为了让大家看得清楚,定义了.box的高,蓝色背景;给h1元素添加一个边框。这样,h1元素就乖乖地居中了,不用给h1设置高度,无需绝对定位,没错就这么简单粗暴。

2.多个h1标签并排垂直居中

CSS3 Flexbox轻松实现元素的水平居中和垂直居中

HTML代码

view source
1<div class="box">
2<h1>flex弹性布局justify-content属性实现元素水平居中</h1>
3<h1>flex弹性布局justify-content属性实现元素水平居中</h1>
4<h1>flex弹性布局justify-content属性实现元素水平居中</h1>
5</div>

CSS代码

view source
01.box{
02display: flex;
03width:980px;
04height:30rem;
05align-items:center;
06background:#0099cc
07}
08h1{
09font-size:1rem;
10padding:1rem;
11border:1px dashed#FFF;
12color:#FFF
13}

上面这个例子除了上HTML代码多了两个h1标签,样式都没变化。有了Flex垂直居中,元素、图片、文字居中问题瞬间化为泡影。

注意:div,h1标签只是举例而已,Flex属性也适用于其它标签HTML标签。

如果想父元素水平居中,你只需要给body标签一个属性就OK了。代码如下:

view source
1body{
2display: flex;
3justify-content:center;
4}

为了让大家看到效果,在这里我们把.box的width设置成了960px,背景颜色为#0099CC。

3.多行h1标签垂直居中

HTML代码

view source
1<div class="box">
2<h1>flex弹性布局justify-content属性实现元素垂直居中</h1>
3<h1>flex弹性布局justify-content属性实现元素垂直居中</h1>
4<h1>flex弹性布局justify-content属性实现元素垂直居中</h1>
5<h1>flex弹性布局justify-content属性实现元素垂直居中</h1>
6</div>

CSS代码

view source
01.box{
02display: flex;
03width:980px;
04height:30rem;
05justify-content:center;
06background:#0099cc;
07flex-direction:column
08}
09h1{
10display: flex;
11justify-content:center;
12font-size:1rem;
13padding:1rem;
14border:1px dashed#FFF;
15color:#FFF
16}

由于弹性容器.box添加了 display:flex; 属性,子项目默认是水平排列的,所以给.box追加一个 ?flex-direction:column 属性来让子项目垂直排列。此时垂直方向作为主轴,所以我们可以使用一个 ?justify-content:center 来让所有子项目在垂直方向上居中。为了让h1标签内的文字也水平居中,我们也给了h1一个dislay:flex;以及 justify-content:center,由于h1是默认的水平排列,所以 justify-content:center 就可以让文字在水平方向上居中。

在这里我们只需要注意 justify-content:center 的用法就可以了,它的作用就是定义Flex项目在主轴方向上的对齐方。你也可以在这篇文章《CSS3 Flex 弹性布局用法详解》了解更多。

最后我们来一个完整的例子,同时包含水平,垂直居中,我们还是老规矩,来看看例子

CSS3 Flexbox轻松实现元素的水平居中和垂直居中

HTML代码

view source
1<div class="box">
2<h1>flex弹性布局justify-content属性实现元素垂直居中</h1>
3<h1>flex弹性布局justify-content属性实现元素垂直居中</h1>
4<h1>flex弹性布局justify-content属性实现元素垂直居中</h1>
5<h1>flex弹性布局justify-content属性实现元素垂直居中</h1>
6</div>

CSS代码

view source
01body{display: flex;justify-content:center}
02.box{
03display: flex;
04width:980px;
05height:30rem;

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved