总结一下flex布局

news2024/11/20 21:28:44

flex布局

传统布局方案是基于盒状模型,依赖 display + position + float 方式来实现,灵活性较差;Flex是Flexible Box的缩写,意为”弹性布局”。Flex可以简便、完整、响应式地实现多种页面布局

CSS3 弹性盒子是一种一维的布局,因为一个 flexbox 一次只能处理一个维度上的元素布局,一行或者一列

父盒子添加 display:flex 形成了一个BFC

父项属性用于整体的布局;子项属性用于实现子项的差异化,内部调整

父盒子的常见属性

flex-direction

设置主轴方向

属性值作用说明
row从左往右排列默认值就是row;设置主轴是X轴
column从上往下排列设置主轴为Y轴
row-reverse从右往左排列将元素的排列顺序完全颠倒,展示顺序与html中顺序完全相反
column-reverse从下往上排列作用和row-reverse差不多,注意它们与flex-end的区别

justify-content

设置元素在主轴上的排列方式

属性值作用说明
flex-start主轴方向从头开部始配列默认值就是flex-start;X轴为左开始,Y为从上开始
flex-end主轴方向上从尾部开始排列只和排列的位置有关,并不能设置配列的顺序
center主轴居中
space-around平分剩余空间
space-between两边贴边,再平分剩余空间平分份数比space-around少

flex-direction只是说明主轴方向是怎样的,那边是起点

justify-content只是说明从起点开始排列还是怎么排列,只能改变整体的顺序,不能任意改变一个元素的顺序

这两父元素的属性只是宏观把控;它们并不能随意改变元素之间的顺序,想要修改顺序还得使用子元素的order属性

flex-wrap

子元素一行排不完是否换行

属性值作用说明
wrap换行当子元素一行排不完(子盒子个数*子盒子宽度>父盒子宽度)的时候,进行换行
no-wrap不换行默认为no-wrap

因为默认不换行,如果我们一行排不完,而且又不换行,它就会自动给我们盒子进行压缩,盒子宽度就会比原本设置的窄,盒子宽度为:父盒子宽度/子元素个数; 此时如果想要子盒子宽度为我们设置的宽度,就得设置换行

align-items

设置子元素在侧轴方向上的排列方式;前提是没有换行,只有一行(flex-warp:no-wrap)

属性值作用说明
flex-start侧轴方向从头开始排如果主轴是X轴,那么侧轴为Y,就是从上往下排
flex-end侧轴方向从尾部开始排列
center侧轴方向居中
stretch拉伸默认值

了解下strech

align-content

设置子元素在侧轴上的配列方式;前提是多行

属性值作用说明
flex-start侧轴方向从头开始排列
flex-end
center
space-around
space-between
stretch默认值为stretch

子盒子的常见属性

flex

作用:用于指定弹性子元素如何分配空间

flex属性是flex-grow,flex-shrink和flex-basis的简写,默认值为0 1 auto

flex-grow:元素沿主轴方向的扩张尺寸,会占据主轴上的可用空间

放大比例,默认值为0,即就算存在剩余空间也不放大,如果所有子盒子数值为1的话就是所有项目等分剩余空间,如果有一个子盒子的flex-grow属性为2,其余都为1时,则前者占据的剩余空间是后者的两倍

flex-shrink :元素沿主轴方向的收缩尺寸,只有在子元素总和超出主轴才会生效

按比例分配空间(默认为 1 ),收缩值为 flex-basis 基准乘以 flex-shrink 收缩比例

随着盒子越来越小,小的子元素最终会以 min-content 的大小进行铺设,后续空间会一直从大的子元素中移除

flex-basis:用于设置弹性盒伸缩基准值

默认值是auto

如果元素设置了宽度,flex-basis为设置的宽度

如果元素未设置宽度,flex-basis为元素内容的尺寸

flex-basis 属性优先于 width 属性;

设为 0 ,则子元素的大小不在空间分配计算的考虑之内

eg: 最后一个子元素想要占据所有的剩余空间

      .item1 {
        width: 200px;
      }
      .item2 {
        width: 30px;
      }
      .item3 {
        flex: 1;
      }

flex:1其实是 flex:1 1 auto的简写

eg: 子元素想要实现 1:2:1 分配

<div class="box2">
  <div class="item1">1</div>
  <div class="item2">2</div>
  <div class="item3">3</div>
</div>

  .item1 {
    flex: 1;
    background-color: pink;
  }
  .item2 {
    flex: 2;
    background-color: skyblue;
  }
  .item3 {
    flex: 1;
    background-color: greenyellow;
  }

flex:1 和 flex:auto 的区别

他们的flex-basis不一样,导致它们分配的剩余空间是不一样的;对于flex:1,flex-basis为0;设置了width也不会生效

1》flex:auto

相当于 flex:1 1 auto

  • 在各元素初始宽度基础上,平均分配可用空间( 剩余空间 = 100% - 所有子元素的宽度; 然后分配剩余宽度给每个设置了这个属性的盒子)

