2.8 CSS 伸缩盒模型

news2025/6/29 13:33:34
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.coloradmin.cn/o/1172464.html

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

相关文章

0008Java安卓程序设计-ssm基于Android平台的健康管理系统

文章目录 **摘要**目录系统实现开发环境 编程技术交流、源码分享、模板分享、网课教程 🐧裙:776871563 摘要 首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,…

那些看起来高大上的封装函数

什么 ToGray 只支持3通道图像, 让我看看怎么个事 就这么生硬的加了个判断 好家伙 调用了下opencv ,通道数都不判断一下

Java多线程面试题:如何在多个子线程中捕获异常并引发主线程异常?

亲爱的小伙伴们,大家好!我是你们的小米,今天我要和大家分享一个热门的技术话题——"面试题:多个子线程中,其中一个子线程异常时主线程如何抛出异常并返回?"。这是在面试中经常被问到的问题&#…

【多线程】Lambda表达式

package org.example;public class TestLambda {public static void main(String[] args) {Like likenew Like();like.lambda();}}//定义一个函数式接口 interface ILike{void lambda(); }//实现类 class Like implements ILike{Overridepublic void lambda() {System.out.prin…

Vue Vue3

1、创建VUE3工程 使用vue-cli创建: ## 查看vue/cli版本,确保vue/cli版本在4.5.0以上 vue --version ## 安装或者升级你的vue/cli npm install -g vue/cli ## 创建 vue create vue_test ## 启动 cd vue_test npm run serve 使用vite创建: …

【笔记】单片机卡死的八大原因和解决方法

在微控制器上,程序卡住(即停止执行)可能有多种原因。下面我将列举一些常见的原因,并提供一些可能导致程序卡住的示例情况。请注意,这里只是一些示例,并不能穷尽所有可能的情况。 1. 死循环(Infi…

基于若依的ruoyi-nbcio流程管理系统增加仿钉钉流程设计(六)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 这节主要讲条件节点与并发节点的有效性检查,主要是增加这两个节点的子节点检查,因为…

C/C++输出字符菱形 2021年3月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析

目录 C/C输出字符菱形 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 C/C输出字符菱形 2021年3月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 给定一个字符,用它构造一个对角线长…

学习c++的第十天

目录 类 & 对象 类定义 对象的建立和使用 构造函数(Constructor) 析构函数(Destructor) 拷贝构造函数 扩展知识 this指针 友元函数的使用方法 友元类的使用方法 常数据的使用及初始化 类 & 对象 什么是类?什么是对象?对于面向对象的…

【黑马程序员】SSM框架——SpringBoot(未完成)

文章目录 前言一、SpringBoot 简介1. 入门案例1.1 入门程序① 创建新模块② 选择当前模块需要使用的技术集③ 开发控制类④ 运行自动生成的 Application 类 1.2 创建 SpringBoot 程序的两种方式1.2.1 最简 SpringBoot 程序所包含的基础文件1.2.2 基于 SpringBoot 官网创建项目 …

vue3后台管理系统之实现分页功能

例子:用户 请求格式 返回数据类型 {"code": 200,"message": "获取所有用户成功","total": 19,"totalPages": 2,"currentPage": 1,"data": [{"id": 1,"username": &qu…

6-8 最宽层次结点数 分数 10

文章目录 1.题目描述2.本题ac答案2.1法一: 代码复用2.2法二: 顺序队列实现层序遍历 3.C层序遍历求最大宽度3.1层序遍历代码3.2求最大宽度 1.题目描述 2.本题ac答案 2.1法一: 代码复用 //二叉树第i层结点个数 int LevelNodeCount(BiTree T, int i) {if (T NULL || i < 1)re…

CleanMyMacX4.16破解版激活码

CleanMyMac X是一款颇受欢迎的专业清理软件&#xff0c;拥有十多项强大的功能&#xff0c;可以进行系统清理、清空废纸篓、清除大旧型文件、程序卸载、除恶意软件、系统维护等等&#xff0c;并且这款清理软件操作简易&#xff0c;非常好上手&#xff0c;特别适用于那些刚入手苹…

卡尔曼家族从零解剖-(04)贝叶斯滤波→细节讨论,逻辑梳理,批量优化

讲解关于slam一系列文章汇总链接:史上最全slam从零开始&#xff0c;针对于本栏目讲解的 卡尔曼家族从零解剖 链接 :卡尔曼家族从零解剖-(00)目录最新无死角讲解&#xff1a;https://blog.csdn.net/weixin_43013761/article/details/133846882 文末正下方中心提供了本人 联系…

C++虚表与虚表指针详解

类的虚表 每个包含了虚函数的类都包含一个虚表。 当一个类&#xff08;B&#xff09;继承另一个类&#xff08;A&#xff09;时&#xff0c;类B会继承类A的函数的调用权。所以如果一个基类包含了虚函数&#xff0c;那么其继承类也可调用这些虚函数&#xff0c;换句话说&…

系统设计中的缓存技术:完整指南

Image.png 缓存是软件工程中用于提高系统性能和用户体验的基本技术。它通过临时存储频繁访问的数据在缓存中&#xff0c;缓存比数据的原始来源更容易访问。 作为一名软件工程师&#xff0c;了解缓存以及它在不同类型的系统中的工作方式是至关重要的。在本文中&#xff0c;我们将…

linux 查看当前目录下每个文件夹大小

要在 Linux 中查看当前目录下每个文件夹的大小&#xff0c;可以使用 du 命令&#xff08;磁盘使用情况&#xff09;结合其他一些选项。下面是几个常用的命令示例&#xff1a; 显示当前目录下每个文件夹的大小——只显示一层文件夹&#xff1a; du -h --max-depth1该命令会以人…

微信小程序授权登录获取用户的openid

小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识&#xff0c;快速建立小程序内的用户体系然而因为小程序中的openid不可以直接使用需要用code&#xff08;登录凭证&#xff09;去换取openid 获取openid的思路 获取openid首先需要调用小程序的login方法…

佳易王配件进出库开单打印进销存管理系统软件下载

用版配件进出库开单打印系统&#xff0c;可以有效的管理&#xff1a;供货商信息&#xff0c;客户信息&#xff0c;进货入库打印&#xff0c;销售出库打印&#xff0c;进货明细或汇总统计查询&#xff0c;销售出库明细或汇总统计查询&#xff0c;库存查询&#xff0c;客户往来账…

web:[CISCN2019 华北赛区 Day2 Web1]Hack World

题目 打开页面&#xff0c;页面提示为&#xff0c;想要的都在‘flag’表和‘flag’列里 随便输入一个数字看回显&#xff08;1 2 3&#xff09;&#xff0c;发现回显不一样 输入1 输入2 输入3 输入4 输入单引号&#xff0c;显示bool&#xff08;false&#xff09; 尝试一下万能…