移动web第四天

197 阅读3分钟

侧轴对齐方式

属性:align-items: (设置元素 上下的位置 给父元素)

属性值:

1.flex-star 上对齐

2.flex-end 下对齐

3.center 垂直居中

居中center 不用加flex

.box {
        margin: 100px auto;
        width: 600px;
        height: 600px;
        background: orange; 

        /* 两个都是给父元素添加 */
        display: flex;

        /*撤轴对齐(设置元素 上下的位置) align-items: 
        1.flex-start 上对齐
        2.flex-end 下对齐
        3 center 垂直居中 
        */
        align-items: center;
      }

侧轴对齐方式 当多行时

属性:align-content

属性值:flex-(start/end)

​ space-(between/around/evenly)

​ center

居中center 不用加flex

 div {
            margin: 100px auto;
            width: 600px;
            height: 600px;
            background-color: pink;

            /* 设置flex盒子 */
            display: flex;
            flex-wrap:wrap;

            /* 设置侧轴对齐方式-多行时 
                align-content:
     	
               1. flex-(start/end)
     		   2.space-(between/around/evenly)
  			   3.center*/
            align-content: end;
        }

        span {
            width: 100px;
            height: 100px;
            background-color: red;
        }

注意点:

**当侧轴单行必须用单行的对齐属性,多行时用多行的对齐属性;不然会导致效果怪异 **

修改主轴方向

属性 flex-direction

​ 属性值: 1 row 默认值 水平方向 对齐 顺序是 左到右 少用

​ 2 row-reverse 对齐 顺序是 从右到左

​ 3 column 对齐 顺序是 修改成上到下

​ 4 column-reverse 对齐 顺序是 从下到上

.box {
        margin: 100px auto;
        width: 600px;
        height: 600px;
        background: orange; 
        display: flex;


        /* 修改主轴的方向 属性 flex-direction
        属性值: 1 row 默认值 水平方向 对齐 顺序是 左到右 少用
                2 row-reverse 对齐 顺序是 从右到左 
                3 column 对齐 顺序是 修改成上到下 
                4 column-reverse 对齐 顺序是 从下到上 */

        /* 修改主轴方向 */
        flex-direction: column;

        /* 主轴改为上到下,对齐方式 */
        justify-content: space-around ;
        
      }

子项中的flex属性

flex 设置子元素宽自动填满父元素,这样再加元素也能平均分父元素的宽

​ 属性值 1 默认占一份宽 所以我设置第二个盒子占两份宽如下

align-self设置子项本身在侧轴的对齐方式

​ 属性值: flex-satrt/end/center

.box span {
        width: 100px;
        height: 100px;
        color: #fff;
        font-size: 30px;
        font-weight: 700;
        text-align: center;
        line-height: 100px;
        background-color: pink;
        border: 1px solid #fff;

        /* 设置子元素宽自动填满父元素,这样再加元素也能平均分父元素的宽  
        属性值 1 默认占一份宽 所以我设置第二个盒子占两份宽如下*/
        flex: 1;

        /* 设置子项本身在侧轴的对齐方式 */
        align-self: flex-end;

      }

知识拓展

span:nth-child(2) {
          flex: 2;
          /* 如果想让第二个SPAN文字居中对齐
          不用管宽高 直接把SPAN当成父盒子 设置如下 */
          display: flex;
          justify-content: center;
          align-items: center;
      }

注意点:当修改主轴方向,属性的内容会调换

当主轴改为 column,主轴是Y轴

主轴jc属性就应用在了Y轴

副轴是X轴,副轴ai/ac属性应用在X轴

​ 1.子项 默认高度被内容撑开 宽度等于父项

​ 2.flex:1 变成设置 子项的高度

​ 3.align-seft 变成设置 子项在侧轴上的对齐(这个时候侧轴是水平轴)

案例思路

flex:1 和换行不能一起用有换行优先使用换行

明白flex默认情况, 子元素不会换行 内容撑 爹撑 思路必须由大体,到细致.从结构到样式最后插图

灵活运用转换主轴,在不同需求上

思路总结:

​ 也就是关于flex的应用配合HTML结构,我认为这至关重要。需要FLEX的元素需要加给父盒子DF,所以关键在于DIV的嵌套关系。有些是需要Y轴主轴,然后里面有小盒子需要X轴的flex