详解flex布局

2023-05-16

文章目录

  • 一、flex布局是什么?
  • 二、基本概念
      • flex 容器
  • 三、容器的属性
      • 1. flex-direction属性决定主轴的方向(即项目的排列方向)
      • 2. flex-wrap属性定义如果一条轴线排不下,如何换行。
      • 3. flex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap
      • 4. justify-content属性定义了项目在主轴上的对齐方式
      • 5. align-items属性定义项目在交叉轴上如何对齐
      • 6. align-content属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。
  • 四、项目的属性
      • 1. order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0
      • 2. flex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大
      • 3. flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。
      • 4. flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小
      • 5. flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选。
      • 6. align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch
  • 四、flex实例运用
      • 1. 单个元素水平居中
      • 1. 多个元素水平居中
      • 3. 多个元素水平分布
      • 4. 移动主轴的情况下水平居中
      • 5. 垂直居中
          • 1. 改变主轴方向
          • 2. 设置剩余空间分配
      • 使用flex设置多个元素垂直居中的时候为
      • 使用flex 设置多个元素水平居中

一、flex布局是什么?

flex:弹性布局
任何一个容器都可以指定为 flex 布局

.box{
  display: flex;
}

行内元素也可以使用flex 布局

.box{
  display: inline-flex;
}

对于webkit 内核的浏览器,必须加上-webkit 前缀

.box{
  display: -webkit-flex; /* Safari */
  display: flex;
}

注意: 设置为flex 布局之后,子元素的float 、clear、 vertical-align(垂直文本对齐)都将失效

二、基本概念

flex 容器

在这里插入图片描述

  • 容器存在两根轴,水平的主轴(main axis)和垂直的交叉轴(cross axis)
  • 主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end
  • 交叉轴的开始位置叫做cross start,结束位置叫做cross end
  • 项目默认沿主轴排列。单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size

三、容器的属性

1. flex-direction属性决定主轴的方向(即项目的排列方向)

.box {
  flex-direction: row | row-reverse | column | column-reverse;
}
  • row(默认值):主轴为水平方向,起点在左端。
  • row-reverse:主轴为水平方向,起点在右端。
  • column:主轴为垂直方向,起点在上沿。
  • column-reverse:主轴为垂直方向,起点在下沿。

详解:
https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox

2. flex-wrap属性定义如果一条轴线排不下,如何换行。

.box{
  flex-wrap: nowrap | wrap | wrap-reverse;
}
  • nowrap(默认):不换行。
    在这里插入图片描述
  • wrap:换行,第一行在上方。
    在这里插入图片描述
  • wrap-reverse:换行,第一行在下方。
    在这里插入图片描述

3. flex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap

.box {
  flex-flow: <flex-direction> || <flex-wrap>;
}

4. justify-content属性定义了项目在主轴上的对齐方式

.box {
  justify-content: flex-start | flex-end | center | space-between | space-around;
}
  • flex-start(默认值):左对齐
  • flex-end:右对齐
  • center: 居中
  • space-between:两端对齐,项目之间的间隔都相等。
  • space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。
  • space-evenly:均匀分布
    在这里插入图片描述

5. align-items属性定义项目在交叉轴上如何对齐

.box {
  align-items: flex-start | flex-end | center | baseline | stretch;
}
  • flex-start:交叉轴的起点对齐。
  • flex-end:交叉轴的终点对齐。
  • center:交叉轴的中点对齐。
  • baseline: 项目的第一行文字的基线对齐。
  • stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。

在这里插入图片描述

6. align-content属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。

.box {
  align-content: flex-start | flex-end | center | space-between | space-around | stretch;
}
  • flex-start:与交叉轴的起点对齐。
  • flex-end:与交叉轴的终点对齐。
  • center:与交叉轴的中点对齐。
  • space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。
  • space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。
  • stretch(默认值):轴线占满整个交叉轴。
    在这里插入图片描述

四、项目的属性

  • order
  • flex-grow
  • flex-shrink
  • flex-basis
  • flex
  • align-self

1. order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0

2. flex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大

在这里插入图片描述
如果所有项目的flex-grow属性都为1,则它们将等分剩余空间(如果有的话)。如果一个项目的flex-grow属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍。

3. flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。

在这里插入图片描述
如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。
负值对该属性无效。

4. flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小

.item {
  flex-basis: <length> | auto; /* default auto */
}

它可以设为跟width或height属性一样的值(比如350px),则项目将占据固定空间

5. flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选。

该属性有两个快捷值:auto (1 1 auto) 和 none (0 0 auto)。
建议优先使用这个属性,而不是单独写三个分离的属性,因为浏览器会推算相关值。

6. align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch

.item {
  align-self: auto | flex-start | flex-end | center | baseline | stretch;
}

在这里插入图片描述

本文来自阮一峰:http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html

四、flex实例运用

1. 单个元素水平居中

    <style>
    *{padding: 0;margin: 0;}
    .box{
        border: 1px solid black;
        display: flex;
        justify-content: center;
    }
    .box1{
        width: 100px;
        height: 100px;
        background-color: darkcyan;
    }
    </style>
</head>
<body>
    <div class="box">
        <div class="box1">1</div>
    </div>
</body>

在这里插入图片描述

1. 多个元素水平居中

<style>
    *{padding: 0;margin: 0;}
    .box{
        border: 1px solid black;
        display: flex;
        justify-content: center;
    }
    .box1{
        width: 100px;
        height: 100px;
        background-color: darkcyan;
        border: 1px solid yellow;
    }
    </style>
</head>
<body>
    <div class="box">
        <div class="box1">1</div>
        <div class="box1">2</div>
        <div class="box1">3</div>
    </div>

在这里插入图片描述

3. 多个元素水平分布

<style>
*{padding: 0;margin: 0;}
    .box{
        border: 1px solid black;
        display: flex;
        justify-content: space-between;
    }
    .box1{
        width: 100px;
        height: 100px;
        background-color: darkcyan;
        border: 1px solid yellow;
    }
    </style>
</head>
<body>
    <div class="box">
        <div class="box1">1</div>
        <div class="box1">2</div>
        <div class="box1">3</div>
    </div>
  1. justify-content: center;
    在这里插入图片描述

  2. justify-content: flex-start;在这里插入图片描述

  3. justify-content: flex-end;
    在这里插入图片描述

  4. justify-content: space-between;
    在这里插入图片描述

  5. justify-content: space-around;
    两个相邻间隔是自己的两倍
    在这里插入图片描述

  6. justify-content: space-evenly;
    均匀分布
    在这里插入图片描述

4. 移动主轴的情况下水平居中

为父级元素设置高度

  1. align-items: center
 <style>
    *{padding: 0;margin: 0;}
    .box{
        border: 1px solid black;
        display: flex;
        justify-content: space-evenly;
        align-items: center;
        height: 500px;
    }
    .box1{
        width: 100px;
        height: 100px;
        background-color: darkcyan;
        border: 1px solid yellow;
    }
    </style>
</head>
<body>
    <div class="box">
        <div class="box1">1</div>
        <div class="box1">2</div>
        <div class="box1">3</div>
    </div>

在这里插入图片描述

  1. align-items: flex-end;
    在这里插入图片描述
  2. align-items: flex-start;在这里插入图片描述

5. 垂直居中

<style>
    *{padding: 0;margin: 0;}
    .box{
        border: 1px solid black;
        display: flex;
        align-items: center;
        height: 500px;
        flex-direction: column;
    }
    .box1{
        width: 100px;
        height: 100px;
        background-color: darkcyan;
        border: 1px solid yellow;
    }
    </style>
</head>
<body>
    <div class="box">
        <div class="box1">1</div>
        <div class="box1">2</div>
        <div class="box1">3</div>
    </div>
</body>

在这里插入图片描述

1. 改变主轴方向
  1. align-items: flex-end;
    在这里插入图片描述
  2. align-items: flex-start;
    在这里插入图片描述
2. 设置剩余空间分配
  1. justify-content: center;
.box{
        border: 1px solid black;
        display: flex;
        align-items: center;
        height: 500px;
        flex-direction: column;
        justify-content: center;
    }

