flex布局flex取值以及align-self、align-content、align-items的区别

2023-10-27

flex取值

flex是 flex-grow, flex-shrink,flex-basis 的缩写

flex取值 flex-grow flex-shrink flex-basis
默认值 0 1 auto
none 0 0 auto
auto 1 1 auto
非负数字(例如flex:3) 非负数字(3) 1 0%
长度或百分比(例如flex:3px或flex:10%) 1 1 长度或百分比(3px或10%)
两个非负数字(例如flex:3 7) 前一个值(3) 后一个值(7) 0%
一个非负数字,一个长度或百分比(例如flex:3 5px或flex:3 20%) 非负数字(3) 1 长度或百分比(5px或20%)

在ie11上,flex:1会当成flex: 1 1 0px;其他浏览器当成flex:1 1 0%
如果flex-basis的值为百分数,且它flex容器的尺寸没有被显式设置,此时flex-basis的值会被解析为content。content 值会根据flex子项的内容(指flex子项的子元素尺寸)来计算实际尺寸,多数情况下效果与 max-content 值一致,就是说flex子项的子元素有多长其主轴初始值就有多长

参考文档:
flex:1代表什么意思

flex-grow属性

grow 在 flex 容器下的子元素的宽度和比容器和小的时候起作用。 grow 定义了子元素的尺寸增长因子,容器中除去子元素之和剩下的尺寸会按照各个子元素的 grow 值进行平分加大各个子元素上。
例如有父元素宽度剩余10,3个元素x1(宽10)、x2(宽20)、x3(宽30)

  • 当子元素felx-grow之和大于0时,子元素的宽度为:
    本身宽度+剩余宽度x(flex-grow值/flex-grow值之和)
    例如上述各自的felx-grow值为1,2,3,计算规则为:
6=1+2+3;
x1:10+10*(1/6)
x2:20+10*(2/6)
x3:30+10*(3/6)
  • 当子元素felx-grow之和小0时,宽度为:本身宽度+剩余宽度xflex-grow,和felx-grow之和大于0相比,把flex-grow之和看成1就好了
    例如上述各自的felx-grow值为0.1,0.2,0.3,计算规则为:
x1:10+10*(0.1/1)
x2:20+10*(0.2/1)
x3:30+10*(0.3/1)

flex-grow 还会受到 max-width 的影响。如果最终 grow 后的结果大于 max-width 指定的值,max-width 的值将会优先使用

flex-shrink 属性

flex-shrink属性定义空间不够时各个元素如何收缩
例如有父元素宽度溢出10,3个元素x1(宽10)、x2(宽20)、x3(宽30)

  • 当子元素felx-grow之和大于0时,子元素的宽度为:
    本身宽度-溢出宽度x(flex-shrink值x本身宽度/各个flex-shrink值x各自本身宽度之和)
    例如上述各自的felx-shrink值为1,2,3,计算规则为:
140=1*10+2*20+3*30;
x1:10-10*(1*10/140)
x2:20-10*(2*20/140)
x3:30-10*(3*30/140)
  • 当子元素felx-grow之和小于0时,子元素的宽度为:
    本身宽度-(溢出宽度 x flex-shrink值之和)x(flex-shrink值x本身宽度/各个flex-shrink值x各自本身宽度之和)
    例如上述各自的felx-shrink值为0.1,0.2,0.3,计算规则为:
14=0.1*10+0.2*20+0.3*3;
6=10*(0.1+0.2+0.3)
x1:10-6*(0.1*10/14)
x2:20-6*(0.2*20/14)
x3:30-6*(0.3*30/14)

类似 flex-grow,flex-shrink 也会受到 min-width 的影响
参考文档:
详解 flex-grow 与 flex-shrink

flex-basis属性

flex-basis指定了flex-item在主轴方向上的的初始大小
如果子容器设置了flex-basis或者width,那么在分配空间之前,他们会先跟父容器预约这么多的空间,然后剩下的才是归入到剩余空间,然后父容器再把剩余空间分配给设置了flex-grow的容器。

如果同时设置flex-basis和width,那么width属性会被覆盖,也就是说flex-basis的优先级比width高

如果flex-basis和width其中有一个是auto,那么另外一个非auto的属性优先级会更高。

