flex布局原理

1、能够说出flex盒子的布局原理

	flex是 flexble Box的缩写,简称为弹性布局,用来为盒子状模型提供最大的灵活性,任何一个容器都可以指定为flex布局。
    采用flex布局的元素,称为flex容器。它的所有子元素自动成为容器成员。
    通过给父盒子添加flex属性,来控制子盒子的位置和排列方式。

2、flex布局父项常见属性
display:flex 父元素这个必须要用到的;不然后边的flex属性就不起任何作用了。

flex-direction:设置主轴的方向


    	flex-direction:设置主轴的方向
        有主轴和侧轴两个方向;分别为x轴和y轴;或者叫行和列
        默认主轴方向就是x轴方向;水平向右。
        默认侧轴方向就是y轴方向,水平向下。
        主轴和侧轴是会变化的,看flex-direction设置为主轴,剩下就是侧轴;子元素跟着主轴来排列的。
        row:从左到右
        row-reverse:从右到左
        column:从上到下
        column-reverse:从下到上

justify-content:设置主轴上的子元素排列方式


        属性定义了项目在主轴的对齐方式
        flex-start :默认从头部开始;如果主轴是x轴,则从左到右
        flex-end:从尾部开始排列
        center:在主轴居中对齐(如果主轴x轴,则水平居中)
        space-around :均匀排列每个元素;每个元素周围分配相同的空间
        space-between:先两边贴边,再平分剩余空间(重要)```

flex-wrap:设置子元素是否换行

        flex布局当中,默认的子元素是不换行的,如果装不下;会缩小子元素的宽度,放到父元素里面。
        nowrap:不换行
        warp:换行

flex-direction:设置主轴的方向

align-items:设置侧轴上的子元素排列方式(单行)

        该属性是控制子项在侧轴(默认是y轴)上的排列方式在子项为单项的时候使用
        flex-start :默认值从上到下
        flex-end :默认从下到上
        center:挤在一起居中
        stretch:拉伸(去下子元素的高度)


align-content:设置侧轴上的子元素的排列方式(多行)

    设置子项在侧轴的排列方式并且只能用于子项出现换行的情况(多行);在单行下是没有效果的
    flex-start:默认值在侧轴的头部开始排列
    flex-end:在侧轴的尾部开始排列
    center:在侧轴中间显示
    space-around:子项在侧轴先分布在两头,再平分剩余空间
    apace-between:子项在侧轴先分布两头,再平分剩余空间
    stretch:设置子项元素高度平分父元素高度

flex-flow:复合属性(常见使用的)

        属性是:flex-direction;flex-wrap属性的复合属性
        flex-flow: column-reverse wrap;

3、flex布局子项常见属性

flex子项目占的份数


            flex属性定义子项目分配剩余空间,用flex占多少份(比如移动端搜索框和两边)
            flex:1  平均分成几份 flex也可以写2 3 4等等
            div span:nth-child(2){
                flex: 1;
                /* width: 200px; */
                height: 300px;
                background-color: green;
            }

align-self控制子项自己在侧轴的排列方式

  属性允许单个项目与其他项目不一样的对齐方式,可覆盖align-items属性。
            默认值为auto,表示继承父元素align-items属性,如果没有父元素,则等于stretch
            span:nth-child(2){
                /* 设置第二个bottom对齐 */
                align-self: flex-end;
            }

order属性定义子项的排列顺序(前后顺序)

  数值越小,排列越靠前,默认为0,注意和z-index不一样
            div span:nth-child(2){
                /* 默认是0,-1比0小所以在前面 */
                order: -1;
            }

4、能够使用felex布局的常用属性
就是把上边的父元素属性和子元素属性就是常用的属性

项目实战注意事项

1、传统布局和flex弹性布局两者区别

传统布局:兼容性好;布局繁琐;局限性,不能再移动端,很好的布局
flex弹性布局:操作方便,布局极为简单,移动端应用的广泛;PC端浏览器支持情况较差;E11或更低版本,不支持,或者仅部分支持
建议:如果PC端页面布局,建议使用传统布局
如果是移动端或者不考虑兼容性问题的PC端页面布局,我们还是使用flex弹性布局

2、 传统布局:兼容性好;布局繁琐;局限性,不能再移动端,很好的布局

分清主轴和侧轴;先主后侧

3、align-content和align-items区别?
align-items:适合侧轴单行情况下,只有上对齐、下对齐、居中和拉伸
align-content:适合侧轴多行的情况下,可以设置上对齐、下对齐、居中、拉伸以及平均分配剩余空间等属性值

总结就是:单行找align-items;多行找align-items。

你可能感兴趣的:(flex,css,css3,html)