在这里插入图片描述
2. justify-content:space-around;
在这里插入图片描述
3. justify-content:space-between;
在这里插入图片描述
4. justify-content:space-evenly;
在这里插入图片描述
5. justify-content:flex-start;
在这里插入图片描述
6. justify-content:flex-end;
在这里插入图片描述

使用flex设置多个元素垂直居中的时候为

  1. 设置父元素为:display:flex
  2. 设置主轴的方向:flex-direction: column;
  3. 设置主轴位置:align-items: center;(左中右)
  4. 如果想要调整剩余空间则使用:justify-content: center;

使用flex 设置多个元素水平居中

  1. 设置设置主轴的方向:flex-direction: row或者不设置flex-direction(默认为row)
  2. 设置剩余空间分布:justify-content: center;
  3. 如果需要设置主轴位置可以设置:align-items: center/flex-end/flex-start(上中下)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

详解flex布局 的相关文章

  • 弹性盒子flex

    display flex flex direction属性决定主轴的方向 即项目的排列方向 flex direction row row reverse column column reverse row 默认值 主轴为水平方向 起点在左端
  • 介绍Flex UI 测试工具:FlexMonkey

    相信许多人都知道Flex的单元测试工具 FlexUnit或者ASUnit 但是对于UI测试工具可能很少有人了解 那么目前有什么FlexUI测试工具呢 答案是FlexMonkey FlexMonkey是一个Flex应用的测试框架 他可以提供对
  • 在工作中学习,在学习中工作

    2011年八月第二周 时间还是和以前一样过的那么快 一周的时间转眼就过去了 这一周 对工作中所需的知识点进行了两天的培训 其余的时间都是Flex及其开源框架Caringorm的学习 因为之前没有接触过Flex 所以现在的学习是一种 即学式
  • [Flex&Bison]协同工作简介

    1 本节主要演示一个简单的模拟bc计算器的程序 主要功能就是解析整型数的四则运算 先给出bison程序 include
  • Flex学习笔记2——第一个Flex程序

    Flex的调试 1 使用trace 相当于alert 2 使用firefox调试 下载debug版本的firefox flash player插件 下载插件HttpFox FlashTracer Cache Status 三个插件 Flas
  • Flex 发布模式

    Flex 平台支持范围广泛的发布模式 它们是 1 客户端模式 即应用程序只运行在客户端上而不需要服务器资源 2 使用简单的RPC 访问服务器数据 即使用HTTPService HTTP GET 或POST 请求 和WebService 通过
  • flex&bison编写语法分析器

    使用flex和bison 对c语言代码块进行词法分析 识别词法错误 按照c 语法规则进行文法分析 并形成c语言代码块的语法树 syntax tree 并将语法树按照特定的格式打印出来 如何编译 两种方法 1 使用make命令 先将要执行的所
  • 第二天weex——flex布局

    flex布局 前言 之间陆陆续续的写过前端页面 对于布局方式几乎是不懂的 后来接触了flex布局就打算认真学习一番 对于flex布局是一种灵活布局 弹性盒子 flex 关于flex它有两条轴线 flex direction定义的是主轴线与之
  • flex 子元素占满剩余高度 与 flex:1 的子元素 overflow:hidden 失效

    这几天使用flex开发大屏 遇到一个印象比较深的问题就是flex的子元素 在其他兄弟元素的高度不定的情况下 如何占满父元素的剩余空间 效果图 要点就是 1 父元素要设置 display flex 2 父元素的主轴方向设置为从上到下 flex
  • AS3.0(ActionScript3.0)的开发工具

    转自Adobe 根据项目需求和可用资源 您可能希望使用几个工具中的一个 或结合使用多个工具 来编写和编辑 ActionScript 代码 Flash 创作工具除了创建图形和动画的功能之外 Adobe Flash CS3 Profession
  • 构建一个Flex程序

    构建一个Flex程序 Flex定义了一个基于组件的开发模型 从而我们可以用来构建我们的程序 为了高效的设计与构建我们的程序 我们应该熟悉这个模型 以及程序开发步骤与布署过程 在这一章描述了我们用来创建一个程序的开发过程 在这一章所包含的如下
  • 用FLEX实现屏幕快照及下载 flex导出excel文件

    用FLEX实现屏幕快照及下载 Flex Flash Flex2 Flex3 GgNET 01月 31st 2008 2 53am 这种方式 在服务器端不会在磁盘上生成图片FLEX代码public function printMap void
  • CSS布局flex布局 对齐 等分 均分 详解

    一切都始于这样一个问题 怎样通过 CSS 简单而优雅的实现水平 垂直同时居中 记得刚开始学习 CSS 的时候 看到float属性不由得感觉眼前一亮 顺理成章的联想到 Word 文档排版中用到的的左对齐 右对齐和居中对齐 然而很快就失望的发现
  • 未来10年互联网的十大发展趋势

    Written by Richard MacManus 刘明君译 我们已经现在进入被称为web 2 0的网络时代 这个阶段互联网的特征包括搜索 社区化网络 网络媒体 音乐 视频等 内容聚合和聚集 RSS mashups 一种交互式Web 应
  • 使用Flex图表组件

    使用Flex图表组件 以图表或是图的方式显示数据的能力可以使得Flex程序用户的数据交互更为容易 与仅显示简单的数字数据表不同 我们可以显示条状图 饼图 线图或是其他类型的图表 并且可以使用颜色 标题以及二维图形来表示我们的数据 在这一部分
  • Lex和Yacc应用方法(一).初识Lex

    Lex和Yacc应用方法 一 初识Lex 草木瓜 20070301 Lex Lexical Analyzar 词法分析生成器 Yacc Yet Another Compiler Compiler编译器代码生成器 是Unix下十分重要的词法分
  • CSS开发技巧(四):解决flex多行布局的行间距异常、子元素高度拉伸问题

    在使用flex布局时 若出现换行 有两种较为特殊的现象是值得我们研究的 子元素高度被拉伸 其实际高度大于它的内容高度 各行子元素之间的行间距过大 甚至我们根本没有给子元素设置margin 现在我们将要探究引发这两种现象的原因及解决方案 一
  • Flex中字符串String按照格式转化为日期Date的方法

    在Flex中 要通过传入时间的字符串和格式字符串的方式来转换出Date Flex本身没有完善的方法 不知道Adobe在想什么 这么简单实用的功能都没有 回想起来 还是java神马的好 在网上找了好久都没有完善的解决方案 最后偶然发现Date
  • SpringBoot在K8s下实现优雅停机

    在K8s中 当我们实现滚动升级之前 务必要实现应用级别的优雅停机 否则滚动升级时 还是会影响到业务 本文介绍SpringBoot应用实现优雅停机 此次教程基于SpringBoot 2 5 0 1 加入必要依赖
  • TextSymbol使用方法

    private var grapbiaozhu GraphicsLayer new GraphicsLayer grapbiaozhu clear map addLayer grapbiaozhu var gra Graphic new G

