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

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

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

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

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

水平居中

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

1.单个元素水平居中

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

CSS代码

view source

1 .box{
2     display: flex;
3     justify-content:center;
4     background:#0099cc
5 }
6 h1{
7     color:#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{
02     display: flex;
03     justify-content:center;
04     width:100%;
05     background:#0099cc
06 }
07 h1{
08     font-size:1rem;
09     padding:1rem;
10     border:1px dashed#FFF;
11     color:#FFF;
12     font-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{
02     display: flex;
03     width:980px;
04     height:30rem;
05     align-items:center;
06     background:#0099cc
07 }
08 h1{
09     font-size:1rem;
10     padding:1rem;
11     border:1px dashed#FFF;
12     color:#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{
02     display: flex;
03     width:980px;
04     height:30rem;
05     align-items:center;
06     background:#0099cc
07 }
08 h1{
09     font-size:1rem;
10     padding:1rem;
11     border:1px dashed#FFF;
12     color:#FFF
13 }

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

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

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

view source

1 body{
2     display: flex;
3     justify-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{
02     display: flex;
03     width:980px;
04     height:30rem;
05     justify-content:center;
06     background:#0099cc;
07     flex-direction:column
08 }
09 h1{
10     display: flex;
11     justify-content:center;
12     font-size:1rem;
13     padding:1rem;
14     border:1px dashed#FFF;
15     color:#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

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

代码分析:为了让h1里的文字居中,我们给h1添加了 display:flex; 以及 justify-content:center,同样的为了让h1在.box里垂直居中,我们给.box也加上 display:flex; 以及 justify-content:center 属性。而.box里的align-items:center就 是让h1水平居中的。这个属性的作用是:定义项目在交叉轴上的对齐方式。由于我们使用了 flex-direction:column; 所以垂直方向作为主轴,交叉轴自然就是水平方向了。为让让.box也水平居中,我们同时也定义了body{display:flex;justify- content:center}

PS:代码真实效果与图片显示效果可能会不一样,因为贴出的代码是最简的,给代码配图时,为了达到图片演示效果,所以对代码稍作了修饰。

转自:http://yunkus.com/article/css3/286.html

更多参考:

CSS3 Flex 弹性布局用法详解

Flexslider图片轮播、文字图片相结合滑动切换效果

大小不固定的图片和多行文字的垂直水平居中

CSS实现垂直居中的5种方法

Bootstrap 3: 菜单居中 Center content in responsive bootstrap navbar

CSS: 居中一个宽度为auto的块元素 (width:auto;margin:auto) center an auto-width div

CSS:absolute居中 How to center absolute div horizontally using CSS

Bootstrap 3 栏居中 responsive centered columns

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

时间: 2024-10-10 02:36:33

CSS3 Flex实现元素的水平居中和垂直居中的相关文章

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

1 <!DOCTYPE html> 2 <html> 3 4 <head> 5 <meta charset="UTF-8"> 6 <title></title> 7 </head> 8 9 <body> 10 <!--1.清除输入框内的空格--> 11 <!--<input type="text" onBlur="replaceSpace

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

CSS3 Flexbox轻松实现元素的水平居中和垂直居中 网上有很多关于Flex的教程,对于Flex的叫法也不一,有的叫Flexbox,有的叫Flex,其实这两种叫法都没有错,只是Flexbox旧一点,而Flex是刚出来不久的东西而已,为了方便说明,赶上新技术,下面我就把这种布局叫Flex布局. 元素居中,相信作为前端工程师的你肯定会经常用到,不管是在水平方向居中,还是垂直方向居中,都可在你的职业生涯中徘徊.不过很多时候要实现垂直居中,还是比较麻烦的.不过你也不用担心,下面就给大家分享下通过Fl

CSS设置行内元素和块级元素的水平居中、垂直居中

CSS设置行内元素的水平居中 div{text-align:center} /*DIV内的行内元素均会水平居中*/ CSS设置行内元素的垂直居中 div{height:30px; line-height:30px} /*DIV内的行内元素均会垂直居中*/ PS:当然,如果既要水平居中又要垂直居中,那么综合一下 div{text-align:center; height:30px; line-height:30px} CSS设置块级元素的水平居中 div p{margin:0 auto; widt

元素水平居中和垂直居中的几种简单方法

一.如何使元素在水平方向上居中 1. 使用text-align:center. 在父级元素的CSS样式设置text-align:center.把内部嵌套一个div把它当作文本来对待,不过这个方法有时候是不管用的. 2.在需要居中的元素设置margin:0 auto.     这句CSS的意思为:设置margin-left和margin-right为自动适应父级元素宽度.所以可以使元素水平居中,不过记得设置其width. 二.如何使元素在垂直方向上居中 1.使图片在垂直方向上居中. div{bac

CSS中元素水平居中和垂直居中的方法

#CSS中水平居中和垂直居中的方法 一. 水平居中 1.行内元素(文本,图片等) 如果被设置元素为文本.图片等行内元素时,可以通过给父元素设置` text-align:center;` 来实现 2.定宽块级元素 可以通过设置“左右margin”值为“auto”来实现居中 常用的有 `margin:0 auto; ` 也可以写成`margin-left:auto;margin-right:auto;` 3.不定宽块级元素 有三种实现方法: * 加入 table 标签   为需要设置的居中的元素外面

绝对定位元素水平居中和垂直居中的原理

通常在设置绝对定位元素相对于其定位的祖先元素水平垂直居中时,通过绝对定位元素设置margin:auto; top:0; bottom:0; right:0; left:0;就可以实现.下面简单探索一下绝对定位元素这么设置就可以实现水平居中和垂直居中的原理. 核心CSS代码: position:absolute; margin:auto; top:0; bottom:0; right:0; left:0; 绝对定位元素的布局由元素的三个因素决定:位置(top.bottom.left.right).

CSS居中布局(水平居中和垂直居中)

一.水平居中的四种方法(父容器和子容器宽度均不固定) 1.inline-block + text-align 子容器:{display:inline-block} 父容器:{text-align:center} 缺点:不兼容IE6.7,子容器内部的内容也会居中 兼容办法:子容器:{zoom:1;display:inline-block}//模拟inline-block 2.table + margin 子容器:{display:table; margin:0 auto;}//display:ta

水平居中,垂直居中

一.水平居中 (1)行内元素,给其父元素添加text-align:center即可: (2)块状元素,该元素设置margin:0 auto即可: (3)若子元素包含float:left属性:为让子元素水平居中,需给父元素宽度设置fit-content,并配合margin:0 auto,设置如下: .parent{ width: -moz-fit-content; width: -webkit-fit-content; width:fit-content; margin:0 auto; } ps:

css3 flex流动自适应响应式布局实例 转

转自:http://www.tuicool.com/articles/auEbMzU   感谢他的分享, 一.图片自适应居中 实例图: 实例HTML: <div class="demo"> <img src="http://dummyimage.com/100x100" alt=""> </div> <div class="demo"> <img class="&