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

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

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

水平居中

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

1.单个元素水平居中

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

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元素水平居中

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

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标签垂直居中

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

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标签并排垂直居中

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

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 弹性布局用法详解》了解更多。

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

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

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

原文:http://yunkus.com/article/css3/286.html

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

CSS3 Flexbox轻松实现元素的水平居中和垂直居中的更多相关文章

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

    CSS3 Flexbox轻松实现元素的水平居中和垂直居中 网上有很多关于Flex的教程,对于Flex的叫法也不一,有的叫Flexbox,有的叫Flex,其实这两种叫法都没有错,只是Flexbox旧一点 ...

  2. CSS3 Flexbox轻巧实现元素的水平居中和垂直居中(转)

    CSS3 Flexbox轻松实现元素的水平居中和垂直居中 网上有很多关于Flex的教程,对于Flex的叫法也不一,有的叫Flexbox,有的叫Flex,其实这两种叫法都没有错,只是Flexbox旧一点 ...

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

    CSS设置行内元素的水平居中 div{text-align:center} /*DIV内的行内元素均会水平居中*/ CSS设置行内元素的垂直居中 div{height:30px; line-heigh ...

  4. CSS3 Flexbox布局那些事

    相信研究过CSS3的同学对Flexbox布局一定不会陌生(作为一个未来主流的布局方式,至少有所耳闻).最近完成了两个项目:一个是移动端H5项目,一个是嵌入HTML页面的mac客户端项目.为了庆祝这两个 ...

  5. Stickup – 轻松实现元素固定效果的 jQuery 插件

    粘贴是一个简单的 jQuery 插件,在页面滚动的时候固定一个元素到浏览器窗口的顶部,让其总是保持在视图中可见.这个插件作用于多页的网站,但是对于单页的布局有额外的功能.借助 CSS,还可以实现当前视 ...

  6. 转载:CSS3 Flexbox可视化指南

    0. 目录 目录 引言 正文 1 引入 2 基础 3 使用 4 弹性容器Flex container属性 41 flex-direction 42 flex-wrap 43 flex-flow 44 ...

  7. 《转载》使用CSS3 Flexbox布局

    Flexbox(中文版本可以点击这里)的布局是一个用于页面布局的全新CSS3模块功能.它可以把列表放在同一个方向(从左到右或从上到下排列),并且让这些列表能延伸到占用可用的空间.较为复杂的布局可以通过 ...

  8. 转:CSS3 Flexbox 布局介绍

    转:CSS3 Flexbox 布局介绍 Flexbox是一个用于页面布局的全新CSS3模块功能.它可以把列表放在同一个方向(从左到右或从上到下排列),并且让这些列表能延伸到占用可用的空间.较为复杂的布 ...

  9. 深入理解CSS3 Flexbox

    一.前言 Flexbox 是一个 CSS3 的盒子模型 ( box model ),顾名思义它就是一个灵活的盒子 ( Flexible Box ),为什麽最近这个属性才红起来呢?最主要也是因为 CSS ...

随机推荐

  1. 编译器开发系列--Ocelot语言3.类型名称的消解

    "类型名称的消解"即类型的消解.类型名称由TypeRef 对象表示,类型由Type 对象表示.类型名称的消解就是将TypeRef 对象转换为Type 对象. TypeResolve ...

  2. Greenplum 的分布式框架结构

    Greenplum 的分布式框架结构 1.基本架构 Greenplum(以下简称 GPDB)是一款典型的 Shared-Nothing 分布式数据库系统.GPDB 拥有一个中控节点( Master ) ...

  3. Configure a bridged network interface for KVM using RHEL 5.4 or later?

    environment Red Hat Enterprise Linux 5.4 or later Red Hat Enterprise Linux 6.0 or later KVM virtual ...

  4. [原创]ubuntu16.04LTS使用细节

    如何给自己安装的应用创建桌面图标 拿php开发神器phpstorm为例,找到可执行文件所在路径. 这里是/home/haive/PhpStorm/bin/phpstorm.sh 打开dash,搜索&q ...

  5. Windows Server 2008 R2常规安全设置及基本安全策略

    这篇文章主要介绍了Windows Web Server 2008 R2服务器简单安全设置,需要的朋友可以参考下 用的腾讯云最早选购的时候悲催的只有Windows Server 2008 R2的系统,原 ...

  6. 用 eric6 与 PyQt5 实现python的极速GUI编程(系列04)---- PyQt5自带教程:地址簿(address book)

    [引子] 在PyQt5自带教程中,地址簿(address book)程序没有完全实现界面与业务逻辑分离. 本文我打算用eric6+PyQt5对其进行改写,以实现界面与逻辑完全分离. [概览] 1.界面 ...

  7. 简约而不简单的Django新手图文教程

    本文面向:有python基础,刚接触web框架的初学者. 环境:windows7   python3.5.1  pycharm专业版  Django 1.10版 pip3 一.Django简介 百度百 ...

  8. centos6.X使用Apache+Mono搭建asp.net 环境

    mark 一下时间  2016年1月19日09:42:49 mono是指由Novell公司(由Xamarin发起,并由Miguel de lcaza领导的,一个致力于开创·NET在Linux上使用的开 ...

  9. 作为前端er,写在年末的一些话

    写惯了技术类的文章,这种总结和唠嗑型的我基本也就在年末才来一篇.说实话,这种轻松类的文章往往比技术类的要受欢迎的多,因为其受众更广,看起来也不烧脑. 说来愧疚,这一年其实产出有点低,大致就写了不到二十 ...

  10. ASP.NET MVC Model元数据(五)

    ASP.NET MVC Model元数据(五) 前言 在上一篇中我们描述了应用于Model上面的各种用于显示控制的特性类,在本篇中将详细的介绍这些特性类的应用,虽然它们跟Model元数据的直接关系并不 ...