flex-basis和width都为auto值,那最后的空间就是根据内容多少来定的,内容多占据的水平空间就多
参考文档:深入理解css3中的flex-grow、flex-shrink、flex-basis

align-self、align-content、align-items的区别

align-item 属性需要施加在 flex 容器上,它规定的是 flex 容器中所有 item 在交叉轴中的对齐方式;设置flex 容器中所有的 item 都按一个方向对齐时用它(图片来自阮大博客)

align-self 属性则施加在 flex 容器中的 item 上,允许单个项目有与其他项目不一样的对齐方式,它覆盖了外部容器规定的 align-items 属性,同样也只规定在交叉轴上的对齐方式,如果想设置某一个item有不一样的对齐方式的时候,可以用它(图片来自阮大博客)

对比 align-items 和 align-self 直接移动 item 自身在交叉轴上的基线,align-content 移动的是容器自身的 flex line,并仅对多行的项目起作用(图片来自阮大博客)

参考文档:
flex布局教程
笔记:flex-wrap 和 align-self,align-items,align-content 之间的关系

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

flex布局flex取值以及align-self、align-content、align-items的区别 的相关文章

  • 使用 href 和 php 从 sql 数据库对 html 表进行排序

    我有一个 html 表 其中包含来自 php 吐出的 sql 表的产品数据 我想通过单击表列的标题对数据进行排序 我像这样输出我的表 php product list sql mysql query SELECT FROM products
  • 将文本置于圆形按钮上居中

    我想创建一个按钮圆形链接 其中包含文本 但我在将文本置于圆形按钮内居中时遇到问题 行高太大 对这个问题有什么建议吗 这是代码 https jsfiddle net hma443rL https jsfiddle net hma443rL b
  • Javascript:自动点击按钮?

    我正在学习如何编写 chrome 扩展 而且我对 javascript 还很陌生 这是一些 html div class button data a class button1 whiteColor href http link1 com
  • 使用 javascript 更改整个 CSS 类的样式

    有没有办法使用 javascript 更改 CSS 类的属性 p class fool p
  • 谷歌浏览器自动填充所有密码输入

    我的问题 我必须打开谷歌来自动填充我网站上的登录信息 但是现在每当我想编辑我的帐户信息或编辑其他用户帐户信息 作为管理员 时 它都会尝试自动填充该登录数据 它在奇怪的地方填充了我的数据 问题似乎是 Chrome 会自动用某种密码填充任何输入
  • mediaelement.js 视频无法在 IE8 中播放

    我已经浏览了这里提出的所有其他问题 但没有什么能真正解决我的问题 目前 视频可以在 Chrome Safari FF 和 IE9 中加载和播放 但不能在 IE8 中加载 这是我需要支持的最后一个浏览器 您可以查看页面here http 20
  • 标签转换问题

    我是 html css 新手 当用户在输入框中输入无效输入时出现错误 然后特定输入字段的标签会下降 但是当用户输入时 输入正确则工作正常
  • 如何使用纯 CSS 始终使灵活的正方形在视口中居中?

    我知道这个问题 高度等于动态宽度 CSS 流体布局 https stackoverflow com questions 5445491 height equal to dynamic width css fluid layout 但我想要更
  • IFrame 内容交换错误?

    我有一个包含许多 iframe 的网页 包括第三方 iframe 例如广告感知和各种共享按钮 在 Firefox 中 我注意到这些 iframe 的内容有时会被交换 这样您就会在另一个 iframe 所在的位置看到广告感知广告 iframe
  • CSS 停止表格行内的分页符

    我试图避免在可能超过一页的 HTML 表的行内出现分页符 我正在使用 Internet Explorer 打印预览以及 BCL EasyPDFSDK 转换为 PDF 来测试这一点 我将以下 CSS 样式以各种组合应用到 td 元素 但对于每
  • 具有自定义尺寸的线性渐变

    我有这样的设计 它已经用 html css 创建 但我需要删除 1 和 5 的额外线条 这是通过添加绝对位置元素来创建灰线来实现的 但容器点的大小是响应式的 我的想法是为每个容器创建一个背景线性渐变 如下所示 for all backgro
  • .net MVC 将 MP4 流式传输到 iDevice 问题

    我一直在编写用于提供视频服务的一段代码 但遇到了一些问题 代码如下 public ResumingFileStreamResult GetMP4Video string videoID if User Identity IsAuthenti
  • 如何在移动设备上垂直堆叠 div 而在网页版本上保持水平放置?

    我添加了一些 div 标签以在 WordPress 帖子中创建两列 这是我使用的代码 container width 100 one width 50 float left two width 50 float right 我将上面的代码添
  • 大小相同的表格单元格填充包含表格的整个宽度

    有没有办法使用 HTML CSS 具有相对大小调整 使一行单元格拉伸其所在表格的整个宽度 单元格的宽度应该相等 并且外表的大小也是动态的 table width 100 目前如果我不指定固定大小 单元格只是自动调整大小以适应其内容 您甚至不
  • 如何在网格视图的单元格中插入换行符?

    我想知道如何在网格视图的单元格中添加换行符 现在 我把 1 1 1 然而 这呈现为 1 1 1 如何修复换行符 以便每个数字显示在自己的行上 Add HtmlEncode False to asp BoundField并且在正文中 应该有
  • KineticJS - 将舞台缩放到视口

    我正在努力将默认分辨率设置为 1366x756 我会根据视口来放大和缩小它 类似于此处显示的示例 http blogs msdn com b davrous archive 2012 04 06 modernizing your html5
  • 为什么这个 CSS nowrap 不起作用?

    我试图阻止 bar top container div 包裹它的内容 无论页面有多宽 即两个选择应该始终出现在同一行 但是当页面宽度太小而无法容纳它们时 这不起作用一方面 我该如何解决这个问题 Styles bar top containe
  • 网页抓取 - 如何识别网页上的主要内容

    给定一个新闻文章网页 来自任何主要新闻来源 例如时报或彭博社 我想识别该页面上的主要文章内容 并丢弃其他杂项元素 例如广告 菜单 侧边栏 用户评论 在大多数主要新闻网站上都可以使用的通用方法是什么 有哪些好的数据挖掘工具或库 最好是基于Py
  • 使用后代选择器的响应式网站

    我试图使用媒体查询使我的网站响应 但是当我在代码的某些部分使用后代选择器时 页面没有响应 当我使用此代码时 该页面是响应式的 div1 float left width 20 height 200px background color re
  • addEventListener keydown 不起作用

    我在互联网上找到了一些基本的 Pong 代码 并尝试添加按键 代码在这里 http cssdeck com labs ping pong game tutorial with html5 canvas and sounds http css