2》flex:1

相当于 flex:1 1 0

  • 在设置了flex属性的元素宽度为 0 的基础上,平均分配可用空间(把设置了这个属性的盒子的宽度直接当作0,剩余空间 = 100% - 没设置这个属性盒子的宽度,然后分配到每个设置了这个属性的盒子)

order

设置弹性盒子的子元素排列顺序

数值,默认值是0;数字越小,配列位置越靠前

展示顺序:item2 、item3、item1

      .item1 {
        width: 200px;
        order: 3;
      }
      .item2 {
        width: 30px;
        order: 1;
      }
      .item3 {
        order: 2;
      }

align-self

在弹性子元素上使用。覆盖容器的 align-items 属性;属性值参考align-items

    <div class="box3">
      <div class="item4"></div>
      <div class="item5"></div>
      <div class="item6"></div>
    </div>

      .box3 {
        display: flex;
        justify-content: space-between;
        width: 200px;
        height: 300px;
        border: 1px solid #000;
      }
      .item4,
      .item5,
      .item6 {
        width: 30px;
        height: 30px;
        border-radius: 50%;
        background-color: red;
      }
      .item5 {
        align-self: center;
      }
      .item6 {
        align-self: flex-end;
      }

利用这个属性实现三饼图:
在这里插入图片描述

浏览器兼容

ChromeFirefoxSafariIEOperaAndroidiOS
21+22+6.1+11+12.1+4.4+7.1+

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

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

相关文章

[Spring MVC3]MyBatis详解

本章重点讲述了MyBatis映射器&#xff0c;对数据层进行的操作&#xff0c;建议本篇文章和Spring Boot的持久层相互比较来看会更加收获颇多Spring Boot持久层技术 本文需要使用到MVC第一讲的模板格式与配置情况&#xff0c;全部代码已经放在此博客中&#xff0c;Spring MVC1 目…

修改设备管理器的COM端口名称

Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class{4d36e978-e325-11ce-bfc1-08002be10318}\0001] “InfPath”“oem53.inf” “InfSection”“CH341SER_Inst.NTamd64” “ProviderName”“wch.cn” “DriverDateData”hex:00,00…

计算机算法(二)——进入计算机世界

作者介绍&#xff1a; &#x1f4de;作者&#xff1a;小刘在C站 &#x1f4c0;每天分享课堂笔记 &#x1f339;夕阳下&#xff0c;是最美的绽放 瑞士著名的科学家Niklaus Wirth教授曾提出&#xff1a;数据结构算法程序。 数据结构是程序的骨 算法是程序的灵魂。 在生活…

【 C++11 】lambda表达式

目录 1、lambda表达式的引入 2、lambda表达式 lambda表达式的语法 lambda表达式捕捉列表说明 使用lambda表达式排序自定义类型 lambda表达式的底层原理 1、lambda表达式的引入 在C98中&#xff0c;如果想要对一个数据集合中的元素进行排序&#xff0c;可以使用std::sort方法&…

asp.net图书馆借阅归还系统

图书管理系统既是完整的知识定位系统&#xff0c;又是面向未来互联网发展的信息管理模式。图书管理系统&#xff0c;是一套利用计算机信息网络技术&#xff0c;实现对引用、注释和参考图书的自动化处理和规范化管理&#xff0c;服务于教师&#xff0c;学生及各类科研人员的集成…

【C语言进阶考试】你是否真正学懂了C语言

目录 前言 &#x1f392;选择题【全面深度剖析】 &#x1f4d7;考点一&#xff1a;无符号数unsigned的理解与应用 &#x1f4d5;考点二&#xff1a;字符ASCII计算与转换的理解和应用 &#x1f4d9;考点三&#xff1a;对位操作符的理解与应用 &#x1f4d8;考点四&#xf…

docker mysql 主从配置

准备&#xff1a;一台装有docker的虚拟机或者服务器 拉取mysql镜像&#xff1a; docker pull mysql:5.6 启动两个mysql容器 master docker run -p 1006:3306 --name mysql_master -v F:/mysql/mysql_master/conf:/etc/mysql -v F:/mysql/mysql_master/logs:/logs -v F:/mys…

【1024 | 程序员节】浅谈前端开发中常用的设计模式——适配器模式、工厂模式、单例模式等

前言 博主主页&#x1f449;&#x1f3fb;蜡笔雏田学代码 专栏链接&#x1f449;&#x1f3fb;【前端面试专栏】 今天学习前端面试题相关的知识&#xff01; 感兴趣的小伙伴一起来看看吧~&#x1f91e; 文章目录设计模式设计模式分类工厂模式什么是工厂模式工厂模式好处单例模式…

I2C知识大全系列三 —— I2C驱动之单片机中的I2C

