一文搞懂flex布局

上学读书的时候,学习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布局典型案例

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux部署mysql8.0.28数据库

目录 1.基础准备 (1)首先去官网下载二进制安装包 (2)下载好之后上传至服务器 (3)禁用关闭selinux和防火墙 (4)挂载光盘搭建本地yum仓库 2.解压到指定目录 3.检查系统是否安装mariadb 4.安装MySQL数据库 (1)进入MySQL目录 看到‘完毕’就说面mysql已经安装成功了 4.初…

2024-6-12-IXI(mat)应用到SR的代码解读

数据集 Download and decompress data from the link 百度网盘 请输入提取码 Password: qrlt Transform .h5 format to .mat format "python convertH5tomat.py --data_dir XXX/T2Net/h5 论文:Task Transformer Network for Joint MRI Reconstruction and Super-Resoluti…

大数据概论总结

三次信息化浪潮 : 信息技术的支撑 : 存储设备容量不断增加 CPU的处理能力不断提高 网络带宽不断增加 数据产生方式的变革促成大数据时代的来临 运营式系统阶段用户原创内容感知式系统阶段 大数据发展历程 : 分为三个阶段 : 大数据的概念 : 1 . 数据量大 : 根据IDC作出…

量产导入 | Tessent Scan 和 ATPG

目标 Upon completion of this module, you should be able to: Use Tessent Scan to insert full scan. Write a scan-inserted netlist file. Write ATPG setup files. lnsert test logic. Create, configure, and balance scan chains. Edit a scan chain order file and …

PyCharm2018图文安装教程、附录软件下载

软件简介 PyCharm 2018是一款IDE集成开发环境&#xff0c;主要功能包括代码调试、语法高亮、智能提示、单元测试、版本控制等&#xff0c;支持Python 3.7&#xff0c;改进search everywhere功能等&#xff0c;可以让用户快速的开发程序。 软件下载 复制链接浏览器打开 https…

Java基础面试重点-1

0. 符号&#xff1a; *&#xff1a;记忆模糊&#xff0c;验证后特别标注的知识点。 &&#xff1a;容易忘记知识点。 *&#xff1a;重要的知识点。 1. 简述一下Java面向对象的基本特征&#xff08;四个&#xff09;&#xff0c;以及你自己的应用&#xff1f; 抽象&#…

GStreamer安装——Android

Android安装 支持所有从2.3.1Gingerbread开始的版本 先决条件 开发机器是您开发Android应用程序的地方&#xff0c;然后您将其部署在目标机器上&#xff0c;目标机器显然应该是Android设备。 开发机器可以是Linux、Mac OS X或Windows&#xff0c;并且需要安装&#xff1a; 最…

私有云数据库特征

私有云数据库具有以下几个主要特征&#xff1a; 控制和安全&#xff1a; 数据控制&#xff1a;组织对数据有完全的控制权&#xff0c;可以根据需要设置访问权限和安全策略。安全性&#xff1a;私有云数据库通常部署在组织内部的数据中心&#xff0c;利用内部网络&#xff0c…

爆款AI工具大盘点:最强文本、视频、音乐生成AI,适用岗位全解析!

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

Linux部署项目

手动部署 1.在IDEA写一个有关springboot项目 在windows客户端可以通过localhost:8080/hello 访问 2.用packge 命令将该springboot项目打包 并在target目录下找到打包的jar包 3.上传到linux上 个人习惯在usr/local/app 下上传该项目 创建切换到app目录下 mkdir /usr/local/ap…

互联网医院系统源码的创新应用:预约挂号小程序开发实战

预约挂号小程序作为互联网医院系统的创新应用&#xff0c;更加贴近用户需求&#xff0c;实现了预约挂号的便捷化和智能化。本篇文章&#xff0c;笔者将带领读者进入预约挂号小程序开发的实战过程&#xff0c;探索互联网医院系统源码在小程序开发中的创新应用。 一、互联网医院系…

UML相关1

汽车租赁系统中的用例图简述(10分) 本系统根据功能可以分为三个用例图&#xff1a; 客户用例图&#xff1a;主要描述客户注册、登录、找回密码、查询车辆信息&#xff08;包括所有车辆信息、已借车辆信息、租赁历史信息&#xff09;、修改个人信息、网上预订车辆、电话预定车…

java多线程临界区介绍

在Java多线程编程中&#xff0c;"临界区"是指一段必须互斥执行的代码区域。当多个线程访问共享资源时&#xff0c;为了防止数据不一致或逻辑错误&#xff0c;需要确保同一时刻只有一个线程可以进入临界区。Java提供了多种机制来实现这一点&#xff0c;例如synchroniz…

Excel 多列组合内容循环展开

某表格 A 列是编号&#xff0c;其他列是用逗号分隔的意义不同的分类列 ABCDEFG1Assembly#ProductTypeUnit ConfigNominal CapacitySupply VoltageGenerationCase Construction23H1012290001CMD,P24,36FAA,B33H1012290002CMD,P48,60FA,BA,B43H1012290003CMD,P24,36B,C,D,EAA,B …

注册讲堂 | 医疗器械监管的可追溯性与UDI

医疗器械监管的关键-可追溯性 在医疗领域&#xff0c;每一个环节的精准和透明都是至关重要的。医疗器械的可追溯性正是这一需求的核心&#xff0c;它确保了产品从生产到患者使用的整个路径可以被追踪和记录。这不仅关乎患者的安全&#xff0c;也是医疗质量保证的关键。 可追溯…

Python强化学习(Reinforcement Learning, RL)库之gymnasium使用详解

概要 在强化学习(Reinforcement Learning, RL)领域中,环境(Environment)是进行算法训练和测试的关键部分。gymnasium 库是一个广泛使用的工具库,提供了多种标准化的 RL 环境,供研究人员和开发者使用。通过 gymnasium,用户可以方便地创建、管理和使用各种 RL 环境,帮助…

Android native层的线程分析(C++),以及堆栈打印调试

文章目录 Android native层的线程分析(C)&#xff0c;多线程实现1.native线程的创建第一部分&#xff1a;android_thread模块第二部分&#xff1a;linux_thread模块 2.测试linux_thread模块3.Android native的Thread类3.1源码分析 4.native层堆栈调试方法 Android native层的线…

postman教程-21-Newman运行集合生成测试报告

上一小节我们Postman Newman的安装方法&#xff0c;本小节我们讲解一下Postman Newman的具体使用方法。 使用Newman运行集合 1、导出Postman集合&#xff1a; 在Postman中&#xff0c;选择你想要运行的集合&#xff0c;然后点击“导出”按钮&#xff0c;选择导出为“Collect…

推荐使用三丰云免费云服务器、免费虚拟主机

官网地址&#xff1a;www.sanfengyun.com 三丰云服务器&#xff1a; 配置高&#xff1a;能够轻松运行应用程序和网站&#xff0c;在处理大量请求和保持高可靠性方面表现出色。 易用性好&#xff1a;界面直观、简单&#xff0c;能够轻松管理服务器和资源&#xff0c;快速创建和…

随便写写之——CSDN个人主页布局(二)

现在是中午11点30&#xff0c;还是有点迷糊&#xff0c;也不知道怎么了。 继续写写这个界面吧 代码太多了。吧上边的丢到组件里 加个图片好了&#xff0c;不然太丑了&#xff0c;看下main_haeader的布局 都是些比较简单的布局&#xff0c;头像这边就用了一个绝对定位定在了左…