网上有很多关于Flex的教程,对于Flex的叫法也不一,有的叫Flexbox,有的叫Flex,其实这两种叫法都没有错,只是Flexbox旧一点,而Flex是刚出来不久的东西而已,为了方便说明,赶上新技术,下面我就把这种布局叫Flex布局。
元素居中,相信作为前端工程师的你肯定会经常用到,不管是在水平方向居中,还是垂直方向居中,都可在你的职业生涯中徘徊。不过很多时候要实现垂直居中,还是比较麻烦的。不过你也不用担心,下面就给大家分享下通过Flex布局轻松实现元素在水平、垂直方向上的居中效果。
水平居中
水平居中最为简单我们直接来看下代码
1.单个元素水平居中
CSS代码
.box{ display: flex; justify-content: center; background: #0099cc } h1{ color: #FFF }
HTML代码
<div class="box"> <h1>flex弹性布局justify-content属性实现元素水平居中</h1> </div>
在这段代码里我们只需要给h1标签的父元素添加两个属性就可以了,justify-content其作用就是 让class类为box的div盒子居中。盒 子居中了,盒子里面的元素就自然居中了,他的好处就是不需要对需居中的元素(h1)设置任何样式,如果:width,margin。
2.多个h1元素水平居中
HTML代码
<div class="box"> <h1>flex弹性布局justify-content属性实现元素水平居中</h1> <h1>flex弹性布局justify-content属性实现元素水平居中</h1> <h1>flex弹性布局justify-content属性实现元素水平居中</h1> </div>
CSS代码
.box{ display: flex; justify-content: center; width: 100%; background: #0099cc } h1{ font-size: 1rem; padding: 1rem; border: 1px dashed #FFF; color: #FFF; font-weight: normal; }
代码还是相当的整洁的,在Flex布局中,作用对象是子元素与及父元素,所以在这里我们不妨把body当作一个正常的标签使用,虽然很少这样用,但是为了说明body标签也是很接地气的,所以本例中使用了body标签作为box的父元素。
现 在我们来分析下代码,在Flex有两个东西,一个是Flex容器(子项目父元素),另一个是子项目(Flex容器子元素)。如果不给.box添加样式, 一个h1标签占一行,也就是页面会显示三行文字“flex弹性布局justify-content属性实现元素水平居中”。如果我们给.box添加了 display: flex;那么三个h1标签就妥妥地在一行里排列了,相当于浮动,只不过他不会因为超出了.box的宽度而换行,他总是会在一行内显示。
元素垂直居中
元素垂直居中在开端开发中有时候还是比较麻烦的,但是用了Flex布局后一切就化繁为简!我们还是来看看例子吧!
1.单个h1标签垂直居中
HTML代码
<div class="box"> <h1>flex弹性布局justify-content属性实现元素水平居中</h1> </div>
CSS代码
.box{ display: flex; width: 980px; height: 30rem; align-items:center; background: #0099cc } h1{ font-size: 1rem; padding: 1rem; border: 1px dashed #FFF; color: #FFF }
为了让大家看得清楚,定义了.box的高,蓝色背景;给h1元素添加一个边框。这样,h1元素就乖乖地居中了,不用给h1设置高度,无需绝对定位,没错就这么简单粗暴。
2.多个h1标签并排垂直居中
HTML代码
<div class="box"> <h1>flex弹性布局justify-content属性实现元素水平居中</h1> <h1>flex弹性布局justify-content属性实现元素水平居中</h1> <h1>flex弹性布局justify-content属性实现元素水平居中</h1> </div>
CSS代码
.box{ display: flex; width: 980px; height: 30rem; align-items:center; background: #0099cc } h1{ font-size: 1rem; padding: 1rem; border: 1px dashed #FFF; color: #FFF }
上面这个例子除了上HTML代码多了两个h1标签,样式都没变化。有了Flex垂直居中,元素、图片、文字居中问题瞬间化为泡影。
注意:div,h1标签只是举例而已,Flex属性也适用于其它标签HTML标签。
如果想父元素水平居中,你只需要给body标签一个属性就OK了。代码如下:
body{ display: flex; justify-content: center; }
为了让大家看到效果,在这里我们把.box的width设置成了960px,背景颜色为#0099CC。
3.多行h1标签垂直居中
HTML代码
<div class="box"> <h1>flex弹性布局justify-content属性实现元素垂直居中</h1> <h1>flex弹性布局justify-content属性实现元素垂直居中</h1> <h1>flex弹性布局justify-content属性实现元素垂直居中</h1> <h1>flex弹性布局justify-content属性实现元素垂直居中</h1> </div>
CSS代码
.box{ display: flex; width: 980px; height: 30rem; justify-content:center; background: #0099cc; flex-direction:column } h1{ display: flex; justify-content:center; font-size: 1rem; padding: 1rem; border: 1px dashed #FFF; color: #FFF }
由于弹性容器.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 弹性布局用法详解》了解更多。
最后我们来一个完整的例子,同时包含水平,垂直居中,我们还是老规矩,来看看例子
HTML代码
<div class="box"> <h1>flex弹性布局justify-content属性实现元素垂直居中</h1> <h1>flex弹性布局justify-content属性实现元素垂直居中</h1> <h1>flex弹性布局justify-content属性实现元素垂直居中</h1> <h1>flex弹性布局justify-content属性实现元素垂直居中</h1> </div>
CSS代码
body{display: flex;justify-content:center} .box{ display: flex; width: 980px; height: 30rem; justify-content:center; background: #0099cc; flex-direction:column; align-items:center; } h1{ display: flex; justify-content:center; font-size: 1rem; padding: 1rem; border: 1px dashed #FFF; color: #FFF; width: 28rem }
代码分析:为了让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:代码真实效果与图片显示效果可能会不一样,因为贴出的代码是最简的,给代码配图时,为了达到图片演示效果,所以对代码稍作了修饰。
相关推荐
主要为大家详细介绍了css使用flexbox布局容器内多元素水平居中的方法,如何使用flexbox布局多元素水平居中?本文为大家进行解答,感兴趣的小伙伴们可以参考一下
首先还是那句老话,非常幸运我们现在可以使用CSS3布局。 在布局的传统解决方案中,都是基于盒状模型,依赖display属性、position属性、float...今天给大家推荐的只是它实现内元素垂直居中的案例,以后还会推荐。。。
效果描述: 首先还是那句老话,非常幸运我们现在可以使用CSS3布局。... 今天给大家推荐的只是它实现内元素垂直居中的案例,以后还会推荐。。。 使用方法: 给你需要居中的div的父辈div增加附件中关键样式即可
因为对于三列等高自适应布局和水平垂直居中对齐需要一些对css3中flexbox基础概念的理解,所以会对flexbox的概念做一个简单的介绍,以为后面的实例做一个铺垫。本人一直认为,不管学习任何知识,对于概念的理解都十分...
Flexbox实现一个div元素在body页面中水平垂直居中: ... <!... <...Flexbox制作CSS布局实现水平垂直居中</title> <style type="text/css"> html { height: 100%; } body
我们在编辑一个版面,通常都会用到水平居中和垂直居中来设计,而水平居中很好处理,不外乎就是设定margin:0 auto;或是text-align:center;,就可以轻松解决掉水平居中的问题,但一直以来最麻烦对齐问题,都是“垂直...
而且在Css3的flexbox出现之后,解决各类居中问题变得更加容易了。搜了搜园子内关于flexbox的文章觉得很多不够详尽,故想借介绍flexbox的同时好好总结一番各类垂直居中的方法。 由简至繁: 行内元素的水平居中 要实现...
在布局的传统解决方案中,都是基于盒状模型,依赖display属性、position属性、float属性,这种方式比较传统,对于那些特殊布局来说非常不方便,比如,垂直居中就不容易实现。 尤其是现在移动设备如此多
结论 在本文中,我们介绍了使一个元素在另一个元素中居中的三种...使用 flexbox/grid 布局,您将能够通过一个 CSS 属性将其所有子元素居中,但这种方法比较复杂。有六种不同的对齐属性可用,每个属性都有不同的用途。
说到居中,很多人第一反应应该是水平居中,说到水平居中,肯定道友们有一万种方法做到,CSS3 的FlexBox更是强大到没朋友。但是良辰今天想聊的是 CSS 垂直居中的方法,下面是萌萌的分割线。神马?你敢说不萌? •方式...
主要介绍了使用CSS实现水平垂直居中效果的方法的总结,涵盖了从最原始的高度设置到令人兴奋的CSS3的Flexbox方式,非常全面,十分推荐!需要的朋友可以参考下
一、First Face我们知道,骰子有六个面,每个面的点的个数代表该面的值,第一个面由一个水平垂直居中的点组成。下面来看具体的实现: CSS Code复制内容到剪贴板 class> <span u00a0class=dot></span> ...
主要介绍了CSS中Flexbox来达到居中效果的实例,注意一下IE浏览器中的兼容问题,需要的朋友可以参考下
旨在利用flexbox的优势,例如易于水平和垂直放置,随着页面大小变化而灵活的元素流动以及重复元素的出色样式。 在示例项目中,我们使用flexbox进行以下操作: 在页面顶部创建居中的导航栏。 创建公司产品
今天刚学了css3的弹性盒模型,这是一个可以让你告别浮动、完美实现垂直水平居中的新特性。本文主要是总结一下今天所学,有需要的朋友可以参考下
主要给大家介绍了关于利用纯CSS实现居中的七大方法,其中包括line-height居中法、table-cell居中法、上下左右定位+margin居中法、50%定位+margin居中法、50%定位+translate居中法、Flexbox居中法以及Flexbox+margin...
虽然使用 CSS 创建居中效果需要耍一些花招,特别是垂直居中效果,但我认为由此生出的诋毁,对于 CSS 则是不公平的。实际上我们有太多的方式使用 CSS 创建居中效果了,而且作为一名前端开发者,你真的有必要对其中的...