【CSS】彻底搞懂flex页面布局,附最佳实践代码

核心的几个属性:

flex-direction: row | row-reverse | column | column-reverse | initial | inherit;

在这里插入图片描述

flex Three values: flex-grow | flex-shrink | flex-basis | auto | initial | inherit;

在这里插入图片描述

flex-wrap: nowrap | wrap | wrap-reverse | initial | inherit;

在这里插入图片描述

align-content: stretch | center | flex-start | flex-end | space-between | space-around | initial | inherit;

在这里插入图片描述

align-item: stretch | center | flex-start | flex-end | baseline | initial | inherit;

在这里插入图片描述

align-self: auto | stretch | center | flex-start | flex-end | baseline | initial | inherit;

在这里插入图片描述

justify-content: flex-start | flex-end | center | space-between | space-around | initial | inherit;

在这里插入图片描述

语法详解,请猛戳这里,大牛的文章

这里引用该文章的几张总结图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

最后,骰子练习走一波(附上源码)

效果图
以上是实际效果展示;

<div style="display: flex">
    <div class="fcnt fcnt1">
      <div class="cnt"></div>
    </div>
    <div class="fcnt fcnt2">
      <div class="cnt"></div>
    </div>
    <div class="fcnt fcnt3">
      <div class="cnt"></div>
    </div>
    <div class="fcnt fcnt4">
      <div class="cnt"></div>
    </div>
    <div class="fcnt fcnt5">
      <div class="cnt"></div>
    </div>
    <div class="fcnt fcnt6">
      <div class="cnt"></div>
    </div>
    <div class="fcnt fcnt7">
      <div class="cnt"></div>
    </div>
    <div class="fcnt fcnt8">
      <div class="cnt"></div>
    </div>
    <div class="fcnt fcnt9">
      <div class="cnt"></div>
    </div>
  </div>
  <div style="display: flex;margin-top: 10px;">
    <div class="fcnt fcnt11">
      <div class="cnt"></div>
      <div class="cnt"></div>
    </div>
    <div class="fcnt fcnt12">
      <div class="cnt"></div>
      <div class="cnt"></div>
    </div>
    <div class="fcnt fcnt13">
      <div class="cnt"></div>
      <div class="cnt"></div>
    </div>
    <div class="fcnt fcnt14">
      <div class="cnt"></div>
      <div class="cnt"></div>
    </div>
    <div class="fcnt fcnt15">
      <div class="cnt"></div>
      <div class="cnt"></div>
    </div>
    <div class="fcnt fcnt16">
      <div class="cnt"></div>
      <div class="cnt"></div>
    </div>
    <div class="fcnt fcnt17">
      <div class="cnt"></div>
      <div class="cnt"></div>
    </div>
    <div class="fcnt fcnt18">
      <div class="cnt"></div>
      <div class="cnt"></div>
    </div>
    <div class="fcnt fcnt19">
      <div class="cnt"></div>
      <div class="cnt"></div>
    </div>
  </div>
  <div style="display: flex;margin-top: 10px;">
    <div class="fcnt fcnt21">
      <div class="cnt"></div>
      <div class="cnt"></div>
      <div class="cnt"></div>
    </div>
    <div class="fcnt fcnt22">
      <div class="cnt"></div>
      <div class="cnt"></div>
      <div class="cnt"></div>
    </div>
    <div class="fcnt fcnt23">
      <div class="cnt"></div>
      <div class="cnt"></div>
      <div class="cnt"></div>
    </div>
    <div class="fcnt fcnt24">
      <div class="cnt"></div>
      <div class="cnt"></div>
      <div class="cnt"></div>
    </div>
  </div>
  <div style="display: flex;margin-top: 10px;">
    <div class="fcnt fcnt31">
      <div class="rows">
        <div class="cnt"></div>
        <div class="cnt"></div>
      </div>
      <div class="rows">
        <div class="cnt"></div>
        <div class="cnt"></div>
      </div>
    </div>
    <div class="fcnt fcnt32">
      <div class="rows">
        <div class="cnt"></div>
        <div class="cnt"></div>
      </div>
      <div class="rows">
        <div class="cnt"></div>
      </div>
      <div class="rows">
        <div class="cnt"></div>
        <div class="cnt"></div>
      </div>
    </div>
    <div class="fcnt fcnt32">
      <div class="rows">
        <div class="cnt"></div>
        <div class="cnt"></div>
      </div>
      <div class="rows">
        <div class="cnt"></div>
      </div>
      <div class="rows">
        <div class="cnt"></div>
        <div class="cnt"></div>
        <div class="cnt"></div>
      </div>
    </div>
    <div class="fcnt fcnt31">
      <div class="rows">
        <div class="cnt"></div>
        <div class="cnt"></div>
        <div class="cnt"></div>
      </div>
      <div class="rows">
        <div class="cnt"></div>
        <div class="cnt"></div>
        <div class="cnt"></div>
      </div>
    </div>
    <div class="fcnt fcnt33">
      <div class="rows">
        <div class="cnt"></div>
        <div class="cnt"></div>
        <div class="cnt"></div>
      </div>
      <div class="rows">
        <div class="cnt"></div>
        <div class="cnt"></div>
        <div class="cnt"></div>
      </div>
    </div>
  </div>

