CSS3 Flex实现元素的水平居中和垂直居中
2017-03-06 23:07
811 查看
网上有很多关于Flex的教程,对于Flex的叫法也不一,有的叫Flexbox,有的叫Flex,其实这两种叫法都没有错,只是Flexbox旧一点,而Flex是刚出来不久的东西而已,为了方便说明,赶上新技术,下面我就把这种布局叫Flex布局。
元素居中,相信作为前端工程师的你肯定会经常用到,不管是在水平方向居中,还是垂直方向居中,都可在你的职业生涯中徘徊。不过很多时候要实现垂直居中,还是比较麻烦的。不过你也不用担心,下面就给大家分享下通过Flex布局轻松实现元素在水平、垂直方向上的居中效果。
1.单个元素水平居中
CSS3 Flexbox轻松实现元素的水平居中和垂直居中
在这段代码里我们只需要给h1标签的父元素添加两个属性就可以了,justify-content其作用就是让class类为box的div盒子居中。盒 子居中了,盒子里面的元素就自然居中了,他的好处就是不需要对需居中的元素(h1)设置任何样式,如果:width,margin。
2.多个h1元素水平居中
CSS3 Flexbox轻松实现元素的水平居中和垂直居中
代码还是相当的整洁的,在Flex布局中,作用对象是子元素与及父元素,所以在这里我们不妨把body当作一个正常的标签使用,虽然很少这样用,但是为了说明body标签也是很接地气的,所以本例中使用了body标签作为box的父元素。
现在我们来分析下代码,在Flex有两个东西,一个是Flex容器(子项目父元素),另一个是子项目(Flex容器子元素)。如果不给.box添加样式, 一个h1标签占一行,也就是页面会显示三行文字“flex弹性布局justify-content属性实现元素水平居中”。如果我们给.box添加了 display: flex;那么三个h1标签就妥妥地在一行里排列了,相当于浮动,只不过他不会因为超出了.box的宽度而换行,他总是会在一行内显示。
1.单个h1标签垂直居中
CSS3 Flexbox轻松实现元素的水平居中和垂直居中
为了让大家看得清楚,定义了.box的高,蓝色背景;给h1元素添加一个边框。这样,h1元素就乖乖地居中了,不用给h1设置高度,无需绝对定位,没错就这么简单粗暴。
2.多个h1标签并排垂直居中
CSS3 Flexbox轻松实现元素的水平居中和垂直居中
上面这个例子除了上HTML代码多了两个h1标签,样式都没变化。有了Flex垂直居中,元素、图片、文字居中问题瞬间化为泡影。
注意:div,h1标签只是举例而已,Flex属性也适用于其它标签HTML标签。
如果想父元素水平居中,你只需要给body标签一个属性就OK了。代码如下:
view source
为了让大家看到效果,在这里我们把.box的width设置成了960px,背景颜色为#0099CC。
3.多行h1标签垂直居中
由于弹性容器.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轻松实现元素的水平居中和垂直居中
代码分析:为了让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轻松实现元素的水平居中和垂直居中
转自:http://justcode.ikeepstudying.com/2015/10/css3-flexbox%E8%BD%BB%E6%9D%BE%E5%AE%9E%E7%8E%B0%E5%85%83%E7%B4%A0%E7%9A%84%E6%B0%B4%E5%B9%B3%E5%B1%85%E4%B8%AD%E5%92%8C%E5%9E%82%E7%9B%B4%E5%B1%85%E4%B8%AD/
元素居中,相信作为前端工程师的你肯定会经常用到,不管是在水平方向居中,还是垂直方向居中,都可在你的职业生涯中徘徊。不过很多时候要实现垂直居中,还是比较麻烦的。不过你也不用担心,下面就给大家分享下通过Flex布局轻松实现元素在水平、垂直方向上的居中效果。
水平居中
水平居中最为简单我们直接来看下代码1.单个元素水平居中
CSS3 Flexbox轻松实现元素的水平居中和垂直居中
CSS代码
view source1 | .box{ |
2 | display : flex; |
3 | justify- content : center ; |
4 | background : #0099cc |
5 | } |
6 | h 1 { |
7 | color : #FFF |
8 | } |
HTML代码
view source1 | <div class = "box" > |
2 | <h1>flex弹性布局justify-content属性实现元素水平居中</h1> |
3 | </div> |
2.多个h1元素水平居中
CSS3 Flexbox轻松实现元素的水平居中和垂直居中
HTML代码
view source1 | <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 source01 | .box{ |
02 | display : flex; |
03 | justify- content : center ; |
04 | width : 100% ; |
05 | background : #0099cc |
06 | } |
07 | h 1 { |
08 | font-size : 1 rem; |
09 | padding : 1 rem; |
10 | border : 1px dashed #FFF ; |
11 | color : #FFF ; |
12 | font-weight : normal ; |
13 | } |
现在我们来分析下代码,在Flex有两个东西,一个是Flex容器(子项目父元素),另一个是子项目(Flex容器子元素)。如果不给.box添加样式, 一个h1标签占一行,也就是页面会显示三行文字“flex弹性布局justify-content属性实现元素水平居中”。如果我们给.box添加了 display: flex;那么三个h1标签就妥妥地在一行里排列了,相当于浮动,只不过他不会因为超出了.box的宽度而换行,他总是会在一行内显示。
元素垂直居中
元素垂直居中在开端开发中有时候还是比较麻烦的,但是用了Flex布局后一切就化繁为简!我们还是来看看例子吧!1.单个h1标签垂直居中
CSS3 Flexbox轻松实现元素的水平居中和垂直居中
HTML代码
view source1 | <div class = "box" > |
2 | <h1>flex弹性布局justify-content属性实现元素水平居中</h1> |
3 | </div> |
CSS代码
view source01 | .box{ |
02 | display : flex; |
03 | width : 980px ; |
04 | height : 30 rem; |
05 | align-items: center ; |
06 | background : #0099cc |
07 | } |
08 | h 1 { |
09 | font-size : 1 rem; |
10 | padding : 1 rem; |
11 | border : 1px dashed #FFF ; |
12 | color : #FFF |
13 | } |
2.多个h1标签并排垂直居中
CSS3 Flexbox轻松实现元素的水平居中和垂直居中
HTML代码
view source1 | <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 source01 | .box{ |
02 | display : flex; |
03 | width : 980px ; |
04 | height : 30 rem; |
05 | align-items: center ; |
06 | background : #0099cc |
07 | } |
08 | h 1 { |
09 | font-size : 1 rem; |
10 | padding : 1 rem; |
11 | border : 1px dashed #FFF ; |
12 | color : #FFF |
13 | } |
注意:div,h1标签只是举例而已,Flex属性也适用于其它标签HTML标签。
如果想父元素水平居中,你只需要给body标签一个属性就OK了。代码如下:
view source
1 | body{ |
2 | display : flex; |
3 | justify- content : center ; |
4 | } |
3.多行h1标签垂直居中
HTML代码
view source1 | <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 source01 | .box{ |
02 | display : flex; |
03 | width : 980px ; |
04 | height : 30 rem; |
05 | justify- content : center ; |
06 | background : #0099cc ; |
07 | flex- direction :column |
08 | } |
09 | h 1 { |
10 | display : flex; |
11 | justify- content : center ; |
12 | font-size : 1 rem; |
13 | padding : 1 rem; |
14 | border : 1px dashed #FFF ; |
15 | color : #FFF |
16 | } |
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 source1 | <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 source01 | body{ display : flex;justify- content : center } |
02 | .box{ |
03 | display : flex; |
04 | width : 980px ; |
05 | height : 30 rem; |
06 | justify- content : center ; |
07 | background : #0099cc ; |
08 | flex- direction :column; |
09 | align-items: center ; |
10 | } |
11 | h 1 { |
12 | display : flex; |
13 | justify- content : center ; |
14 | font-size : 1 rem; |
15 | padding : 1 rem; |
16 | border : 1px dashed #FFF ; |
17 | color : #FFF ; |
18 | width : 28 rem |
19 | } |
是让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轻松实现元素的水平居中和垂直居中
转自:http://justcode.ikeepstudying.com/2015/10/css3-flexbox%E8%BD%BB%E6%9D%BE%E5%AE%9E%E7%8E%B0%E5%85%83%E7%B4%A0%E7%9A%84%E6%B0%B4%E5%B9%B3%E5%B1%85%E4%B8%AD%E5%92%8C%E5%9E%82%E7%9B%B4%E5%B1%85%E4%B8%AD/
相关文章推荐
- CSS3 Flex实现元素的水平居中和垂直居中
- css3实现元素水平垂直居中
- css3 实现元素水平和垂直居中
- 元素水平垂直居中的css3实现
- css/css3实现未知宽高元素的垂直居中和水平居中
- css3实现元素水平垂直居中
- CSS3 Flexbox轻巧实现元素的水平居中和垂直居中
- CSS3 Flexbox轻巧实现元素的水平居中和垂直居中
- Flex实现元素的水平居中和垂直居中
- margin:auto实现绝对定位元素的水平垂直居中(粘贴过来的)
- 网页元素居中攻略记_(4)用CSS3属性让元素水平垂直居中
- css 实现元素水平垂直居中总结5中方法
- css实现高度不固定的div元素模块在页面中水平垂直居中
- CSS3实现水平垂直居中
- margin:auto实现绝对定位元素的水平垂直居中
- javascript实现在指定元素中垂直水平居中
- 纯js代码实现未知宽高的元素在指定元素中垂直水平居中显示
- 纯css实现全兼容的元素水平垂直居中
- 网页元素居中攻略记_(4)用CSS3属性让元素水平垂直居中
- [转]margin:auto实现绝对定位元素的水平垂直居中