随机推荐

  • ubuntu设置环境变量

    vim bashrc export VCPKG FORCE SYSTEM BINARIES 1 export VCPKG HOME PATH vcpkg export X VCPKG ASSET SOURCES x azurl http 1
  • GPT-4最强竞争对手Claude 2震撼发布,据说超过GPT-4?

    OpenAI 发布了 GPT 4 的 API 和令人兴奋的 最强插件 代码解释器 这无疑给竞争对手们敲响了警钟 而最近 Anthropic 旗下的 Claude 揭开了它的第二代面纱 免费使用Claude 2请加微信wyxyellow 相较
  • GAN之生成对抗网络(Matlab)

    代码来源 代码全文 clear all close all clc Basic Generative Adversarial Network Load Data load mnistAll mat trainX preprocess mni
  • DMRS在5G NR各种物理信道上的配置

    笔者在微信公众号GiveMe5G定期发布学习文章 更多更及时 欢迎订阅和分享 文章下方有二维码 本篇文章旨在介绍DMRS DeModulation Reference Signal 在5G中 DMRS广泛存在于各个重要的物理信道当中 如下行
  • MMdetection的Proposal原理和代码解析

    一 算法原理 接受N级score bbox pred anchor和image shape作为输入 通过anchor和框的偏移 bbox pred 得到proposal 然后对这些proposal做NMS 最后选出前num个 二 执行步骤
  • golang 组成树形格式

    该封装受到前端 js filter函数的启发看着特别简洁 一 封装一个函数 比较简单就是循环根据传入的 回调函数 进行过滤组成新的数组返回 func Filter T any arr T f func item T bool list T
  • 震动传感器介绍及实战(中断)

    项目要求 利用震动传感器实现点灯效果 当传感器察觉震动 led灯亮 否则不亮 接线及引脚 传感器信号引脚DO接PA4 led1灯的引脚接PB8 所以中断的信号源就是PA4引脚 配置STM32 PB8设置成output 输出给led 打开使能
  • 红黑树结构算法原理与代码解析

    红黑树 Red Black Tree 平衡二叉B树 是一种自平衡二叉查找树 是在计算机科学中用到的一种数据结构 典型的用途是实现关联数组 典型的普通顺序数组结构的增 删 查效率都是O n 但是红黑树进行读写操作时的效率可以稳定在O log
  • JAVA笔记

    目录 模板模式的理解 使用模板模式的例子 整合工厂模式 模板模式的理解 模板模式简单理解就是创建一个抽象父类作为模板 可以分两部分 一部分是定义了所有子类都需要执行的公共方法 这样就不用在每个子类中重复写相同代码 另一部分就是强制规定每个子
  • php面试题之四——PHP面向对象(基础部分)

    1 写出 php 的 public protected private 三种访问控制模式的区别 新浪网技术部 public 公有 任何地方都可以访问 protected 继承 只能在本类或子类中访问 在其它地方不允许访问 private 私
  • (Oracle技能篇) oracle数据库分页查询和各大数据库的分页查询

    1 oracle数据库分页 select from select a rownum rc from 表名 where rownum lt endrow a where a rc gt startrow 2 DB2数据库分页 Select f
  • 堆与栈的区别详细总结

    常见的数据结构 数组 栈 队列 链表 树 图 散列表 哈希表 堆与栈的区别 堆 队列优先 先进先出 FIFO firstinfirstout 栈 先进后出 FILO First In Last Out 一般情况下 如果有人把堆栈合起来说 那
  • js浏览器回到顶部方法_js 返回顶部按钮

    要求 当鼠标从顶部滚动后 显示返回顶部按钮 点击按钮 页面平滑滚动到顶部 按钮隐藏 1 css scrollTop position fixed bottom 20px right 20px height 0px width 45px li
  • [ Android实战 ] 开机时通过广播启动应用,但是很长时间才能接收到,如何解决?

    Android实战 开机时通过广播启动应用 但是很长时间才能接收到 如何解决 背景 测试 发送广播流程 广播分发流程 解决方案 思考 系统层面 应用层面 总结 转载请注明出处 我的博客 背景 前段时间在做一个项目 在适配客户应用的过程中发现
  • jmeter自动调试系统接口配置流程

    1 起因 最近测试的同事需要用jmeter工具压测一下我们项目的接口 因为接口中有token或者加密登录密码等逻辑 有的地方需要从上一步接口中拿到结果作为下一步的参数 进行传递 因为涉及的有点麻烦 就帮测试看了下这个工具 顺便记录一下 帮助
  • Markdown 实现页内跳转

    Markdown 实现页内跳转 在使用 Markdown 做一些论文笔记或者说写文档时 通常会出现这样一种情况 我们在文档的某个地方定义了一个 t a b l e o
  • 数据库的多表查询操作-查询只选修了1门课程的学生,显示学号、姓名、课程名。

    文章目录 前言 一 建立数据库和表 二 数据库展示 2 查询只选修了1门课程的学生 显示学号 姓名 课程名 总结 前言 在我看来数据库真的是一个神奇的东西 不但里面的只是点很深刻 而且对于我们学习起来还是有一定的压力的 关于数据的知识 我感
  • 【CSAPP】背景知识-调用者保存寄存器与被调用者保存寄存器

    1 调用者保存与被调用者保存 函数A调用了函数B 寄存器rbx在函数B中被修改了 逻辑上 rbx内容在调用函数B的前后应该保持一致 解决这个问题有两个策略 1 在函数A在调用函数B之前提前保存寄存器 rbx的内容 执行完函数B之后再恢复 r
  • 顶会常见的 python matplotlib 双Y轴柱状图

    效果图 代码如下 import matplotlib pyplot as plt import numpy as np plt rc font family Times New Roman x data 1 2 3 ax data 16 2
  • flex布局flex取值以及align-self、align-content、align-items的区别

    flex取值 flex是 flex grow flex shrink flex basis 的缩写 flex取值 flex grow flex shrink flex basis 默认值 0 1 auto none 0 0 auto aut