Flex布局介绍
传统的布局解决方案--盒状模型--diplay + position + float
缺陷:对于一些特殊布局(垂直居中)和网格式布局(几行几列)不易实现
09年W3C颁布的--flex布局--使用简单、API完整丰富、响应式动态地实现各种页面布局(一些常见的布局思想)
当然针对Gekco30+以下,最好的布局选择就是flex了,更新式的Grid布局它不支持。
本文来源地:https://css-tricks.com/snippets/css/a-guide-to-flexbox/ ,一个非常好的CSS内容及前端资讯的网站
Flex
Flexible Box弹性布局
任意容器都可以指定成flex布局:
.box {
display: flex;
}
<!-- 行内元素 -->
.box {
display: inline-flex;
}
设为flex布局后,子元素的float、clear、vertical-align将失效
称采用Flex布局的元素为Flex容器(flex container),它的所有子元素自动成为容器成员,称为Flex项目(flex item)。
- 两根轴:
- 水平主轴 main axis
- 主轴与边框的左右交叉点 main start/main end
- 垂直交叉轴 cross axis
- 交叉轴与边框的上下交叉点 cross start/cross end
- 项目(flex item)默认沿主轴排列,单项目占据的主轴空间/交叉轴空间 main size/cross size
flex容器属性
- flex-direction 决定主轴方向=项目排列方向
- flex-wrap 定义如何换行
- flex-flow 它是flex-direction和flex-wrap的简写形式,语法糖
- justify-content 定义项目在主轴上的对齐方式
- align-items 定义项目在交叉轴上的对齐方式
- align-content 定义多根轴线的对齐方式。若项目只有一根轴线则不生效。
1.flex-direction值:
- row(默认值) 主轴为水平方向,起点在左端
- row-reverse 主轴为水平方向,起点在右端
- column 主轴为垂直方向,起点在左端
- column-reverse 主轴为垂直方向,起点在右端
2.flex-wrap值:
- nowrap(默认) 不换行
- wrap 换行,第一行在上方
- wrap-reverse 换行,第一行在下方
默认情况,所有flex项目会排在一条线上,不会自动换行
3.flex-flow默认值:row nowrap
.box {
flex-flow: <flex-direction> <flex-wrap>;
}
4.justify-content值:
- flex-start(默认值) 左对齐
- flex-end 右对齐
- center 居中
- space-between 两端对其,项目间间隔相等
- space-around 单个项目两侧的间隔相等,故项目间间隔相比项目与边框间间隔多一倍
5.align-items值:
- strech(默认值) 如果flex项目未设置高度或设置高度为auto,将占满整个容器的高度
- flex-start 交叉轴起点处对齐
- flex-end 交叉轴终点处对齐
- center 交叉轴中点处对齐
- baseline 项目第一行文字的基线对齐
6.align-content值:
- strech(默认值)
- flex-start
- flex-end
- center
- space-between 与交叉轴两端对齐,轴线间间隔平均分布
- space-around 单轴线两侧间隔相等。轴线间间隔比轴边间隔大一倍
flex项目属性
- order 定义项目排列顺序。数值越小,排列越靠前,默认为0
.item {
order: <integer>;
}
- flex-grow 定义项目放大比例,默认为0
如果所有项目flex-grow属性为1,它们将等分剩余空间。以此类推
- flex-shrink 定义项目缩小比例,默认为1
如果所有项目flex-shrink属性为1,当空间不足时等比例缩小。
如果有一个项目flex-shrink为0,其他项目都为1,空间不足时前者不缩小
- flex-basis 定义在分配多余空间前,项目占据的主轴空间(main size)
浏览器据此计算主轴是否有多余空间,默认值为auto即项目本来的大小
.item {
flex-basis: <length> | auto;
}
- flex 是flex-grow,flex-shink,flex-basis的简写,语法糖,默认值0,1,auto,后两者可选
.item {
flex: none | [<flex-grow> <flex-shrink> ? || <flex-basis>]
}
有两个快捷值:
auto: 1 1 auto
none: 0 0 auto
建议优先使用此属性代替单独写3个分离的属性,因为浏览器会推算相关值。
- align-self 允许单个项目与其他项目不一样的对齐方式,可覆盖align-items属性
默认值auto,表示继承父元素的align-items,如果没有父元素则等同于strech
.item {
align-self: auto | flex-start | flex-end | center | baseline | stretch;
}
- 还有5天,你的比特币最重要的孩子UB-UBTC 可能就永远不属于你了
- Spark SQL 用户自定义函数UDF、用户自定义聚合函数UDAF 教程(Java踩坑教学版)
- Webpack多入口文件、热更新等体验
- 从hello world 解析程序运行机制
- 万达大量员工“被”辞职?曲德君回应:万达网科没有倒
- iOS Programming – 触摸事件处理(2)
- 洋葱海外仓融资2亿元 官网启用msyc.cc域名
- Webpack单元测试,e2e测试
- [看图说话] 基于Spark UI性能优化与调试——初级篇
- Unix下c程序内存泄露检测工具
- 查找链表中倒数第k个结点
- 12日29日人力科技前沿资讯
- 一段奇葩Javascript代码引发的思考
- 路由器、集线器、网关、网桥的联系与区别
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【Java多线程-1】线程概述与线程创建和使用
- 【Java多线程-2】Java线程池详解
- 【Java多线程-3】Future与FutureTask
- 【Java多线程-4】CompletionService详解
- 【Java多线程-5】 CompletableFuture详解
- 【Java多线程-6】synchronized同步锁
- 【Java多线程-7】阅尽Java千般锁
- 【SpringBoot注解-2】AOP相关注解详解
- 【SpringBoot注解-3】Bean注入相关注解
- 【SpringBoot注解-4】:@Target、@Retention、@Documented注解简介
- 【Linux系列-1】top命令详解
- 【Linux系列-2】iostat命令详解
- 【Mybatis-1】MyBatis注解版详解
- 【MyBatis-2】MyBatis之xml 配置版
- 【MyBatis-3】MyBatis xml映射文件详解