一文搞懂flex布局

news2024/11/27 17:37:05

上学读书的时候,学习flex布局,更多停留在理论知识层面。近来,经过工作实践,发现自己对flex布局的理解更加深入,运用起来更加熟练,也越发能感受到flex布局的强大灵活性,特来总结一波。若有错误之处,欢迎指出!

写在前面,最近开始在微信公众号上更文啦,可搜索“兰兰的风吖”,查看文章,后续学习整理的知识文章会同步更新,欢迎关注!
在这里插入图片描述

一文搞懂flex布局

  • 知识导图
  • 基本概念
    • (1)容器
    • (2)项目
    • (3)主轴、交叉轴
    • (4)方向
  • 容器属性
    • (1)flex-direction
    • (2)justify-content
    • (3)align-items(单行)
    • (4)flex-wrap
    • (5)align-content(多行)
  • 项目属性
    • flex
  • 经典布局
    • (1)等分布局(百分比布局)
    • (2)元素水平垂直居中对齐
    • (3)某一/多个盒子固定,其它盒子自适应

知识导图

在这里插入图片描述

基本概念

(1)容器

设置样式属性display:flex的那个父元素

(2)项目

容器内的直接子元素(第一层级)

比如:类名为father的那个元素是容器,类名为son的两个元素是项目。

<div class="father">
  <div class="son">
    1
  </div>
  <div class="son">
    2
  </div>
</div>
.father{
   display:flex;
}

(3)主轴、交叉轴

在这里插入图片描述

(4)方向

在这里插入图片描述

容器属性

(1)flex-direction

定义主轴方向。

row  //水平(默认)
column  //(垂直)
row-reverse //水平反向
column-reverse  //垂直反向

在这里插入图片描述

(2)justify-content

定义主轴方向上的子元素对齐方式。

flex-start  // 主轴前对齐(默认)
flex-end  // 主轴后对齐
center  // 主轴居中
space-between // 等距,首尾(项目之间间隔相等)
space-around  // 等距,两边(项目两侧的间隔相等)
space-evenly  //等距,容器

在这里插入图片描述

(3)align-items(单行)

定义交叉轴方向上的子元素对齐方式。

flex-start  // 交叉轴前对齐(默认)
flex-end  // 交叉轴后对齐
center  // 交叉轴居中
baseline // 文字基线
stretch  // 拉伸

在这里插入图片描述
注意:
主轴方向设为flex-direction: row;(默认), 此时,要使交叉轴属性align-content:stretch生效,需要去掉子项的高度。

(4)flex-wrap

超出容器轴线长度是否换行。

wrap // 换行
nowrap // 不换行 (当子元素宽度之和超出父元素宽度时,会自动缩小子元素宽度)
wrap-reverse  // 行序反向

在这里插入图片描述

(5)align-content(多行)

定义元素在交叉轴上的对齐方式(只在多行项目的情况下有效,即容器父元素设置属性:flex-wrap:wrap)

flex-start
flex-end
center
stretch
space-between
space-around

在这里插入图片描述
注意:
主轴方向设为flex-direction: row;(默认), 此时,要使交叉轴属性align-content:stretch生效,需要去掉子项的高度。

项目属性

flex

三个属性(flex-grow、flex-shrink、flex-basis)的简写。
默认值:

item {
  flex:0 1 auto;
}

flex-grow:按容器剩余空间的比例放大元素填充容器。
flex-shrink:按被挤压空间的比例缩小元素。(可选)
flex-basis:元素初始大小,默认auto。(可选)

PS:关于这三个属性的具体细节含义,这里暂且不表(个人感觉有点复杂),我一般就写的简写形式,属性值直接设为数值。

经典布局

(1)等分布局(百分比布局)

在这里插入图片描述

<div class="father">
    <div class="box">
        1
    </div>
    <div class="box">
        2
    </div>
    <div class="box">
        3
    </div>
</div>
.father {
  display: flex;
  gap: 10px;
  div[class^="box"]{
    flex:1;
  }
}

分析:子元素设置flex属性值为1后,三个子元素会平分父盒子的宽度。

(2)元素水平垂直居中对齐

在这里插入图片描述

<div class="father">
  <div class="box">
    我是内容!
  </div>
</div>
.father {
  display: flex;
  height: 200px;
  justify-content: center;
  align-items: center;
}

