11月25日笔记
flex布局
参考这篇文章,复习 flex 布局。
- 为块级元素设置
display: flex;(保持块级特性) 或者为内联元素设置display: inline-flex(保持行内特性) 即可创建 flex 布局
作用于父级元素上的属性
-
flex-direction设置主轴方向,默认值row,即按照文档流的方式从左往右排列。可选属性值:row-reverse按照文档流的方式从右往左排列;column从上到下垂直方向排列;column-reverse从下到上垂直排列。 -
flex-wrap设置子元素是否换行显示。默认值nowrap, 不换行。可选属性:wrap当父元素宽度不够时换行;wrap-reverse父元素宽度不够时换行,但是是从下往上换行。 -
flex-flow是flex-direction和flex-wrap的缩写。写法:flex-flow: <‘flex-direction’> || <‘flex-wrap’> -
justify-content设置水平方向上的子元素的对齐方式(单行)。默认值为flex-start与文档流方向相关,左对齐。可选属性:felx-end右对齐;center:居中对齐。space-between两端对齐,多余的间距只在中间元素区域平分;space-around每个子元素两侧都环绕互不干扰的等宽的空白间距;space-evenly每个子元素两侧空白间距完全相等。 -
align-items设置垂直方向上的子元素对齐方式。默认值为stretch子项拉伸高度,如果设置了高度则按照高度渲染。可选属性值:flex-start与文档流方向有关,默认为容器顶部对齐;flex-end底部对齐;center垂直居中对齐;baseline相对于flex容器的基线对齐。 -
align-content设置垂直方向上子元素的对齐方式(多行)。默认值stretch每一行flex子元素都等比例拉伸。可选参数:flex-start顶部对齐;flex-end底部对齐;center整体垂直居中;space-between上下两行两端对齐,剩下每一行元素等分剩余空间;space-around每一行元素上下都有独立且不重叠的空白间距;space-evenly每一行元素都上下等分。
作用在子元素上的属性
-
order设置某一个 flex 子项的排列位置。默认值 0。如果不设置就按照本身的排列顺序;如果越大的越往后排列,越小的越往前排列。可以设置负数。 -
flex-grow扩展子元素所占的空间,扩展所占的空间是出去元素外的剩余的空白间隙,不支持负值。所有的剩余空间总量是1,如果只有一个 flex 子项设置了flex-grow且值小于1,那么扩展的空间就是与剩余空间的比例;如果大于1,则占据所有的剩余空间。如果多个子项设置了flex-grow且和小于1 则按照比例计算,如果和大于1,则按各个子项所占据的比例计算。 -
flex-shrink当空间不足的时候,单个元素的收缩比例,不支持负值,与 flex 相似。 -
flex-basis定义元素渲染的大小,默认值为 auto。如果有 width 则占据的大小就是 width,没有设置就按照内容宽度来。如果同时设置了width 和flex-basis会忽略 width 。 -
flex是flex-grow,flex-shrink和flex-basis的缩写。默认值为0 1 autoflex: none | auto | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ] -
align-item单独控制某一个 flex 子元素的垂直对齐方式,用法类似与 align-items。默认值 auto 是指继承父元素中的 align-items 的属性值。align-self: auto | flex-start | flex-end | center | baseline | stretch;
可选链 ?.
可选链用于深层次访问对象中的属性是否存在。如果我们要判断一个对象中的某个对象的某个属性是否存在时,为了安全起见,需要提前判断这个对象中的某个对象是否存在,然后再判断这个对象的某个属性是否存在。
let person = {
tom: {
age: 21,
address: 'london'
}
}
// 获取person中tom的age。person中不一定存在tom这个对象
// 如果存在tom这个对象,才去访问tom的age
let age = person.tom && person.tom.age
// 使用可选链
// 如果tom不存在,则会直接返回undefined,如果存在则会取到tom的age
let age1 = person.tom?.age
注意:可选链不能用于赋值操作
let obj = {}
obj?.name = 'tom' // Uncaught SyntaxError: Invalid left-hand side in assignment
其他内容
- let 和const 关键字
- 变量的解构赋值
- 字符串的新增方法
- Symbol 数据类型
- 遍历器和 for...of 的用法,for...of 用于循环具备 iterator 接口的数据如:数组、字符串、arguments 对象、DOM nodelist对象,Generator对象
- 弹出框案例
明天计划
- promise 对象复习
- async 函数
- class 相关
- set 和 map 数据结构
- 其他任务

浙公网安备 33010602011771号