flex布局语法
做前端的同学应该了解,最开始页面的布局就是table,在table中填各种内容就好了
后来发展成div+css的模型,各种fix,float什么的
由于移动端设备的兴起,flex模型逐渐进入人们的视野
以下代码就可以定义一个class=”box”的div成一个flex容器
1
2
3 .box{
display: flex;
}
在css世界中,html中有两种元素,一种是块级元素,一种是内联元素。块级元素负责布局,内联元素负责内容。
什么是内容呢?一段文字,一张图片,一个输入框,一个按钮都是内容的范畴,因此他们的标签都是内联元素。
flex作为容器,最重要的6个属性设置:
- flex-direction 控制容器里面元素的排列
- row 横着排(default)
- row-reverse 横着倒过来排
- column 竖着排
- column-reverse 竖着倒过来排
- flex-wrap 控制一行拍不下了怎么办
- nowrap 不换行(default)
- wrap 回车换行,往下排
- wrap-reverse 回车换行,往上排
- flex-flow
简写形式
- justify-content 定义容器里面元素的对齐排列方式
- flex-start 顶着头(default)
- flex-end 顶着尾
- center 靠中间
- space-between 靠两头
- space-around 每个元素两侧的间隔相等
- align-items 元素也是一个方块,其中的大小可能不一致
- flex-start 头顶头
- flex-end 尾顶尾
- center 中间对中间
- baseline 文字中间对齐
- stretch 拉伸填满(default)
- align-content 如果flex-wrap换行了,换行的位置则由它来控制
- flex-start 头顶头
- flex-end 尾顶尾
- center 中间对中间
- baseline 文字中间对齐
- stretch 拉伸填满(default)
flex作为内容,也会有一些特定的属性:
order 定义内容的排序,值越小越靠前,默认为0,可以为负数
1
2
3.item{
order: 0;
}flex-grow 如果空间有,则按比例放大,如果为0则不放大
1
2
3
4.item{
flex-grow: 0; // 默认
flex-grow: 1; // 放大的比例 1:2:1
}flex-shrink 空间不足的时候按比例缩小,默认为1,为0的时候不缩小
- flex-basis 占据主轴最小的大小,如果主轴是column则是高度,如果主轴是row则是长度
- flex flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选。
- align-self 针对容器中align-items个性的对齐方式
- auto
- flex-start
- flex-end
- center
- baseline
- stretch