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

   2023-03-08 学习力0
核心提示:CSS3 Flexbox轻松实现元素的水平居中和垂直居中网上有很多关于Flex的教程,对于Flex的叫法也不一,有的叫Flexbox,有的叫Flex,其实这两种叫法都没有错,只是Flexbox旧一点,而Flex是刚出来不久的东西而已,为了方便说明,赶上新技术,下面我就把这种布局叫Fl

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

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

 

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

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

 

1.单个元素水平居中

CSS3 Flexbox轻松实现元素的水平居中和垂直居中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轻松实现元素的水平居中和垂直居中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轻松实现元素的水平居中和垂直居中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轻松实现元素的水平居中和垂直居中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轻松实现元素的水平居中和垂直居中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轻松实现元素的水平居中和垂直居中

 
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • css实现弹出框 css弹出菜单
    弹出框也是前端里面经常使用的一个应用场景了,最开始想到的是用js实现这个效果,看到codepen上面有用css实现的。其实就是用到了css里面的一个:target选择器+visibility属性。URL 带有后面跟有锚名称 #,指向文档内某个具体的元素。这个被链接的元素就是目标
    03-08
  • jfinal框架页面找不到相关css,js文件404
    在JFinalConfig中添加配置: @Overridepublic void configHandler(Handlers handlers) {handlers.add(new ContextPathHandler());}页面中添加:base href="${CONTEXT_PATH}/"/之前页面找不到资源,把tomcat工程路径去掉了(path=""),这样暂时解决了问题推荐
    03-08
  • 纯CSS3实现的一些酷炫效果 css实现炫酷背景
    纯CSS3实现的一些酷炫效果 css实现炫酷背景
      之前在网上看到一些用纯CSS3实现的酷炫效果,以为实现起来比较困难,于是想看看具体是怎么实现的。一、笑脸猫动画实现效果如下:这个实现起来确实比较麻烦,很多地方需要花时间,有耐心地调整。1.先看下页面结构:bodydiv class="container"!-- 脸 --div
    03-08
  • 移动端CSS底部固定和fixed定位在ios上的bug
    fixed定位在ios上的bugcss三栏布局假设我们页面的 HTML 结构是这样: div class="wrapper"div class="content"!-- 页面主体内容区域 --/divdiv class="footer"!-- 需要做到 Sticky Footer 效果的页脚 --/div/div方法1.:absolute通过绝对定位处理应该是常见的
    03-08
  • css实现图片翻转 css使图片旋转
    !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"html xmlns="http://www.w3.org/1999/xhtml"headmeta http-equiv="Content-Type" content="text/h
    03-08
  • css3 渐变gradient
    css3 渐变gradient
           CSS3引入了背景渐变、background-origin、background-clip、background-size、遮罩等多个属性。这里将记录我从网上和书上学习的笔记和心得体会。   首先是渐变,我这里讲述的渐变不仅仅是背景色的渐变还将包括透明度渐变。以前做这种背景色渐
    03-08
  • CSS3中的px,em,rem,vh,vw辨析 css3 vw
    1、px:像素,精确显示2、em:继承父类字体的大小,相当于“倍”,如:浏览器默认字体大小为16px=1em,始终按照div继承来的字体大小显示,进场用于移动端          em换算工具:http://www.runoob.com/tags/ref-pxtoemconversion.html3、rem:与em类似,
    03-08
  • gulp自动化构建工具--自动编译less为css--学习
     1.安装      命令:npm install gulp-less 或者 cnpm install gulp-less2.编写文件 //获取gulpvar gulp = require('gulp')//获取gulp-less模块var less = require("gulp-less")//编译less//在命令行输入gulp less启动此任务gulp.task('less',function(){
    03-08
  • 关于动画Animate.css的使用方法
        首先贴个官网:https://daneden.github.io/animate.css/  1、引入animate css文件 1 head2 link rel="stylesheet" href="animate.min.css"3 /head   2、给指定的元素加上指定的动画样式名div class="animated bounceOutLeft"/div    这里包
    03-08
  • selenium Firefox禁用js,css.falsh,缓存,设置
    1 profile = FirefoxProfile() 2 #请求头 3 #profile.set_preference("general.useragent.override", util.http_agent_insert(xinhuaUtil.agent_path)) 4 # 激活手动代理配置(对应着在 profile(配置文件)中设置首选项) 5 profile.set_preference("network
    03-08
点击排行