[知其所以然]探究Flex盒子的‘’弹性‘’(上)

简介: 我们使用Flexbox 实现垂直水平居中、自适应容器宽度乐此不疲,因为确确实实很方便。可以简便、完整、响应式地实现各种页面布局,目前已得到所有现代浏览器的支持。但Flex属性如何计算呢?

定义


Flex是Flexible Box的缩写,翻译成中文就是“弹性盒子”,用来为盒状模型提供最大的灵活性。任何一个容器都可以指定为Flex布局。


基本概念


采用Flex布局的元素,被称为Flex容器(flex container),简称“容器”。其所有子元素自动成为容器成员,称为Flex项目(Flex item),简称“项目”。


容器默认存在两根轴:水平方向主轴(main axis)和垂直方向交叉轴(cross axis),默认项目按主轴排列。(所以Flex 布局默认direction 为 row)


  • main start/main end:主轴开始位置/结束位置;


  • cross start/cross end:交叉轴开始位置/结束位置;


  • main size/cross size:单个项目占据主轴/交叉轴的空间;



属性


容器上的6个属性 项目的6个属性
flex-direction order
flex-wrap flex-grow
flex-flow flex-shrink
justify-content flex-basis
align-items flex
align-content align-self


正题: 项目属性 flex 是如何计算 ?


flex 属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选。


相关概念


  • 剩余空间: 当所有Flex项目尺寸大小之和小于Flex容器时,Flex容器就会有多余的空间没有被填充,那么这个空间就被称为Flex容器的剩余空间(Positive Free Space)



  • 不足空间: 当所有Flex项目尺寸大小之和大于Flex容器时,Flex容器就没有足够的空间容纳所有Flex项目,那么多出来的这个空间就被称为负空间(Negative Free Space)



首先我们先看一下 flex-basis 可以设置的值有哪些


/* Specify <'width'> */
flex-basis: 10em;     
flex-basis: 3px;
flex-basis: auto;
/* Intrinsic sizing keywords */
flex-basis: fill;
flex-basis: max-content;
flex-basis: min-content;
flex-basis: fit-content;
/* Automatically size based on the flex item’s content */
flex-basis: content;
/* Global values */
flex-basis: inherit;
flex-basis: initial;
flex-basis: unset;


The flex-basis property is specified as either the keyword content or a <'width'>. 好多新的属性值,和width的 属性值 类似。


我们再次了解一下max/min-content、fit-content 及 fill-available 等width值


描述


  • max-content: 假设我们的容器有足够的宽度,足够的空间,此时,所占据的宽度是就是 max-content 所表示的尺寸。


  • min-content: 采用内部元素最小宽度值最大的那个元素的宽度作为最终容器的宽度。


  • fit-content: 缩小以适应


  • fill-available: 自动填满剩余的空间

效果—1 max-content



效果—2 min-content



相关文章
|
13天前
|
容器
【掰开揉碎】 Flex 布局参数
【掰开揉碎】 Flex 布局参数
|
3月前
|
前端开发 容器
浮动的魅力与挑战:如何在前端设计中巧妙运用浮动(上)
浮动的魅力与挑战:如何在前端设计中巧妙运用浮动(上)
浮动的魅力与挑战:如何在前端设计中巧妙运用浮动(上)
|
3月前
|
前端开发 容器
浮动的魅力与挑战:如何在前端设计中巧妙运用浮动(下)
浮动的魅力与挑战:如何在前端设计中巧妙运用浮动(下)
浮动的魅力与挑战:如何在前端设计中巧妙运用浮动(下)
|
8月前
|
容器
教你快速上手Flex弹性盒布局(项目属性)
教你快速上手Flex弹性盒布局(项目属性)
|
前端开发 小程序 容器
【小程序】&【web前端】必备-Flex布局详解(弹性盒子)
【小程序】&【web前端】必备-Flex布局详解(弹性盒子)
344 0
|
容器
flex弹性盒布局知识点
flex弹性盒布局知识点
117 0
|
Java 程序员 容器
Flex弹性盒子(一篇带你掌握潮流 Flex 布局)(下)
5.当切换容器排列方式后,水平对齐以及垂直对齐的 应用 变化(重点、难点⭐⭐⭐⭐⭐) 当使用flex-direction: (例 column) ;时 justify-content 、 align-content 、align-items发生的变化 当排列为column / column-reverse 时,其实容器的主轴发生了变化 主轴现在是竖轴,副轴是横轴
102 0
Flex弹性盒子(一篇带你掌握潮流 Flex 布局)(下)
|
前端开发 安全 容器
Flex弹性盒子(一篇带你掌握潮流 Flex 布局)(上)
Flex弹性盒子 1.说在前头 1.1.Flex布局出现之前 我们知道传统的页面布局依赖于 盒状模型 依赖于display、position、float属性 对于某些特殊布局来说特别不方便,比如垂直居中(比较不容易实现) 1.2.Flex布局出现后 2009年,W3C提出Flex布局 简便、完整、响应式的各种实现页面布局(目前已得到所有主流浏览器的支持)
259 0
Flex弹性盒子(一篇带你掌握潮流 Flex 布局)(上)
|
容器
超Q的弹性盒子——flex✨
还记得小时候的QQ糖吗,超Q的口感。 而在布局中所使用的弹性盒子也会让你在开发中QQ弹弹 Come on baby
111 3
超Q的弹性盒子——flex✨
|
小程序 数据可视化 前端开发
吐血整理!一文吃透小程序必备Flex布局
吐血整理!一文吃透小程序必备Flex布局
192 0
吐血整理!一文吃透小程序必备Flex布局