(3)某一/多个盒子固定,其它盒子自适应

如:
①在做页面的宽度自适应时,可能出现的布局:左右固定宽度,中间宽度自适应
②在做页面的高度自适应时,可能出现的布局:上方固定高度,下方高度自适应
技巧:固定宽/高度的盒子设置固定固定宽/高,可以设置具体的像素或相对于父盒子的百分比,自适应的那个子盒子设置flex属性即可。

理论知识详细可参考之前的链接:

  1. flex布局的常见属性
  2. flex布局典型案例

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

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

相关文章

Android Glide loading Bitmap from RESOURCE_DISK_CACHE slow,cost time≈2 seconds+

Android Glide loading Bitmap from RESOURCE_DISK_CACHE slow,cost time≈2 seconds 加载一张宽高约100px多些的小图&#xff0c;是一张相当小的正常图片&#xff0c;loading Bitmap from RESOURCE_DISK_CACHE竟然耗时达到惊人的3秒左右&#xff01;&#xff08;打开Glide调试…

元宇宙数字化3D虚拟展馆

随着科技的飞速发展&#xff0c;我们迎来了一个全新的时代——元宇宙时代。在这个充满无限可能的虚拟世界中&#xff0c;元宇宙数字展馆搭建编辑器应运而生&#xff0c;以其卓越的技术和创新的理念&#xff0c;为用户带来了前所未有的沉浸式展览体验。 元宇宙数字展馆搭建编辑器…

普涨和补涨—2024年上半年全球投资趋势

全球大宗商品价格处在上涨周期&#xff0c;东吴证券认为上游能源行业股价还有继续上涨的空间。随着6月全球股指进一步上涨&#xff0c;预计港股可能还会迎来补涨行情。 一、我们观察的全球投资趋势&#xff1a; 1、全球股指普涨&补涨。全球风险资产进入2024年后普遍上涨&am…

Spark安装、解压、配置环境变量、WordCount

Spark 小白的spark学习笔记 2024/5/30 10:14 文章目录 Spark安装解压改名配置spark-env.sh重命名&#xff0c;配置slaves启动查看配置环境变量 工作流程maven创建maven项目配置maven更改pom.xml WordCount按照用户求消费额上传到spark集群上运行 安装 上传&#xff0c;直接拖拽…

一文讲清:生产报工系统的功能、报价以及如何选择

最近这几年&#xff0c;企业越来越注重生产的速度和成本&#xff0c;尤其是“性价比”&#xff0c;生产报工系统已经变成了制造业里不可或缺的一部分。不过&#xff0c;市场上生产报工系统的选择太多&#xff0c;价格也都不一样&#xff0c;这就给很多企业出了个难题&#xff1…

【Python数据魔术】:揭秘类型奥秘,赋能代码创造

文章目录 &#x1f680;一.运算符&#x1f308;1. 算术运算符&#x1f308;2. 身份运算符&#x1f308;3. 成员运算符⭐4. 增量运算符⭐5. 比较运算符⭐6. 逻辑运算符 &#x1f680;二.可变与不可变&#x1f680;三.字符串转义&#x1f680;四.编码与解码&#x1f4a5;1. 基础使…

SpringBoot 异常配置

系统异常处理 创建异常处理器类&#xff0c;类上添加ControllerAdvice注解。 package com.soft.exception;import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframewor…

Java的集合框架总结

Map接口和Collection接口是所有集合框架的父接口&#xff1a; Collection接口的子接口包括&#xff1a;Set接口和List接口 Map接口的实现类主要有&#xff1a;HashMap、TreeMap、Hashtable、ConcurrentHashMap以及Properties等 Set接口的实现类主要有&#xff1a;HashSet、Tr…

【数据结构】二叉树:一场关于节点与遍历的艺术之旅

专栏引入 哈喽大家好&#xff0c;我是野生的编程萌新&#xff0c;首先感谢大家的观看。数据结构的学习者大多有这样的想法&#xff1a;数据结构很重要&#xff0c;一定要学好&#xff0c;但数据结构比较抽象&#xff0c;有些算法理解起来很困难&#xff0c;学的很累。我想让大家…

数据结构之链表的经典笔试题

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;数据结构&#xff08;Java版&#xff09; 目录 203. 移除链表元素 206. 反转链表 876. 链表的中间节点 面试题 02.02. 返回倒数第k个节点 …

