一文详解CSS3中的Flex布局

本篇文章带大家了解一下css3中的flex布局,希望对大家有所帮助!

一文详解CSS3中的Flex布局

简介

什么是Flex布局

Flex是Flexible Box 的缩写,也称为弹性盒子布局。
Flex布局组成:

flex容器(flex container)flex项(flex items)主轴(main axis)交叉轴(cross axis

一文详解CSS3中的Flex布局

Flex布局的作用

在flex布局未出现前,网页布局的方式为标准流,浮动,定位等。在解决比较复杂的问题相对麻烦。【学习视频分享:css视频教程、web前端】

flex布局可以:

立即学习“前端免费学习笔记(深入)”;

自动弹性伸缩更轻松地设计灵活的响应式布局结构精确灵活控制块级盒子的布局方式在pc端和移动端都适用

Flex容器(父元素)属性

在使用flex布局之前首先定义 Flex 容器。

display:flex;

定义 Flex 容器后可以使用相应的属性, 改变子元素的布局方式,让子元素可以自动的挤压或拉伸。

相应属性:

1. justify-content  主轴元素对齐方式2. align-items      交叉轴元素对齐方式3. flex-direction   设置主轴方向4. flex-wrap        主轴一行满了换行5. align-content    交叉轴行对齐方式6. flex-flow        同时设置 flex-direction和 flex-wrap属性

1. justify-content

容器的justify-content属性可以设置子元素在主轴方向的对齐方式。(记得先display:flex;定义容器)

justify-content: center;//居中对齐

image.png

justify-content: space-between;//间距在子元素之间

image.png

justify-content: space-evenly;//主轴方向所有地方的间距都相等

image.png

justify-content: space-around;//间距加在子元素的两侧(中间大的是两个子元素的加在一起)

image.png
代码:

                  主轴对齐方式          * {        margin: 0;        padding: 0;      }      .box {        display: flex;        /* justify-content: center; */        /* justify-content: space-between; */        /* justify-content: space-evenly; */        justify-content: space-around;        height: 200px;        margin: auto;        border: 1px solid #000;      }      .box div {        width: 100px;        height: 100px;        background-color: pink;      }            
1
2
3

2. align-items

容器的align-items属性可以设置子元素在交叉轴方向的对齐方式。

由此我们可以设置将容器属性justify-contentalign-items 设置为居中,让元素实现完美居中。

align-items: center;//居中

image.png

align-items: stretch;//拉伸,默认值(现有状态,这里测试去掉子级的高度)

image.png

align-items: flex-start;//将子元素在容器顶部对齐

image.png

align-items: flex-end;//将子元素在容器底部对齐

image.png
代码:

                  交叉轴对齐方式          * {        margin: 0;        padding: 0;      }      .father {        display: flex;        /* 居中 */        /* align-items: center; */        /* 拉伸,默认值(现有状态,测试的时候去掉子级的高度) */        /* align-items: stretch; */        /* align-items: flex-start; */        align-items: flex-end;        height: 300px;        margin: auto;        border: 1px solid #000;      }      .father div {        /* 如果不设置宽,由内容撑开 */        width: 100px;        height: 100px;        background-color: pink;      }            
1
2
3

3. flex-direction

容器的flex-direction属性可以改变flex布局的主轴方向。flex主轴方向默认为水平向右方向。如果修改主轴方向,那么交叉轴方向也会与之改变。

flex-direction: column;//主轴方向为垂直方向(从上到下)

image.png

flex-direction: column-reverse;//主轴方向为垂直方向(从下到上)

image.png

flex-direction: row;//主轴方向为水平方向(从左到右)

image.png

flex-direction: row-reverse;//主轴方向为水平方向(从右到左)

image.png
修改主轴方向后实现垂直居中:

display:flex;flex-direction: column;justify-content: center;

image.png

4. flex-wrap

当定义flex容器之后,如果子元素过多超出主轴方向宽度,容器内的子元素会自动伸缩。
如:

                  弹性盒子换行          * {        margin: 0;        padding: 0;      }      .box {        display: flex;        height: 500px;        border: 1px solid #000;      }      .box div {        width: 100px;        height: 100px;        background-color: pink;      }            
1
2
3
4
5
6
7
8
9

image.png
解决:容器的flex-wrap属性可以让超出容器主轴方向的子元素换行显示。

flex-wrap: nowrap;//默认值,不换行flex-wrap: wrap;//换行,从上到下

image.png

flex-wrap: wrap-reverse;//换行,从下到上

image.png

5. align-content

容器的align-content属性可以调节子元素行的对齐方式(需要先设置换行之后)。

align-content: center;//居中对齐align-content: space-around;//间距加在子元素的两侧(中间大的是两个子元素的加在一起)align-content: space-between;//间距在子元素之间

前三者的属性跟主轴对齐方式一样就不再赘述。

align-content: stretch;拉伸,默认值(现有状态,这里测试去掉子级的高度)

image.png

6.flex-flow

flex-flow属性是用于同时设置 flex-directionflex-wrap 属性的简写属性。

flex-flow: row wrap;

Flex项(子元素)属性

我们可以设置相应属性让flex 容器的直接子元素成为弹性(flex)项目。(在使用flex布局之前首先定义 Flex 容器。

相应属性:

1. flex-grow2. flex-shrink3. flex-basis4. flex5. align-self6. order

1. flex-grow

使用flex-grow属性来定义弹性盒子内部子元素的放大比例(当所有子元素宽度之和小于父元素的宽度时子元素如何分配父元素的剩余空间)。

                  Document          .father{        display:flex;        width:200px;        height:150px;      }      .box1{        /* 没有设置宽度 */        background:red;        flex-grow: 1;      }      .box2{        background:blue;        flex-grow: 2;      }      .box3{        background:orange;        flex-grow: 1;      }            

image.png

2. flex-shrink

使用flex-shrink属性来定义弹性盒子内部子元素的缩小比例(当所有子元素宽度之和大于父元素的宽度时子元素如何缩小自己的宽度)。

                  Document          .father{        display:flex;        width:200px;        height:150px;      }      .box1{        width: 100px;        background:red;        flex-shrink: 1;      }      .box2{        width: 100px;        background:blue;        flex-shrink: 2;      }      .box3{        width: 100px;        background:orange;        flex-shrink: 1;      }            

image.png

3. flex-basis

使用flex-basis属性来设置子元素的宽度,默认值为auto(作用跟width一样,优先级比width高,就算width在后面也会显示flex-basis)。

4. flex

使用flex属性来同时设置flex-grow、flex-shrink、flex-basis这3个属性,flex属性就是一个复合属性。
实际应用一般用复合属性。
语法:

flex: grow shrink basis;//顺序不能改变,默认值为0 1 auto;

5. align-self

使用align-self属性设置子元素项目的对齐方式。

注意:align-self属性会覆盖容器的 align-items 属性所设置的对齐方式。

                  Document          .father{        display:flex;        width:200px;        height:150px;        align-items: center;        border: 1px solid #000;      }      .box1{        width: 100px;        height: 50px;        background:red;        align-self: flex-start;      }      .box2{        width: 100px;        height: 50px;        background:blue;      }      .box3{        width: 100px;        height: 50px;        background:orange;      }            
1
2
3

image.png

6. order

使用order属性来定义子元素的排列顺序。

                  Document          .father{        display:flex;        width:200px;        height:150px;      }      .box1{        width: 100px;        background:red;        order: 2;      }      .box2{        width: 100px;        background:blue;        order: 1;      }      .box3{        width: 100px;        background:orange;        order: 3;      }            
1
2
3

image.png

更多编程相关知识,请访问:编程视频!!

以上就是一文详解CSS3中的Flex布局的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1624989.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月24日 08:36:56
下一篇 2025年12月24日 08:37:12

相关推荐

  • 【整理总结】这些高级CSS技巧,你会几种?

    本篇文章带你玩转css,分享一些高级css技巧,快来看看你是否都会呀! 学习目标 能够使用精灵图能够使用字体图标能够写出 CSS 三角能够写出常见的 CSS 用户界面样式能够说出常见的布局技巧 精灵图 1. 为什么需要精灵图? 客户端要访问一个网页时,浏览器会向服务器发送请求,服务器接收到请求后,会…

    2025年12月24日 好文分享
    000
  • 带你使用CSS+jQuery实现一个文字转语音机器人

    本篇文章手把手带大家使用css+jquery实现一个文字转语音机器人,希望对大家有所帮助! 素材 机器人眼睛 【推荐学习:css视频教程、jQuery视频教程、web前端视频】 立即学习“前端免费学习笔记(深入)”; 页面布局 机器人样式参考了下图,通过css拼造型的方式进行实现。部分还原了设计图 …

    2025年12月24日
    000
  • 巧用纯CSS实现鼠标点击拖拽效果,让交互更加生动!

    本篇文章给大家介绍一下如何使用纯css实现鼠标点击拖拽效果,让交互更加生动,希望对大家有所帮助! 背景 鼠标拖拽元素移动,算是一个稍微有点点复杂的交互。 而在本文,我们就将打破常规,向大家介绍一种超强的仅仅使用纯 CSS 就能够实现的鼠标点击拖拽效果。【推荐学习:css视频教程】 在之前的这篇文章中…

    2025年12月24日 好文分享
    000
  • 聊聊CSS新特性content-visibility,助你提升页面渲染性能

    对于前端人员来讲,最令人头疼的应该就是页面性能了,当用户在访问一个页面时,总是希望它能够快速呈现在眼前并且是可交互状态。如果页面加载过慢,你的用户很可能会因此离你而去。所以页面性能对于前端开发者来说可谓是重中之重,其实你如果了解页面从加载到渲染完成的整个过程,就知道应该从哪方面下手了。 嗯,不要跑偏…

    2025年12月24日 好文分享
    000
  • 实例详解CSS渐变锯齿问题如何解决!

    本篇文章给大家介绍一下如何解决在使用渐变图形产生的锯齿问题,所谓css渐变锯齿消失术,你会了就能搞定,下面就带大家一起来看看怎么实现吧~希望对大家有所帮助! CSS 渐变锯齿消失术 在 CSS 中,渐变(Gradient)可谓是最为强大的一个属性之一。 但是,经常有同学在使用渐变的过程中会遇到渐变图…

    2025年12月24日 好文分享
    000
  • 带你吃透Flex布局的三个属性:flex-grow、flex-shrink、flex-basis

    本篇文章带大家深入了解css flex布局的三个属性:flex-grow、flex-shrink、flex-basis,希望对大家有所帮助! 【推荐学习:css视频教程、web前端】 在我们日常开发中,flex布局可以说是家常便饭,对于很多的我们来说(你懂得^_^),可能我们用的比较多的应该就是垂直…

    2025年12月24日 好文分享
    000
  • 手把手教你使用CSS实现酷炫六边形网格背景图

    本篇文章给大家分享不规则图形背景排版高阶技巧,介绍一下如何使用css实现酷炫六边形网格背景图,希望对大家有所帮助! 今天,收到一个很有意思的提问,如何实现类似如下的背景效果图: 嗯?核心主体是由多个六边形网格叠加形成。 立即学习“前端免费学习笔记(深入)”; 那么我们该如何实现它呢?使用纯 CSS …

    2025年12月24日 好文分享
    000
  • CSS技巧分享:纯CSS实现表格响应式布局

    如何利用纯css实现表格响应式布局?下面本篇文章就来给大家分享超 nice 的表格响应式布局小技巧,希望对大家有所帮助! 今天,遇到了一个很有意思的问题,一名群友问我,仅仅使用 CSS,能否实现这样一种响应式的布局效果: 简单解析一下效果: 立即学习“前端免费学习笔记(深入)”; 在屏幕视口较为宽时…

    2025年12月24日 好文分享
    000
  • 一文聊聊 9 个冷门的css属性

    可能我们有时候潜意识里认为, 当前实际开发中css属性已经足够用了, 但是前段时间突然想到:”会不会我们只是思维被限制在了常用的css属性中, 从而丧失了创造力”, 就像发明 车 之前大多数人会认为 骑马 已经足够快可以满足自己的需求了, 所以我专门整理了一下自己的学习笔记并…

    2025年12月24日 好文分享
    000
  • 如何写出优雅耐看的css代码?css命名小技巧分享!

    如果使用 css 有一段时间,那么您就会知道继承、特异性和命名是一些最难处理的事情。由于所有 css 都是全局的,随着代码库的增长,防止样式相互冲突并导致意外副作用变得越来越困难!下面本篇文章给大家分享一些css命名小技巧,让我们的代码优雅又耐看,希望对大家有所帮助! CSS命名——BEM BEM是…

    2025年12月24日
    000
  • 巧妙利用 CSS 实现文字二次加粗和多重边框效果

    如何二次加粗文字?如何实现多重边框?下面本篇文章就来给大家介绍一下巧妙利用 css 实现文字二次加粗和多重边框效果,希望对大家有所帮助! p { font-size: 64px; letter-spacing: 6px; font-weight: bold; -webkit-text-stroke:…

    2025年12月24日
    000
  • 聊聊为什么不应该依赖CSS 100vh?

    为什么不应该依赖css 100vh?下面本篇文章就来带大家聊聊原因,希望对大家有所帮助! 如果有一个文本和一个按钮,我们想让文本粘在上面,而按钮粘在下面!使用CSS Flex 似乎很容易做到。【推荐学习:css视频教程】 // HTML Lorem ipsum dolor sit amet… S…

    2025年12月24日 好文分享
    000
  • 手把手带你使用CSS Flex和Grid布局实现3D骰子(附代码)

    在前端面试中,经常会问到如何使用 css 实现骰子/麻将布局。下面本篇文章给大家介绍一下用css 创建一个 3d 骰子(flex和grid布局实现3d骰子)的方法,希望对大家有所帮助! 通过本文可以学到: 使用transform来实现3D形状;给 3D 骰子实现旋转动画;使用 Flex 布局来实现骰…

    2025年12月24日 好文分享
    000
  • CSS小技巧:利用transition保留hover状态

    如何保留 hover 的状态?下面本篇文章给大家介绍一下不借助javascript保留hover状态的方法,希望对大家有所帮助! 通常情况下,hover 是无法保存状态的。鼠标移入触发额外样式,一旦移出就还原了。 el:hover{ color: red} 这就意味着,如果需要保留hover的状态,…

    2025年12月24日 好文分享
    000
  • 看看这两个 CSS 面试题,考察你的基础!

    见微知著,本篇文章给大家分享两道有意思的 css 面试题,考察考察你的基础! 今天在论坛,有看到这样一道非常有意思的题目,简单的代码如下: First Paragraph 样式如下: p#a { color: green;}div::first-line { color: blue;} 试问,标签 …

    2025年12月24日 好文分享
    000
  • CSS媒体查询完全指南(Media Quires)

    本篇文章带大家学习css媒体查询(media quires),详细介绍了媒体查询语法定义,从三个具体布局例子学习媒体查询的使用技巧;并介绍了一些scss、css属性知识。 什么是SCSS Sass: Sass Basics (sass-lang.com) SCSS 是 CSS 的预处理器,它比常规 …

    2025年12月24日 好文分享
    000
  • 手把手带你使用单个标签+CSS实现复杂的棋盘布局

    最近,有群友问我,他们的一个作业,尽量使用少的标签去实现这样一个象棋布局: 他用了 60 多个标签,而他的同学,只用了 6 个,问我有没有办法尽可能的做到利用更少的标签去完成这个布局效果。 其实,对于一个页面的布局而言,标签越少不一定是好事,我们在考虑 DOM 的消耗的同时,也需要关注代码的可读性,…

    2025年12月24日 好文分享
    000
  • CSS实用小技巧:利用视差实现酷炫交互动效

    本文将介绍利用 CSS 实现滚动视差效果的一个小技巧,并且,利用这个技巧来制作一些有意思的交互特效。【学习视频分享:css视频教程、web前端】 关于使用 CSS 实现滚动视差效果,在之前有一篇文章详细描述过具体方案 – CSS 实现视差效果,感兴趣的同学可以先看看这篇文章。 这里,会运…

    2025年12月24日 好文分享
    000
  • CSS新特性学习:方向裁切overflow:clip

    本篇文章将介绍一个新特性,从 chrome 90 开始,overflow 新增的一个新特性 — overflow: clip,使用它,轻松的对溢出方向进行控制。 overflow: clip 为何 首先,简单介绍下 overflow: clip 的用法。 overflow: clip: …

    2025年12月24日 好文分享
    000
  • 原来利用纯CSS也能实现拼图游戏!

    原来利用纯css也能实现拼图游戏!本篇文章就来给将向大家介绍一种将多个 css 技巧运用到极致的技巧,利用纯 css 实现拼图游戏。 本技巧源自于 Temani Afif 的 CodePen CSS Only Puzzle game。一款完全由 CSS 实现的拼图游戏。 我们要做的,就是将散落的图片…

    2025年12月24日 好文分享
    000

发表回复

登录后才能评论
关注微信