Flexbox弹性盒子详解

news2024/10/11 11:26:29

弹性盒子模型详解

    • Flex弹性盒子模型详解
      • Flex布局的基本概念
      • Flex布局的常见属性及用法
        • 1. 主轴方向
        • 2. 主轴换行方式
        • 3. flex-flow(分开写更好)
        • 4. 主轴对齐方式
        • 5. 侧轴对齐方式
          • 5.1 一行的情况
          • 5.2 多行的情况
        • 6. 伸缩性
          • 6.1 flex-basis
          • 6.2 flex-grow(伸)
          • 6.3 flex-shrink(缩)
        • 7. flex复合属性
        • 8. 项目排序
        • 9. 单独对齐(几乎不用)
    • 代码案例
      • 案例一:子元素居中
      • 案例二:自适应布局

Flex弹性盒子模型详解

在网页布局中,传统的CSS布局方式,如div+css布局,主要依赖盒子模型,通过positionfloatdisplay等方式实现。然而,这些方式对于某些特殊布局,如垂直居中布局,却难以达到理想效果。为了解决这一问题,W3C于2009年提出了一种新的布局方案——Flex布局(Flexible Box,简称flexbox)。Flex布局的出现,提供了一种更加简便、完整且响应式的页面布局方式。

Flex布局的基本概念

Flex布局的核心是弹性容器(Flex container)和弹性子元素(Flex item)。弹性容器通过设置display属性的值为flexinline-flex来定义。弹性容器内包含了一个或多个弹性子元素,这些子元素自动成为容器成员,其布局将受到容器属性的控制。

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

Flex布局的常见属性及用法

1. 主轴方向

属性名:flex-direction

  • row(默认值):主轴为水平方向,从左到右排列。
  • row-reverse:主轴为水平方向,从右到左排列。
  • column:主轴为垂直方向,从上到下排列。
  • column-reverse:主轴为垂直方向,从下到上排列。

flex-direction: row;

在这里插入图片描述

flex-direction: row-reverse;

在这里插入图片描述

flex-direction: column;

在这里插入图片描述

flex-direction: column-reverse;

在这里插入图片描述
方块之间的空隙是设置了margin:10px;忘记改掉了,不影响效果

2. 主轴换行方式

属性名:flex-wrap

  • nowrap(默认值):不换行,所有项目在同一行显示,可能导致项目被压缩。
  • wrap:正常换行,第一行在最上面。
  • wrap-reverse:反向换行,第一行在最下面。

flex-wrap: nowrap;

在这里插入图片描述

flex-wrap: wrap;

在这里插入图片描述

flex-wrap: wrap-reverse;

在这里插入图片描述

3. flex-flow(分开写更好)

flex-flow 是一个复合属性,复合了 flex-direction 和 flex-wrap 两个属性。 值没有顺序要
求。
flex-flow: row wrap;

4. 主轴对齐方式

属性名:justify-content

  • flex-start:项目沿主轴左对齐。
  • flex-end:项目沿主轴右对齐。
  • center:项目沿主轴居中对齐。
  • space-between:项目之间的间隔相等,首尾项目与容器边缘紧贴。
  • space-around:每个项目两侧的间隔相等,首尾项目与容器边缘有一定距离。
  • space-evenly:均匀排列每个元素,所有间隔相等。

justify-content: flex-start;

在这里插入图片描述

justify-content: flex-end;

在这里插入图片描述

justify-content: center;

在这里插入图片描述

justify-content: space-between;

在这里插入图片描述

justify-content: space-around;

在这里插入图片描述

justify-content: space-evenly;

在这里插入图片描述

5. 侧轴对齐方式
5.1 一行的情况

属性名:align-items

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

align-items: flex-start;

在这里插入图片描述

align-items: flex-end;

在这里插入图片描述

align-items: center;

在这里插入图片描述

align-items: baseline;

在这里插入图片描述

align-items: stretch;

在这里插入图片描述

5.2 多行的情况

属性名:align-content

  • flex-start :与侧轴的起点对齐。
  • flex-end :与侧轴的终点对齐。
  • center:与侧轴的中点对齐。
  • space-between :与侧轴两端对齐,中间平均分布。
  • space-around :伸缩项目间的距离相等,比距边缘大一倍。
  • space-evenly : 在侧轴上完全平分。
  • stretch :占满整个侧轴。—— 默认值

