2.8 CSS 伸缩盒模型

1.模型简介
  • 传统布局是指:基于传统盒状模型,主要靠: display 属性+ position 属性+float 属性。
  • 2009年,w3C提出了一种新的盒子模型——+Flexible Box(伸缩盒模型,又称:弹性盒子)。
  • 它可以轻松的控制:元素分布方式、元素对齐方式、元素视觉顺序......
  • 截止目前,除了在部分IE浏览器不支持,其他浏览器均已全部支持。
  • 伸缩盒模型的出现,逐渐演变出了一套新的布局方案―—— flex布局。
  • flex布局目前在移动端应用比较广泛,因为传统布局不能很好的呈现在移动设备上。
2.伸缩容器
  • 给元素设置: display:flex或display:inline-flex,该元素就变为了伸缩容器。
  • display:inline-flex很少使用,因为可以给多个伸缩容器的父容器,也设置为伸缩容器。
  • 一个元素可以同时是:伸缩容器、伸缩项目。
3.伸缩项目
  • 仅伸缩容器的子元素成为了伸缩项目,孙子元素、重孙子元素等后代,不是伸缩项目。
  • 无论原来是哪种元素(块、行内块、行内),一旦成为了伸缩项目,全都会“块状化”"。
4.主轴侧轴
  • 主轴:伸缩项目沿着主轴排列,主轴默认是水平的,默认方向是:从左到右(左边是起点,右边是终点)。
    • 主轴方向:flex-direction
      • row :主轴方向水平从左到右(默认值)
      • row-reverse:主轴方向水平从右到左。
      • column :主轴方向垂直从上到下。
      • column-reverse :主轴方向垂直从下到上。
    • 主轴换行方式:flex-wrap
      • nowrap:不换行
      • wrap:自动换行,伸缩容器不够自动换行。总高度大于“所有行的和”会在每一行下面留出缝隙。
      • wrap-reverse:反向换行。从最低行开始排列,逐渐往上。
    • 主轴对齐方式:justify-content
      • flex-start :主轴起点对齐(默认值)
      • flex-end :主轴终点对齐。
      • center :居中对齐
      • space-between :均匀分布,两端对齐(最常用)。
      • space-around :均匀分布,两端距离是中间距离的一半。
      • space-evenly :均匀分布,两端距离与中间距离一致。
    • 主轴的基准长度:flex-basics
      • 设置主轴的基准长度会让宽高失效:主轴是横向,宽失效;主轴是纵向,高失效。
      • 浏览器根据这个属性设置的值,计算主轴上是否有多余空间,默认值 auto,即:伸缩项目的宽或高。
  • 侧轴:与主轴垂直的就是侧轴,侧轴默认是垂直的,默认方向是:从上到下(上边是起点,下边是终点)。
    • 侧轴对齐
      • 一行:align-items
        • flex-start :侧轴的起点对齐。
        • flex-end:侧轴的终点对齐。
        • center :侧轴的中点对齐。
        • baseline:伸缩项目的第一行文字的基线对齐。
        • stretch:如果伸缩项目未设置高度,将占满整个容器的高度(默认值)

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

  • 元素水平垂直居中
/*方案一*/
父元素 {display: flex;justify-content: center;align-items: center;
}/*方案二*/
父元素 {display: flex;
}
伸缩项目 {margin: auto;
}
5.拉伸收缩
  • 拉伸:flex-grow
    • Fex-grow 定义伸缩项目的放大比例,默认为0,即:纵使主轴存在剩余空间,也不拉伸(放大)规则:
    • 若所有伸缩项目的 flex-grow值都为1,则:它们将等分剩余空间(如果有空间的话)。
    • 若三个伸缩项目的flex-grow值分别为:1、2、3,则按照比例瓜分剩余空间
  • 收缩:flex-shrink
    • flex-shrink定义了项目的压缩比例,默认为1,即:如果空间不足,该项目将会缩小。
    • 收缩项目的计算,略微复杂一点,我们拿一个场景举例:假如有三个收缩项目,宽度分别为: 200px、300px、200px,它们的flex-shrink值分别为:1、2、3若想刚好容纳下三个项目,需要总宽度为700px,但目前容器只有400px,还差300px所以每个人都要收缩一下才可以放下,具体收缩的值,这样计算:
      • 第一步:计算分母:(200×1) +(300×2) +(200×3) = 1400
      • 第二步:计算比例
        • 项目一:(200×1) / 1400 =比例值1
        • 项目二:(300×2) / 1400 =比例值2
        • 项目三:(200×3) / 1400 =比例值3
      • 第三步:计算最终收缩大小:
        • 项目一需要收缩:比例值1 x 300
        • 项目二需要收缩:比例值2 x 300
        • 项目三需要收缩:比例值3 x 300
    • 注意事项:如果收缩有偏差,大部分情况下是因为收缩项目的边框导致的。
