共计 2273 个字符,预计需要花费 6 分钟才能阅读完成。
响应式布局【flex】
来源于 响应式方法汇总
了解了以上响应式布局,下面重点介绍一下 flex 弹性布局 , 非常有用, 但是有记忆障碍的我,为了下次还能顺利的记起来,还是总结一下吧,顺便把我看的几个博客内容和大家分享一下,写的非常详细,很好理解。
扩展
1. 查看 css 属性兼容性情况
https://caniuse.com/
2. 盒子模型 box-sizing
- content-box(标准盒子模型)
width = content-width;
解析:当盒子内容宽度固定时,设置盒子的 padding 和 border,盒子模型宽高会变大,向外扩展,实际 content 内容不变(注意:margin 始终在盒子外);
- border-box(IE 盒子模型)
width = content-width + padding +border;
解析:当盒子内容宽度固定时,设置盒子的 padding 和 border,盒子模型宽高不变,向内扩展,实际 content 内容变小(注意:margin 始终在盒子外);
3. 样式兼容(postCss 插件)
vscode 自动添加 css 兼容代码插件
flex 弹性布局
采用 Flex 布局的元素,称为 Flex 容器(flex container),简称”容器 ”。它的所有子元素称为 Flex 项目(flex item),简称” 项目”。
注意,设为 Flex 布局以后,子元素的 float、clear 和 vertical-align 属性将失效。
1. 弹性容器
display:flex;
2. 容器属性
justify-content————项目在主轴上的对齐方式(水平或垂直由 flex-direction 决定)
- flex-start (默认 居左 )
- flex-end (居右 )
- center(居中 )
- space-between(两端对齐 项目之间的间隔都相等 )
- space-around(每个 项目 两侧的 间隔相等 )
align-items————交叉轴上如何对齐(水平或垂直由 flex-direction 决定)
- stretch(默认 如果项目未设置高度或设为 auto,将占满整个容器的高度 )
- flex-start (对齐起点 )
- flex-end (对齐终点 )
- center(对齐中点 )
- baseline(项目的第一行 文字的基线对齐 )
flex-direction————决定主轴的方向
- row(默认 横向排列 起点在左 )
- row-reverse(横向排列 起点在右 )
- column(纵向排列 起点在头【上】 )
- row-reverse(纵向排列 起点在尾【下】 )
flex-wrap————子元素是否换行
- nowrap(默认 不换行 )
- wrap(换行 )
- wrap-reverse(反向换行 )
flex-flow————<flex-direction> <flex-wrap>(flex-direction 属性和 flex-wrap 属性的简写形式)
- 默认是 row nowrap
3. 项目属性
order
order: <integer>/* default 0 */
- JavaScript 语法:object.style.order=”2″
- 规定项目顺序
- 数值越小,排列越靠前
- 默认值为 0
flex-grow
flex-grow: <number>; /* default 0 */
- JavaScript 语法:object.style.flexGrow=”5″
- 规定项目的放大比例
- 如果所有项目的 flex-grow 属性都为 1,则它们将等分剩余空间(如果有的话). 如果一个项目的 flex-grow 属性为 2,其他项目都为 1,则前者占据的剩余空间将比其他项多一倍.
- 默认值为 0
flex-shrink
flex-shrink: number|initial|inherit; /* default 1 */
- JavaScript 语法:object.style.flexShrink=”5″
- 定义了项目的缩小比例
- 如果所有项目的 flex-shrink 属性都为 1,当空间不足时,都将等比例缩小. 如果一个项目的 flex-shrink 属性为 0,其他项目都为 1,则空间不足时,前者不缩小.
- 默认值为 1
flex-basis
flex-basis: number|auto|initial|inherit; /* default auto */
- JavaScript 语法:object.style.flexBasis=”200px”
- 定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。
- 它可以设为跟 width 或 height 属性一样的值(ep:300px),则项目将占据固定空间.
- 默认值为 auto
flex
flex: flex-grow flex-shrink flex-basis|auto|initial|inherit;/* default 0 1 auto */
- JavaScript 语法:object.style.flex=”1″
- 默认值为 0 1 auto
align-self
align-self: auto|stretch|center|flex-start|flex-end|baseline|initial|inherit;/* default auto */
- JavaScript 语法:object.style.alignSelf=”center”
- 定义单个项目有与其他项目不一样的对齐方式,可覆盖 align-items 属性。
- 默认值为 auto, 元素继承了它的父容器的 align-items 属性。如果没有父容器则为 “stretch”。
详细主轴和交叉轴的理解请看:30 分钟彻底弄懂 flex 布局