align-content: flex-start;

在这里插入图片描述

align-content: flex-end;

在这里插入图片描述

align-content: center;

在这里插入图片描述

align-content: space-between;

在这里插入图片描述

align-content: space-around;

在这里插入图片描述

align-content: space-evenly;

在这里插入图片描述

align-content: stretch;

在这里插入图片描述

6. 伸缩性
6.1 flex-basis

概念: flex-basis 设置的是主轴方向的基准长度,会让宽度或高度失效。

备注:主轴横向:宽度失效;主轴纵向:高度失效.

作用:浏览器根据这个属性设置的值,计算主轴上是否有多余空间,默认值 auto ,即:伸缩项目
的宽或高。

6.2 flex-grow(伸)

概念: flex-grow 定义伸缩项目的放大比例,默认为0 ,即:纵使主轴存在剩余空间,也不拉伸
(放大)。
规则:

  1. 若所有伸缩项目的 flex-grow 值都为 1 ,则:它们将等分剩余空间(如果有空间的话)。
  2. 若三个伸缩项目的 flex-grow 值分别为: 1 、 2 、 3 ,则:分别瓜分到: 1/6 、 2/6 、
    3/6 的空间。
6.3 flex-shrink(缩)

概念:flex-shrink定义了项目的压缩比例,默认为1 ,即:如果空间不足,该项目将会缩小。
收缩项目的计算,略微复杂一点,我们拿一个场景举例:

三个收缩项目,宽度分别为: 200px 、 300px 、 200px ,它们的 flex-shrink 值分别
为: 1 、 2 、 3
若想刚好容纳下三个项目,需要总宽度为 700px ,但目前容器只有 400px ,还差 300px
所以每个人都要收缩一下才可以放下,具体收缩的值,这样计算:
1. 计算分母: (200×1) + (300×2) + (200×3) = 1400
2. 计算比例:
项目一: (200×1) / 1400 = 比例值1
项目二: (300×2) / 1400 = 比例值2
项目三: (200×3) / 1400 = 比例值3
3. 计算最终收缩大小:
项目一需要收缩: 比例值1 × 300
项目二需要收缩: 比例值2 × 300
项目三需要收缩: 比例值3 × 300

7. flex复合属性

flex 是复合属性,复合了: flex-grow 、 flex-shrink 、 flex-basis 三个属性,默认值为0 1 auto

  • 如果写 flex:1 1 auto ,则可简写为:flex:auto
  • 如果写 flex:1 1 0 ,则可简写为: flex:1
  • 如果写 flex:0 0 auto ,则可简写为: flex:none
  • 如果写 flex:0 1 auto ,则可简写为: flex:0 auto —— 即 flex 初始值。
8. 项目排序

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

设置
盒子2:order:-1;
盒子3:order:1;
效果如图
在这里插入图片描述

9. 单独对齐(几乎不用)
  • 通过 align-self属性,可以单独调整某个伸缩项目的对齐方式
  • 默认值为 auto ,表示继承父元素的 align-items 属性。

代码案例

案例一:子元素居中

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>子元素相对父元素居中</title>
    <style>
        html, * {
            margin: 0;
            padding: 0;
        }
        body {
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
        }
        .son {
            width: 300px;
            height: 300px;
            background-color: #9DB783;
            flex: 0 1 auto;
        }
    </style>
</head>
<body>
    <div class="son"></div>
</body>
</html>

案例二:自适应布局

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>自适应布局</title>
    <style>
        html, * {
            margin: 0;
            padding: 0;
        }
        .parent {
            display: flex;
            flex-wrap: wrap;
            justify-content: center;
        }
        .son {
            flex: 0 1 300px;
            background-color: #fdf6e3;
            min-height: 200px;
            box-sizing: border-box;
            border: 3px solid #9DB783;
            padding: 20px;
            margin: 20px;
        }
        .title {
            font-size: 20px;
            color: #c03035;
        }
        .content {
            font-size: 15px;
            color: #323232;
        }
    </style>
</head>
<body>
    <section class="parent">
        <article class="son">
            <span class="title">将进酒</span><br>
            <span class="content">君不见,黄河之水天上来,奔流到海不复回,君不见,高堂明镜悲白发,朝如青丝暮成雪</span>
        </article>
        <!-- 省略其他文章标签 -->
    </section>