6.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初始值)
7.项目排序与单独对齐
  • 项目排序:
    • order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0。
  • 单独对齐:
    • 通过align-self 属性,可以单独调整某个伸缩项目的对齐方式
    • 默认值为auto,表示继承父元素的align-items 属性。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人们常常下定决心“不改变”

"因为我的性格很悲观" 有的人会觉得一些事情发生,是自己性格使然,改变不了。 但其实性格是可以改变的。 这听起来似乎不太现实,自己的性格就是这样,怎么会改变? 那换种表达,我们看待世界的方式可…

【leetcode】17.04 消失的数字

目录 1. 思路2. 代码 题目链接:leetcode 17.04.消失的数字 题目描述: 1. 思路 要求算法复杂度为O(n),有两种方式: (1)利用异或交换律 与nums所有元素异或一遍;与0-n的值异或,n…

吴恩达《机器学习》5-6:向量化

在深度学习和数值计算中,效率和性能是至关重要的。一个有效的方法是使用向量化技术,它可以显著提高计算速度,减少代码的复杂性。接下来将介绍向量化的概念以及如何在不同编程语言和工具中应用它,包括 Octave、MATLAB、Python、Num…

【wp】2023鹏城杯初赛 Web web1(反序列化漏洞)

考点&#xff1a; 常规的PHP反序列化漏洞双写绕过waf 签到题 源码&#xff1a; <?php show_source(__FILE__); error_reporting(0); class Hacker{private $exp;private $cmd;public function __toString(){call_user_func(system, "cat /flag");} }class A {p…

SpringCloudTencent(上)

SpringCloudTencent 1.PolarisMesh介绍2.北极星具备的功能3.北极星包含的组件4.功能特性1.服务管理1.服务注册2.服务发现3.健康检查 2.配置管理 5.代码实战1.环境准备2.服务注册与发现3.远程调用 1.PolarisMesh介绍 1.北极星是腾讯开源的服务治理平台&#xff0c;致力于解决分…

高速缓存--直接映射

某高速缓存大小 256 字节&#xff0c;直接映射&#xff0c;块大小为 16 字节。定义 L 为数据装载命令&#xff0c;S 为存储&#xff0c;M 为数据修改。若每一数据装载(L)或存储(S)操作可引发最多 1次缓存缺失(miss)&#xff1b;数据修改操作(M)可认为是同一地址上 1 次装载后跟…

半导体芯片制造行业MES系统解决方案

半导体产业作为现代电子科技的重要支柱&#xff0c;驱动着电子设备和通信技术的飞速发展。随着技术不断演进&#xff0c;半导体制造企业面临着越来越多的挑战&#xff0c;如高度复杂的工艺流程、全球化的竞争、质量控制的要求以及能源效率等问题。 为了应对这些挑战&#xff0…

错误页 模板

下载链接&#xff1a;https://ext.dcloud.net.cn/plugin?id15229 http://下载链接&#xff1a;https://ext.dcloud.net.cn/plugin?id15229 如有问题可添加下方名片

JVM字节码文件浅谈

文章目录 版权声明java虚拟机的组成字节码文件打开字节码文件的姿势字节码文件的组成魔数&#xff08;基本信息&#xff09;主副版本号&#xff08;基本信息&#xff09;主版本号不兼容的错误解决方法基本信息常量池方法 字节码文件的常用工具javap -v命令jclasslib插件阿里art…

JsonPath 数据快速查找和提取工具

常用语法 表达式说明$表示根元素$.key选择根元素下的指定键名的值$.*选择根元素下的所有属性值$.array[*]选择根元素中的数组的所有元素$.key[subkey]选择根元素中的键名为key&#xff0c;子键名为subkey的值$.key[*].subkey选择根元素中的键名为key的所有元素的子键名为subke…

4 sql语法基础

1、DISTINCT 相同值只会出现一次。它作用于所有列&#xff0c;也就是说所有列的值都相同才算相同。 2、LIMIT 限制返回的行数。可以有两个参数&#xff0c;第一个参数为起始行&#xff0c;从 0 开始&#xff1b;第二个参数为返回的总行数。 返回前 5 行: SELECT * FROM myt…

day02_第一个Java程序

在开发第一个Java程序之前&#xff0c;我们必须对计算机的一些基础知识进行了解。 常用DOS命令 Java语言的初学者&#xff0c;学习一些DOS命令&#xff0c;会非常有帮助。DOS是一个早期的操作系统&#xff0c;现在已经被Windows系统取代&#xff0c;对于我们开发人员&#xf…