以上是html布局

.fcnt {
  display: flex;
  flex: 0 0 auto; // 固定尺寸
  width: 100px;
  height: 100px;
  margin-right: 10px;
  background: #777;
  border-radius: 5px;
}
.cnt {
  height: 30px;
  width: 30px;
  background: #fff;
  border-radius: 30px;
}
.fcnt1 {
  justify-content: flex-start;
}
.fcnt2 {
  justify-content: center;
}
.fcnt3 {
  justify-content: flex-end;
}
.fcnt4 {
  justify-content: flex-start; // 主轴对齐方式
  align-items: center; // 交叉轴单行对齐方式
}
.fcnt5 {
  justify-content: center;
  align-items: center;
}
.fcnt6 {
  justify-content: flex-end;
  align-items: center;
}
.fcnt7 {
  justify-content: flex-start;
  align-items: flex-end;
}
.fcnt8 {
  justify-content: center;
  align-items: flex-end;
}
.fcnt9 {
  justify-content: flex-end;
  align-items: flex-end;
}
.fcnt11 {
  justify-content: space-between;
  align-items: flex-start;
}
.fcnt12 {
  flex-direction: column;
  justify-content: space-between;
  align-items: flex-start;
}
.fcnt13 {
  flex-direction: column;
  justify-content: flex-start;
  align-items: flex-start;
  div:nth-child(2) {
    align-self: center;
  }
}
.fcnt14 {
  flex-direction: column;
  justify-content: flex-start;
  align-items: flex-start;
  div:nth-child(2) {
    align-self: flex-end;
  }
}
.fcnt15 {
  flex-direction: column;
  justify-content: space-between;
  align-items: flex-start;
  div:nth-child(2) {
    align-self: center;
  }
}
.fcnt16 {
  flex-direction: column;
  justify-content: space-between;
  align-items: flex-start;
  div:nth-child(2) {
    align-self: flex-end;
  }
}
.fcnt17 {
  flex-direction: column-reverse;
  justify-content: flex-start;
  div:nth-child(2) {
    align-self: flex-end;
  }
}
.fcnt18 {
  justify-content: space-between;
  align-items: flex-end;
}
.fcnt19 {
  justify-content: space-between;
  align-items: flex-end;
  div:nth-child(2) {
    align-self: flex-start;
  }
}
.fcnt21 {
  flex-direction: column;
  justify-content: space-between;
}
.fcnt22 {
  flex-direction: column;
  justify-content: space-between;
  div:nth-child(2) {
    align-self: center;
  }
  div:nth-child(3) {
    align-self: flex-end;
  }
}
.fcnt23 {
  flex-direction: column-reverse;
  justify-content: space-between;
  div:nth-child(2) {
    align-self: center;
  }
  div:nth-child(3) {
    align-self: flex-end;
  }
}
.fcnt24 {
  flex-direction: column;
  justify-content: space-between;
  align-items: flex-end;
}
.fcnt31 {
  flex-wrap: wrap;
  align-content: space-between; // 根据内容,必须与wrap配合同时使用
  .rows {
    flex-basis: 100%;
    display: flex;
    justify-content: space-between;
  }
}
.fcnt32 {
  flex-wrap: wrap;
  align-content: space-between;
  .rows {
    flex-basis: 100%;
    display: flex;
    justify-content: space-between;
    &:nth-child(2) {
      justify-content: center;
    }
  }
}
.fcnt33 {
  flex-direction: column;
  flex-wrap: wrap;
  align-content: space-between;
  .rows {
    flex-direction: column;
    flex-basis: 100%;
    display: flex;
    justify-content: space-between;
  }
}

以上是css样式表

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值