</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2204747.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

常州威雅学校:课外拓展活动 用热爱营造无限可能

作为全人教育理念的躬行实践&#xff0c;常州威雅中小学部的课外拓展活动&#xff08;E&X&#xff09;也伴随着初秋温和的风紧锣密鼓地铺展开来。 常州威雅为中小学部的学生们提供了几十项的课外拓展活动&#xff0c;从入门到进阶&#xff0c;展现了艺术、音乐、体育、科技…

YOLO11模型训练 | 目标检测与跟踪 | 实例分割 | 关键点姿态估计

前言 本文分享YOLO11的模型推理&#xff0c;检测任务包括物体分类、目标检测与跟踪、实例分割 、关键点姿态估计、旋转目标检测等。 安装方式支持&#xff1a;默认的使用pip进行安装&#xff1b;也支持直接调用YOLO11源码&#xff0c;灵活便捷修改源码。 本文支持自定义数据…

2024红队必备工具列表总结_railgun工具

一、信息收集 1、AppInfoScanner 一款适用于以HVV行动/红队/渗透测试团队为场景的移动端(Android、iOS、WEB、H5、静态网站)信息收集扫描工具&#xff0c;可以帮助渗透测试工程师、红队成员快速收集到移动端或者静态WEB站点中关键的资产信息并提供基本的信息输出,如&#xff…

OKG Research:如何衡量链上数据的开放价值?

在新加坡Token2049期间&#xff0c;欧科云链研究院受邀参加Bloomberg主办的企业另类资产投资峰会2024&#xff0c;与多位专家围绕未来数据形态与前景进行了深入交流。 活动后&#xff0c;欧科云链研究院负责人Lola Wang与资深研究员Jason Jiang在大公网发表署名文章《如何衡量…

Dinky 字段模式演变 PIPELINE 同步MySQL到Doris

背景 用Dinky数据平台 FlinkCDC收集Mysql BinLog 至 Doris 搭建实时数仓 问题 用Dinky CDCSOURCE 字段模式演变 整库同步Mysql到Doris 字段新增删除不生效 组件信息 Flink 1.17 dinky 1.1 Doris 2.1.6 Mysql 8.0Dinky MySQLCDC 整库到 Doris需要的依赖 Flink/lib 和 dinky/…

家庭酒吧一体化解决方案Bar Assistant

什么是 Bar Assistant &#xff1f; Bar Assistant 是一个用于管理家庭酒吧的自托管应用程序。它允许您添加配料、搜索鸡尾酒和创建自定义鸡尾酒配方。是您所有最爱鸡尾酒配方和饮品的新家。 软件功能&#xff1a; 包含超过 300 个鸡尾酒配方&#xff0c;附带详细信息包含超过…

iPhone 16 Pro 拆解揭秘:设计改进与维修便利性

苹果最新推出的iPhone 16系列在许多方面都进行了更新和改进&#xff0c;而这次我们要聚焦的是其中的高端型号——iPhone 16 Pro。 这款手机不仅在性能上有所提升&#xff0c;在内部构造上也带来了不少变化&#xff0c;让我们一起来看看这些细节吧。 更容易进入的内部结构 对于…

【hadoop报错】JAR does not exist or is not a normal file

1. 环境 linux Ubuntu hadoop 执行 hadoop jar 命令时&#xff0c;一直报错 解决方法 2、确定自己的jar目录是切实存在的 /export/server/hadoop-3.3.6/shares/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.3.6-tests.jar 3、网上找了很多解决办法&#xff0c;最后…

QUUID 使用详解

UUID 通常由 128 位&#xff08;16 字节&#xff09;组成&#xff0c;通常表示为 32 个十六进制数字&#xff0c;分为五个部分&#xff0c;格式如下&#xff1a; QUuid 是 Qt 框架中用于生成和处理 UUID&#xff08;通用唯一标识符&#xff09;的类。UUID 是一种标准的标识符格…

厦门网站制作的趋势与最佳实践

