flex布局

2020-11-13  本文已影响0人  amanohina

flex布局体验

建议:

flex布局原理

flex常见属性

父项常见属性

flex-direction设置主轴的方向

主轴和侧轴

在flex布局里,是分为主轴和侧轴两个方向,同样的叫法有:行和列,X轴和Y轴

justify-content主轴上子元素排列方式

(主轴为row的情况)

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

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

(主轴为x轴,即row)

 div {
            display: flex;
            width: 400px;
            height: 400px;
            background-color: pink;
            /* flex-direction: row; */
            justify-content: center;
            /* flex-wrap: wrap; */
            align-items: center;
        }
        span {
            width: 100px;
            height: 100px; 
            background-color: purple;
        }
效果图

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

测试代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        div {
            display: flex;
            width: 800px;
            height: 800px;
            background-color: pink;
            flex-direction: row;
            flex-wrap: wrap;    
            /* justify-content: center; */
        }
        span {
            width: 250px;
            height: 100px;
            margin-right: 10px;
            margin-bottom: 10px;
            background-color: purple;
        }
    </style>
</head>
<body>
    <div>
        <span>1</span>
        <span>2</span>
        <span>3</span>
        <span>4</span>
        <span>5</span>
        <span>6</span>
        <span>7</span>
        <span>8</span>
        <span>9</span>
    </div>
</body>
</html>
效果图

align-content与align-items区别:

flex-flow

flex-flow:row nowrap;

flex-direction:row;
flex-wrap:nowrap;

是等效的

子项常见属性

flex属性(重要)

.item {
  flex:<number>;/*default0*/
}

例子代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }
    section {
      display: flex;
      width: 60%;
      height: 80px;
      margin: 50px auto;
      background-color: pink;
    }
    section div:nth-child(1),section div:nth-child(3) {
      width: 80px;
      height: 80px;
      background-color: skyblue;
    }
    section div:nth-child(2) {
      flex: 1;
      height: 80px;
      background-color: green;
    }

    .box {
      display: flex;
      width: 60%;
      height: 80px;
      background-color: pink;
      margin: 0 auto;
    }
    .box span {
      flex: 1;
    }
    .box span:nth-child(2) {
      flex: 2;
      background-color: purple;
    }
  </style>
</head>
<body>
  <section>
    <div>1</div>
    <div>2</div>
    <div>3</div>
  </section>
  <div class="box">
    <span>1</span>
    <span>2</span>
    <span>3</span>
  </div>
</body>
</html>

flex:2表示box大盒子下的三个span占了四份,其中,2占了两份

align-self与order属性

   div {
            display: flex;
            width: 800px;
            height: 800px;
            background-color: pink;
            flex-flow: row wrap;   
            align-items: flex-start;
        }
        span {
            width: 250px;
            height: 100px;
            margin-right: 10px;
            margin-bottom: 10px;
            background-color: purple;
        }
        span:nth-child(2) {
            align-self: flex-end;
        }
    <div>
        <span>1</span>
        <span>2</span>
        <span>3</span>
    </div>
效果图
  span:nth-child(2) {
            /* align-self: flex-end; */
            /* 调整子项加载的顺序,默认值为0,如果想要往前提,属性值可以为负值 */
            order: -1;
            /* 如果前面的元素想要往后移动,属性值要比前面的都大 */
            order:1;
        }

每个子项的默认值都是0,只要是大于0或者小于0的负值都可以进行顺序的调整了

设置为1的情况,2跑到3后面了
上一篇 下一篇

猜你喜欢

热点阅读