零基础非科班也能掌握的C语言知识22 预处理详解(完结)

预处理详解 1.预处理符号2.#define 定义常量3.#define 定义宏4.带有副作用的宏参数5.宏替换的规则6.宏函数的对比6.1 例子6.1 .16.1.26.1.3 7.命名约定8.undefin9.命令行定义(博主没办法演示)10.条件编译11.头文件的包含11.1本地文件11.2库文件的包含11.3 嵌套文件的包含 12.其…

软件安全测评有哪些测试流程?第三方检测机构进行安全测评的好处

在今天的高科技时代&#xff0c;软件产品已经成为人们生活和工作的重要组成部分。然而&#xff0c;与其普及和深入应用的&#xff0c;软件安全问题也日益凸显。 为了保障软件产品在使用过程中的安全性&#xff0c;进行安全测评是必不可少的。安全测评可以全面评估软件系统的安…

GPT-4o多模态大模型的架构设计

GPT-4o&#xff1a;大模型风向&#xff0c;OpenAI大更新 OpenAI震撼发布两大更新&#xff01;桌面版APP与全新UI的ChatGPT上线&#xff0c;简化用户操作&#xff0c;体验更自然。同时&#xff0c;全能模型GPT-4o惊艳亮相&#xff0c;跨模态即时响应&#xff0c;性能卓越且性价比…

Java集合自测题

文章目录 一、说说 List , Set , Map 三者的区别&#xff1f;二、List , Set , Map 在 Java 中分别由哪些对应的实现类&#xff1f;底层的数据结构&#xff1f;三、有哪些集合是线程不安全的&#xff1f;怎么解决呢&#xff1f;四、HashMap 查询&#xff0c;删除的时间复杂度五…

k8s中的pod域名解析失败定位案例

问题描述 我在k8s中启动了一个Host网络模式的pod&#xff0c;这个pod的域名解析失败了。 定位步骤 敲kubectl exec -it [pod_name] -- bash进入pod后台&#xff0c;查看/etc/resolv.conf&#xff0c;发现nameserver配的有问题。这里我预期的nameserver应该使用宿主机的&…

【Linux】线程(一)

谈论之前需要先谈论一些线程的背景知识 其中就有进程地址空间&#xff0c;又是这个让我们又爱又恨的东西 目录 背景知识&#xff1a;地址空间&#xff1a; 背景知识&#xff1a; 地址空间&#xff1a; 说在前边&#xff0c;OS通常分为4个核心模块&#xff1a;执行流管理&…

【qt】绘图

绘图 一.画家二.绘图事件三.坐标体系四.画笔1.setColor2.setWidth3.setStyle4.setCapStyle5.setJoinStyle6.给画家配置笔 五.画刷1.setColor2.setStyle3.给画家设置刷子 六.用到的类汇总1.QRect 矩形2.QPoint 点3.QImage 图片4.QPixmap 图片5.QLine 线6.QPainterPath 路径 七.开…

如何关闭端口被占用的进程

如何关闭端口被占用的进程 操作步骤一、打开命令提示符&#xff08;Command Prompt&#xff09;二、查看占用端口的进程三、kill杀死占用端口的进程 操作步骤 一、打开命令提示符&#xff08;Command Prompt&#xff09; 使用 win R 打开命令行模式 然后在命令行窗口输入下…

【LLM Agent 长文本】Chain-of-Agents与Qwen-Agent引领智能体长文本处理革命

前言 大模型在处理长文本上下文任务时主要存在以下两个问题&#xff1a; 输入长度减少&#xff1a;RAG的方法可以减少输入长度&#xff0c;但这可能导致所需信息的部分丢失&#xff0c;影响任务解决性能。扩展LLMs的上下文长度&#xff1a;通过微调的方式来扩展LLMs的上下文窗…

基于DenseNet网络实现Cifar-10数据集分类

目录 1.作者介绍2.Cifar-10数据集介绍3.Densenet网络模型3.1网络背景3.2网络结构3.2.1Dense Block3.2.2Bottleneck层3.2.3Transition层3.2.4压缩 4.代码实现4.1数据加载4.2建立 DenseNet 网络模型4.3模型训练4.4训练代码4.5测试代码 参考链接 1.作者介绍 吴思雨&#xff0c;女…