全栈前端

flex 布局

2019-06-20  本文已影响40人  前往悬崖下寻宝的神三算

flex只是css3的一个属性 ,flex又称‘弹性布局’,它使得盒子的子元素可以自动排列

{
 display:flex;
}

经典的flex模型图:

响应式布局之——flex

说明:

flex-container 相关属性


display:flex / inline-flex 都是flex布局, inline类似 inline-block ,盒子被加入了inline模型特性

1. flex-direction

flex-direction 决定了主轴和主轴方向,子元素顺着主轴的方向依次排列

注:主要是row和column

示例:

响应式布局之——flex

2. justify-content

所有子元素沿主轴的排列方式(单行多行都可)

示例:

响应式布局之——flex

3. align-content

侧轴有长度时,所有子元素沿侧轴的排列方式,只适用于多行的情况(wrap)

示例:

响应式布局之——flex

4. align-items

侧轴有长度时,每个子元素沿侧轴的排列方式

示例:

响应式布局之——flex

5. flex-wrap

此属性指定子元素是否换行

注:侧轴其他操作,优先执行wrap

6. flex-flow

flex-flow:'direction' 'wrap' 是 flex-direction 和 flex-wrap 的组合,方便简写,类似 background

flex-item 相关属性


1. order

order:num 用来指定子元素的顺序,默认0,值大的排在后面,也可以是负数

2. flex-grow

flex-grow:num 用来指定扩展分配比例,所有子元素长度小于父元素长度时,添加此属性的子元素,会按比例来分配剩余的宽度

3. flex-shrink

flex-shrink:num 在未指定wrap时,用来指定压缩比例(减去 压缩的总长度百分比),默认1

4. flex-basis

flex-basis:px 类似grow,分配剩余长度(像素),总和大于剩余宽度时,按比例分配

5. align-self

align-self:xx 指定元素自身的排列方式,优先级高于 align-items,值类似

应用


一个盒子多个子元素,最后一个子元素高度自适应

关键:flex-grow:1 分配剩余高度 | flex-shrink:0空间不够时不压缩

最后一个子元素如果高度没被其孩子撑高,直接flex-grow: 1即可。
如果撑的比剩余高度还要高,那么其余的子元素高度会按比例缩小(默认值造成),此时需要修改为flex-shrink:0

例子: https://jsfiddle.net/779102260/6tgym82e/

居中

元素居中使用flex十分简单

image.png

上中下布局

上下固定高度,中间自适应高度

image.png
body{
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    height: 100vh;
}
#header{
    background: #ccc;
    height: 100px;
}
#main{
    background: #ddd;
    flex-grow: 1; /*剩余的高度分配给main*/
}
#footer{
    background: #bbb;
    height: 60px;
}

左侧固定右侧自适应

image.png
body{
    padding: 0;
    margin: 0;
    display: flex;
    height: 100vh;
}
#left{
    background: #ccc;
    width: 200px;
}
#right{
    background: #ddd;
    flex-grow: 1;
}
上一篇下一篇

猜你喜欢

热点阅读