flex布局书写麻将筒

1,324 阅读2分钟

为了提升下自己felx布局,就跟着一些大佬尝试写了下麻将筒;

Snipaste_2022-04-02_14-16-53.png

回顾布局

flex 它是一种布局方式。 主要目的是通过父盒子控制子盒子如何排列。

主轴排列方式

默认的水平,但是可以转换。

1.justify-content: center;主轴居中排列;

2.justify-content: space-between; 左右两侧无缝隙;

3.justify-content: space-around; 两倍关系;

4.justify-content: space-evenly; 缝隙均等

侧轴对齐方式

属性值作用
flex-start默认值, 起点开始依次排列
flex-end终点开始依次排列
center沿主轴居中排列
space-around弹性盒子沿主轴均匀排列, 空白间距均分在弹性盒子两侧
space-between弹性盒子沿主轴均匀排列, 空白间距均分在相邻盒子之间

弹性盒子换行

特别是多行的情况下,我们需要给弹性盒子换行,给 父盒子 弹性容器加。 flex-wrap: wrap;

设置主轴方向

flex-direction: column;

让我们的主轴设置为垂直。 默认的是 row 水平的。

代码区域

公共样式

    *{
      padding: 0;
      margin: 0;
      box-sizing: border-box;
    }
    ul{
      display: flex;
      margin: 10px 0 0 10px;
      float: left;
      width: 80px;
      height: 100px;
      background-color:rgb(222, 227, 228);
      border-radius: 5px;
    }
    li{
      list-style: none;
      width: 20px;
      height: 20px;
      border-radius: 50%;
      background-color: red;
    }

一筒布局

    .ul1{
      justify-content: center;
     
    }
    .ul1>li{
      align-self:center;
    }

二筒布局

    .ul2{
     align-items: center;
     flex-direction: column;
     /* 弹性盒元素的方向为相反的顺序: */
     justify-content: space-around;
    }

三筒布局

 .ul3{
   padding: 10px;
 }
 .ul3 li:nth-child(2){
     align-self: center;
 }
 .ul3 li:nth-child(3){
   align-self: flex-end;
 }

四筒布局

.ul4{
 flex-wrap: wrap;
}
.ul4>li{
  margin:15px 10px;
}

五筒布局

 .ul5{
  align-items: center;
  justify-content: space-around;
  flex-wrap: wrap;
  padding: 10px 0;
 }
 .ul5 li:nth-child(3){
 margin: 0 30px;
 }

六筒布局

  .ul6{
    flex-wrap: wrap;
    padding: 10px 0;
   align-items: center;
  }
  .ul6>li:nth-child(2n){
    margin-right: 10px;
  }
  .ul6>li:nth-child(2n+1){
    margin-left: 20px;
  }
  .ul6>li:nth-child(3),.ul6>li:nth-child(4){
  margin-top:6px ;
  margin-bottom: -6px;
  }

七筒布局

七筒的较为复杂,方法也较多,我这边采用一个ul包裹7个li,给每个li设置;也可以采用一个盒子包裹上下两个盒子,上面盒子按照三筒的布局排列,下面盒子按照四筒的布局排列,结合这个思路处理也是可以的。

   .ul7{
    flex-wrap: wrap;
    padding: 10px;
   }
 
   .ul7>li:nth-child(2){
     align-self: center;
   }
   .ul7>li:nth-child(3){
    align-self: flex-end;
   }
  .ul7>li:nth-child(5),.ul7>li:nth-child(7){
    margin-right: 10px;
  }
  .ul7>li:nth-child(4),.ul7>li:nth-child(6){
    margin-left: 10px;
  }
  .ul7>li:nth-child(4),.ul7>li:nth-child(5){
    margin-top:6px ;
   margin-bottom: -6px;
  }

八筒布局

   .ul8{
     flex-wrap: wrap;
     align-items:center ;
   }
   .ul8>li{
     margin: 2px 10px;
   }

九筒布局

   .ul9{
     flex-wrap: wrap;
     align-items:center ;
    justify-content: space-around;
    padding: 5px;
   }

基础布局

<body>
  <div>
    <ul class="ul1">
      <li></li>
    </ul>
    <ul class="ul2">
      <li></li>
      <li></li>
    </ul>
    <ul class="ul3">
      <li></li>
      <li></li>
      <li></li>
    </ul>
    <ul class="ul4">
      <li></li>
      <li></li>
      <li></li>
      <li></li>
    </ul>
    <ul class="ul5">
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
    </ul>
    <ul class="ul6">
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
    </ul>
    <ul class="ul7"> 
      <li> </li>
      <li> </li>
      <li> </li>  
      <li></li>
      <li></li>
      <li></li>
      <li></li>
 
    </ul>
    <ul class="ul8">
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
    </ul>
    <ul class="ul9">
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
    </ul>
  </div>
</body>