`
天梯梦
  • 浏览: 13762461 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

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

 

 

 

分享到:
评论

相关推荐

    CSS实现完美垂直居中 - 蓝色理想

    CSS Grid布局允许更精细的控制,使用`align-items: center`和`justify-items: center`,或者`grid-template-areas`配合特定的占位符,可以实现元素的垂直和水平居中。 7. **使用伪元素进行居中**: 有时可以通过...

    CSS2.1如何让块元素垂直水平居中.rar

    对于水平和垂直居中,`display: flex`或`display: grid`在CSS3中非常有用,但在这里我们将专注于CSS2.1的解决方案。 ### 已知宽高块级元素的居中方法: 1. **使用绝对定位**: - 设置父元素`position: relative;`...

    css3代码属性Flexbox实现内部div上下居中效果.zip

    这个压缩包“css3代码属性Flexbox实现内部div上下居中效果.zip”包含了如何使用Flexbox来让内部div在垂直方向上居中的实例。下面将详细介绍Flexbox的相关概念和如何实现此效果。 1. **Flexbox基本概念** - **Flex...

    css使用flexbox布局容器内多元素水平居中

    在CSS布局中,Flexbox(弹性盒模型)是一种强大的工具,尤其在处理复杂布局时,如容器内元素的水平居中。本篇文章将详细介绍如何利用Flexbox实现这一目标。 首先,要实现容器内多元素的水平居中,我们需要在父元素...

    css3块元素居中

    现代CSS提供了更强大的布局工具,如Flexbox和Grid,它们都可以轻松实现元素的水平和垂直居中。例如,在Flexbox中,只需在父容器上设置`display: flex;`、`justify-content: center;`和`align-items: center;`即可。 ...

    图片水平垂直居中

    这样,图片将在其容器内水平和垂直居中。 另外,如果您的项目需要支持较旧的浏览器,可以使用CSS的绝对定位方法。这种方法需要设置容器为相对定位(`position: relative`),然后将图片设置为绝对定位,并将其`top`...

    css3代码属性Flexbox实现内部div上下居中效果

    效果描述: 首先还是那句老话,非常幸运我们现在可以使用CSS3布局。... 今天给大家推荐的只是它实现内元素垂直居中的案例,以后还会推荐。。。 使用方法: 给你需要居中的div的父辈div增加附件中关键样式即可

    CSS 图片水平垂直居中于DIV

    总之,实现CSS中的图片水平垂直居中是一个常见的挑战,但通过理解不同的布局模式和定位方式,我们可以灵活地选择合适的方法来解决这个问题。无论是在简单的网页还是复杂的响应式设计中,这些技巧都将大有裨益。

    利用CSS3的flexbox实现水平垂直居中与三列等高布局

    因为对于三列等高自适应布局和水平垂直居中对齐需要一些对css3中flexbox基础概念的理解,所以会对flexbox的概念做一个简单的介绍,以为后面的实例做一个铺垫。本人一直认为,不管学习任何知识,对于概念的理解都十分...

    使用bootstrap的H5页面登录框自适应水平居中、垂直居中

    总的来说,实现Bootstrap的H5页面登录框自适应水平居中和垂直居中,需要对Bootstrap的栅格系统、CSS布局技术(如Flexbox或Grid)以及可能的JavaScript/jQuery处理有一定理解。通过灵活运用这些技术,你可以创建出...

    DIV+CSS DIV居中布局

    例如,垂直居中和水平居中可以分别使用Grid和Flexbox来实现。 在提供的`demo.html`文件中,可能包含了这些居中布局的示例代码。`logo.png`可能是用来测试这些布局效果的图片。通过查看和分析这些文件,可以进一步...

    DIV+CSS 图片垂直居中效果

    /* 水平和垂直居中 */ } ``` 5. **纯CSS的百分比高度和负margin方法** 当图片高度未知时,可以利用负的`margin-top`来实现垂直居中: ```css .container { display: inline-block; position: relative; } ...

    图层中图片垂直水平居中

    CSS Grid布局提供了更为精细的二维网格系统,同样可以轻松实现元素的居中对齐。 ```css .container { display: grid; place-items: center; /* 垂直和水平居中 */ } ``` 3. 绝对定位法 对于固定尺寸的图片,可以...

    css实现垂直居中

    CSS Grid提供了一个二维布局系统,允许你轻松地在行和列中定位元素。要垂直居中,可以设置`align-items: center`。同时,如果你想要水平居中,可以设置`justify-items: center`。例如: ```css .container { ...

    css设置未知尺寸图片的水平和垂直居中

    以上就是关于使用CSS设置未知尺寸图片在容器中水平和垂直居中的方法。这些技术不仅适用于图片,也广泛应用于其他需要居中显示的元素。通过源码和工具的实践,你可以更好地理解和掌握这些技巧,从而提高网页设计的...

    css水平居中4种方式

    无论是图片、宽度和高度固定的元素,还是自适应的动态元素,都有多种方法可以实现水平居中。以下是标题所提及的“css水平居中4种方式”的详细解析: 1. **Flexbox布局** Flexbox(弹性盒布局)是现代CSS布局的一种...

    js实现水平垂直居中

    本话题将深入探讨如何使用纯JavaScript实现水平垂直居中的方法。 一、固定宽高的元素居中 对于具有固定宽度和高度的元素,可以使用JavaScript动态设置元素的`margin`属性来实现居中。以下是一种简单的方法: ```...

    DIV水平垂直居中

    在网页设计中,让一个`div`元素在页面上实现水平和垂直居中是一项常见的需求。这个主题,"DIV水平垂直居中",通常涉及到CSS布局技术和可能的JavaScript辅助方法。在这个场景中,描述提到使用了jQuery来实现,这是一...

Global site tag (gtag.js) - Google Analytics