两种方式 单片机中的I2C驱动有两种方式。一种方式是用专用硬件I2C控制器实现&#xff0c;这种方式简单易行&#xff0c;品质也容易控制&#xff0c;只是会增加硬件成本方面的压力。另一种方式是用纯软件方式实现&#xff0c;这种方式几乎无硬件成本方面的考虑。 主要对比&…

网页图片采集-网页图片采集软件免费

一款免费的网页图片采集软件可以采集网页上的各种图片&#xff0c;每个人都可以采集到各种高清图源。支持任意格式的图片采集&#xff0c;只需要导入链接即可批量采集图片。 还有更多的采集方式&#xff1a;输入关键词全网图片采集/任意网站所有图片采集&#xff01;不仅可以采…

【C++】STL——vector(万字详解)

&#x1f387;C学习历程&#xff1a;入门 博客主页&#xff1a;一起去看日落吗持续分享博主的C学习历程博主的能力有限&#xff0c;出现错误希望大家不吝赐教分享给大家一句我很喜欢的话&#xff1a; 也许你现在做的事情&#xff0c;暂时看不到成果&#xff0c;但不要忘记&…

记首次参加网络安全比赛(初赛-知识竞赛,决赛-CTF夺旗赛-解题模式)

网络安全相关的方向很多&#xff0c;几乎IT相关的安全内容都可以涵盖在内。笔者本身的知识体系更偏向于编程语言和Web应用&#xff0c;本次参赛可谓极具挑战&#xff0c;但是就是喜欢这种感觉&#xff1a;&#xff09; 赛程安排 9月16日接到通知 9月26日初赛 10月15日决赛 …

计算机网络习题答案

1、校园网属于&#xff08;局域网LAN &#xff09; 2、在下列传输介质中&#xff0c;(光缆 )传输介质的抗电磁干扰性最好。 3、光纤上采用的多路复用技术为&#xff08;WDM&#xff09; 4、计算机网络的交换方式不包括 无线交换 5、网络体系结构模型OSI模型和TCP/IP模型…

区块链实训教程(6)--开发、编译、部署、调用HelloWorld合约

文章目录1. 任务背景2. 任务目标3. 相关知识点4. 任务实操4.1 新建合约文件4.2 编写合约代码4.3 保存、编译、部署合约4.4 调用合约5. 任务总结1. 任务背景 FISCO BCOS运用智能合约进行归纳资产管理、规则定义和价值交换等操作&#xff0c;所以我们需要学习如何使用智能合约。…

aws ec2 配置jenkins和gitlab

环境搭建 下载jenkins的war包&#xff0c;启动jenkisn nohup java -jar jenkins.war --httpPort8091 > jenkins.log 2>&1 &docker安装gitlab 默认情况下&#xff0c;Omnibus GitLab 会自动为初始管理员用户账号 (root) 生成密码&#xff0c;并将其存储到 /etc…

HarmonyOS系统中内核实现温湿度采集方法

大家好&#xff0c;今天主要来聊一聊&#xff0c;如何使用鸿蒙系统中的温湿度传感器方法。 第一&#xff1a;温湿度传感器基本原理 大部分的传感器是在环境温度变化后会产生一个相应的延伸&#xff0c;因此传感器可以以不同的方式对这种反应进行信号转换。常见的大部分是电阻…

gitlab cicd 5分钟快速入门搭建私人代码仓库

gitlab 是企业级私有服务器 本文章采用docker搭建gitlab 如有不懂可微信我号yizheng369 环境准备 购买阿里云服务器&#xff0c;或者其他服务器 注意&#xff1a;本文章是用阿里云的centos 7.6作为服务器 搭建步骤 1.设置环境变量 export GITLAB_HOME/srv/gitlab2.编写dock…

今天面了个阿里拿27k出来的小哥,让我见识到了什么是天花板

2022年堪称大学生就业最难的一年&#xff0c;应届毕业生人数是1076万。失业率超50%&#xff01; 但是我观察到一个数据&#xff0c;那就是已经就业的毕业生中&#xff0c;计算机通信等行业最受毕业生欢迎&#xff01; 计算机IT行业薪资高&#xff0c;平均薪资是文科其他岗位的3…

PLC NAND 虽来但远

前言 图片来源&#xff1a; 存储随笔 2022年8月份在美国FMS峰会上&#xff0c;Solidigm公司(前身为 Intel NAND 部门) 展示了全球第一款基于PLC NAND研发的SSD。这也标志着&#xff0c;PLC时代已正式拉开序幕。出于对 PLC 的好奇&#xff0c;本文分享PLC NAND 知识&#xff0…

C/C++描述 - 矩阵乘积的计算

矩阵运算是现代科学及工程计算的基石之一&#xff0c;而矩阵乘法则是其中最常见一种运算。对于二维矩阵A、B&#xff0c;如果A的列数等于B的行数&#xff0c;则矩阵A、B可乘&#xff0c;其结果矩阵C的行数等于A的行数&#xff0c;列数等于B的列数。 本文引用自作者编写的下述图…