随机推荐

  • 设置vnc窗口大小及显示桌面

    vncserver 0 geometry 1600x1200 vncserver 1 geometry 1440x900 注意 xff1a 上面的x不是 vnc 远程登录linux怎么不会显示图形界面 修改 vnc xstartup文件 b
  • 神策数据 https://dl.bintray.com/zouyuhan/maven 502 Bad Gateway

    原因 xff1a 由于网站 https dl bintray com 停运 导致 Sensors Analytics maven 库地址无法使用 xff0c 这个是旧版本的集成SDK方法 xff0c 官网还保留着 改用新版本的方法即可 神策
  • C++ strtok()无法截取连续两个分隔符之间的空字符串, 解决方法

    前言 问题描述 与前台约定按顺序解析对应信息 如果中间出现空数据 或者出现连续两个分隔符 strtok就会出问题 看下面这个例子 1 include lt string h gt 2 include lt stdio h gt 3 4 in
  • msgId与offsetMsgId区别与rocketmqConsole支持的坑

    背景 在测试环境的一台机子上启动了多个mq实例 xff0c 某一天同事说投递到test环境的数据 xff0c 可以在test4环境上查到 xff0c 这让人有点担心 xff0c 担心投递的数据会被别的消费 经过了解 xff0c 同事提供相关
  • webpack使用和踩过的坑

    使用process argv 获取命令行使用的参数 span class hljs comment 判断是否带production参数 xff0c production会压缩js span span class hljs keyword v
  • DOCKER权限设置:LINUX新增用户添加ROOT权限

    一 首先在LINUX下创建新用户 创建用户username adduser username 修改用户username的密码 passwd username 二 为用户添加ROOT权限 方法一 xff1a 修改 etc sudoers 文件
  • 安卓开发后台3

    1 开发步骤 xff1a 创建一个后台运行的服务启动应用的时候启动服务在onCreate 调用的时候 创建一个系统的服务 并获取电话的状态 span class token variable TelephonyManagermanager
  • putty + Xming windows 远程连接、打开Linux图形界面

    putty 43 Xming windows 远程连接 打开Linux图形界面 由于我是windows端的 xff0c 连接同事的Ubuntu xff0c 所以Linux那端的配置我不是太了解 xff0c 网上应该有相关教程 xff0c 我
  • Docker (二)【镜像拉取】

    二 安装镜像 2 1 安装Nginx span class token comment 搜索Nginx span span class token function docker span search nginx span class t
  • PX4学习笔记之uorb

    PX4学习笔记之uorb 添加topic以及消息的发布 订阅 说明 添加自定义 topic xff0c 简单例子实现new topic 的publish和subscribe 平台 Pixhawk PX4原生固件Firmware 要求 学会p
  • 使用python 启动一个web服务

    背景 xff0c 有一台不能直连的服务器 xff0c 网络是通的 xff0c 需要向服务器上面传文件 xff0c 通过http是最简单的方式 之前使用 anywhere xff0c 但是nodejs安装对于一般人还有一些难度 使用 pyth
  • 启动zookeeper问题排查方式

    测试zookeeper集群搭建时 xff0c 虽然启动结果显示了 STARTED xff0c 但是实际上zookeeper服务并没有启动 xff0c 如下 xff1a span class token punctuation span ro
  • ubuntu 20.04 远程桌面(win10 控制 Ubuntu 20.04)

    参照这篇 https blog csdn net lucky7213 article details 107008246 Windows端注意点 xff1a 启动远程桌面连接 开始菜单中可以找到 xff0c 找不到搜索一下 xff0c 输入
  • FreeRTOS 列表和列表项

    列表 List t gt uxNumberOfItems 列表项个数 gt pxIndex 当前列表项指针 gt xListEnd 列表的尾节点 迷你列表项 struct xMINI LIST ITEM gt xItemValue 列表项值
  • 1、AUTOSAR简介

    AUTOSAR xff08 AUTotmotive Open System ARchitecture xff09 汽车开放系统架构是由全球各大汽车整车厂 汽车零部件供应商 汽车电子软件系统公司联合建立的一套标准协议 xff0c 是对汽车技术
  • Antd4之form表单数据回显

    文章目录 一 函数中设置数据回显 xff0c 使用useForm xff08 1 xff09 使用useForm xff08 2 xff09 在form表单中定义form 二 不使用useForm antd4摒弃了antd3的 getFie
  • Antd之实现form label文字左/右对齐

    文章目录 一 设置文字以冒号分割右对齐二 设置文字以冒号分割左对齐 一 设置文字以冒号分割右对齐 类似下面这种情况 代码 xff1a span class token keyword const span formItemLayout sp
  • AntdPro上传文件之Antd各个版本的对比

    文章目录 一 antd3上传图片二 antd4上传文件三 使用antdPro 之前一直在使用antd上传文件 xff0c 图片 xff0c 从antd3到antd4再到antdPro xff0c 总结一下经验吧 一 antd3上传图片 这里
  • 详解cors跨域

    文章目录 同源策略cors基本概念cors跨域方式简单请求 simple request非简单请求 预检请求 CORS兼容情况CORS总结 同源策略 在以前的一篇博客中有介绍 xff0c 同源策略是一种安全机制 xff0c 为了预防某些恶意
  • 详解flex布局

    文章目录 一 flex布局是什么 xff1f 二 基本概念flex 容器 三 容器的属性1 flex direction属性决定主轴的方向 xff08 即项目的排列方向 xff09 2 flex wrap属性定义如果一条轴线排不下 xff0