厦门网站制作的趋势与最佳实践 随着数字化时代的到来&#xff0c;厦门的网站制作行业也在不断演变&#xff0c;呈现出多样化的趋势与最佳实践。这些变革不仅满足了市场的需求&#xff0c;也为企业的数字化转型提供了强有力的支持。 首先&#xff0c;响应式设计已成为网站制作的…

自由学习记录(5)

git命令行init仓库 mkdir的命令行使用 -p 是 mkdir 命令中的一个选项&#xff0c;表示 "parent"&#xff0c;意思是创建所有必要的父目录。如果使用 -p&#xff0c;即使父目录不存在&#xff0c;命令也会自动创建它们&#xff0c;而不会报错。 在 Git 中&#xff0…

Android复杂问题分析工具bugreportz详解

文章目录 bugreportz详细介绍功能与作用使用方法生成详细报告检查进度bugreportz 的优势分析报告 如何分析1. 解压 ZIP 文件2. 分析主要文件2.1 bugreport.txt2.2 logcat.txt2.3 kernel.log / last_kmsg2.4 events.log2.5 traces.txt2.6 dumpstate_board.txt 3. 工具支持4. 重点…

计算机的错误计算(一百一十九)

摘要 用错数解释计算机的错误计算&#xff08;一百一十八&#xff09;中的错误计算。 计算机的错误计算&#xff08;一百一十八&#xff09;给出一个循环迭代 用C语言或Java编程计算&#xff0c;则 均是错误结果。 下面用错数解释其出错原因。 首先&#xff0c;将迭代看作 …

ARM base instruction -- umull

无符号乘法运算 Unsigned Multiply Long multiplies two 32-bit register values, and writes the result to the 64-bit destination register. 将两个32位寄存器值相乘&#xff0c;并将结果写入64位目标寄存器。 64-bit variant UMULL <Xd>, <Wn>, <Wm&g…

springmvc直接访问 上下文路径 302 后路径更改并跳转源码解析

【问题现状】 application.yml 配置如下属性&#xff1a; server:servlet:context-path: /learning直接访问&#xff1a;http://localhost:8888/learning 路径时&#xff0c;会返回302的响应状态&#xff1b;并跳转路径&#xff1a;http://localhost:8888/learning/ (原路径后…

MapReduce工作机制源码解析

目录 1. MapTask工作机制2. ReduceTask工作机制3. ReduceTask并行度决定机制4. MapTask & ReduceTask源码解析 1. MapTask工作机制 MapTask一共分为五个阶段&#xff1a;Read、Map、Collect、溢写、Merge阶段。 在第4步MrAppMaster启动之前都是job的提交流程&#xff0c;…

keras yolo8目标检测

是从coco数据集提取其中的veh_ids[3,6,8,10] labels[car,bus,truck,traffic light]来做目标检测,分别表示汽车,公交车&#xff0c;卡车&#xff0c;交通灯,用的backbone keras_cv.models.YOLOV8Backbone.from_preset( "yolo_v8_m_backbone_coco" ),不用预训练…

构造mex(牛客周赛 Round 59)

题目链接&#xff1b; D-构造mex_牛客周赛 Round 59 (nowcoder.com) 题目描述&#xff1a; 输出和输出描述&#xff1a; 输入样例&#xff1a; 3 6 3 3 7 4 3 6 6 0 输出样例&#xff1a; NO YES 4 0 1 2 YES 1 1 1 1 1 1 分析&#xff1a; 数学思维题&#xff0c;赛后看了一…

Spring Cloud Bus:实现分布式系统中的消息传递与状态同步

在分布式系统中&#xff0c;服务之间的消息传递和状态同步是一个关键需求。Spring Cloud Bus提供了一个轻量级的消息代理连接分布式系统的节点&#xff0c;用于广播状态更改或管理指令。本文将探讨Spring Cloud Bus的功能、使用场景及其在分布式系统中的作用。 Spring Cloud B…

【星汇极客】STM32 HAL库各种模块开发之1.8TFT屏幕

前言 本人是一名嵌入式学习者&#xff0c;在大学期间也参加了不少的竞赛并获奖&#xff0c;包括&#xff1a;江苏省电子设计竞赛省一、睿抗机器人国二、中国高校智能机器人国二、嵌入式设计竞赛国三、光电设计竞赛国三、节能减排竞赛国三等。 暑假的时候参加了太多的比赛&#…