• CSS之Flex布局的详细解析


    Flex布局

    目标:熟练使用 Flex 完成结构化布局

    01-标准流

    标准流也叫文档流,指的是标签在页面中默认的排布规则,例如:块元素独占一行,行内元素可以一行显示多个。

    02-浮动

    基本使用

    作用:让块元素水平排列。

    属性名:float

    属性值

    1. <style>
    2.  /* 特点:顶对齐;具备行内块显示模式特点;浮动的盒子会脱标 */
    3.  .one {
    4.    width: 100px;
    5.    height: 100px;
    6.    background-color: brown;
    7.    float: left;
    8. }
    9.  .two {
    10.    width: 200px;
    11.    height: 200px;
    12.    background-color: orange;
    13.    /* float: left; */
    14.    float: right;
    15. }
    16. style>
    1. <div class="one">onediv>
    2. <div class="two">twodiv>

    特点:

    • 浮动后的盒子顶对齐

    • 浮动后的盒子具备行内块特点

    • 浮动后的盒子脱标不占用标准流的位置

    产品区域布局

    HTML标签
    
    
    1. <div class="product">
    2.  <div class="left">div>
    3.  <div class="right">
    4.    <ul>
    5.      <li>li>
    6.      <li>li>
    7.      <li>li>
    8.      <li>li>
    9.      <li>li>
    10.      <li>li>
    11.      <li>li>
    12.      <li>li>
    13.    ul>
    14.  div>
    15. div>

    CSS样式
    1. <style>
    2. * {
    3.    margin: 0;
    4.    padding: 0;
    5. }
    6.  li {
    7.    list-style: none;
    8. }
    9.  .product {
    10.    margin: 50px auto;
    11.    width: 1226px;
    12.    height: 628px;
    13.    background-color: pink;
    14. }
    15.  .left {
    16.    float: left;
    17.    width: 234px;
    18.    height: 628px;
    19.    background-color: skyblue;
    20. }
    21.  .right {
    22.    float: right;
    23.    width: 978px;
    24.    height: 628px;
    25.    background-color: brown;
    26. }
    27.  .right li {
    28.    float: left;
    29.    margin-right: 14px;
    30.    margin-bottom: 14px;
    31.    width: 234px;
    32.    height: 300px;
    33.    background-color: orange;
    34. }
    35.  /* 第四个li和第八个li 去掉右侧的margin */
    36.  .right li:nth-child(4n) {
    37.    margin-right: 0;
    38. }
    39.  /* 细节:如果父级宽度不够,浮动的盒子会掉下来 */
    40. style>

    清除浮动

    场景:浮动元素会脱标,如果父级没有高度子级无法撑开父级高度(可能导致页面布局错乱)

    解决方法:清除浮动(清除浮动带来的影响)

    场景搭建

    1. "top">
    2.  
      "left">
    3.  
      "right">
  • "bottom">
  • 额外标签法

    父元素内容的最后添加一个块级元素,设置 CSS 属性 clear: both

    1. <style>
    2. .clearfix {
    3.  clear: both;
    4. }
    5. style>
    6. <div class="father">
    7.  <div class="left">div>
    8.  <div class="right">div>
    9.  <div class="clearfix">div>
    10. div>
    单伪元素法
    1. 准备 after 伪元素

    1. .clearfix::after {
    2.  content: "";
    3.  display: block;
    4.  clear: both;
    5. }
    1. 父级使用 clearfix 类

    <div class="father clearfix">div>
    双伪元素法
    1. 准备 after 和 before 伪元素

    /* before 解决外边距塌陷问题 */
    /* 双伪元素法 */
    
    1. .clearfix::before,
    2. .clearfix::after {
    3.  content: "";
    4.  display: table;
    5. }
    6. /* after 清除浮动 */
    7. .clearfix::after {
    8.  clear: both;
    9. }
    1. 父级使用 clearfix 类

    <div class="father clearfix">div>
    overfow法
    1. .father {
    2.  margin: 10px auto;
    3.  width: 1200px;
    4.  /* height: 300px; */
    5.  background-color: pink;
    6.  overflow: hidden;
    7. }

    03-Flex布局

    Flex 布局也叫弹性布局,是浏览器提倡的布局模型,非常适合结构化布局,提供了强大的空间分布和对齐能力。

    Flex 模型不会产生浮动布局中脱标现象,布局网页更简单、更灵活。

    Flex组成

    设置方式:给元素设置 display: flex,子元素可以自动挤压或拉伸

    组成部分:

    • 弹性容器

    • 弹性盒子

    • 主轴:默认在水平方向

    • 侧轴 / 交叉轴:默认在垂直方向

    主轴对齐方式

    属性名:justify-content

    侧轴对齐方式

    • align-items:当前弹性容器内所有弹性盒子的侧轴对齐方式(给弹性容器设置)

    • align-self:单独控制某个弹性盒子的侧轴对齐方式(给弹性盒子设置)

    修改主轴方向

    主轴默认在水平方向,侧轴默认在垂直方向

    属性名:flex-direction

    弹性伸缩比

    作用:控制弹性盒子的主轴方向的尺寸。

    属性名:flex

    属性值:整数数字,表示占用父级剩余尺寸的份数

    弹性盒子换行

    弹性盒子可以自动挤压或拉伸,默认情况下,所有弹性盒子都在一行显示。

    属性名:flex-wrap

    属性值

    • wrap:换行

    • nowrap:不换行(默认)

    行内对齐方式

    属性名:align-content

    注意:该属性对单行弹性盒子模型无效

    04-综合案例 – 抖音解决方案

    整体布局

    1. <style>
    2. * {
    3.  margin: 0;
    4.  padding: 0;
    5.  box-sizing: border-box;
    6. }
    7. li {
    8.  list-style: none;
    9. }
    10. .box {
    11.  margin: 50px auto;
    12.  width: 1200px;
    13.  height: 418px;
    14.  border: 1px solid #ddd;
    15.  border-radius: 10px;
    16. }
    17. style>
    18. <div class="box">div>

    列表布局

    1. <style>
    2. .box ul {
    3.  display: flex;
    4.  /* 弹性盒子换行 */
    5.  flex-wrap: wrap;
    6.  /* 调整主轴对齐方式 */
    7.  justify-content: space-between;
    8.  /* 调整 行对齐方式 */
    9.  align-content: space-between;
    10.  padding: 90px 40px 90px 60px;
    11.  height: 418px;
    12. }
    13. .box li {
    14.  display: flex;
    15.  width: 500px;
    16.  height: 88px;
    17.  /* background-color: pink; */
    18. }
    19. style>
    20. <div class="box">
    21. <ul>
    22.    <li>1li>
    23.    <li>2li>
    24.    <li>3li>
    25.    <li>4li>
    26.  ul>
    27. div>

    内容样式

    1. <style>
    2. .box .pic {
    3.  margin-right: 15px;
    4. }
    5. .box .text h4 {
    6.  line-height: 40px;
    7.  font-size: 20px;
    8.  font-weight: 400;
    9.  color: #333;
    10. }
    11. .box .text p {
    12.  font-size: 14px;
    13.  color: #666;
    14. }
    15. style>
    16. <ul>
    17.  <li>
    18.    <div class="pic">
    19.      <img src="./images/1.svg" alt="">
    20.    div>
    21.    <div class="text">
    22.      <h4>一键发布多端h4>
    23.      <p>发布视频到抖音短视频、西瓜视频及今日头条p>
    24.    div>
    25.  li>
    26.  <li>
    27.    <div class="pic">
    28.      <img src="./images/2.svg" alt="">
    29.    div>
    30.    <div class="text">
    31.      <h4>管理视频内容h4>
    32.      <p>支持修改已发布稿件状态和实时查询视频审核状态p>
    33.    div>
    34.  li>
    35.  <li>
    36.    <div class="pic">
    37.      <img src="./images/3.svg" alt="">
    38.    div>
    39.    <div class="text">
    40.      <h4>发布携带组件h4>
    41.      <p>支持分享内容携带小程序、地理位置信息等组件,扩展内容及突出地域性p>
    42.    div>
    43.  li>
    44.  <li>
    45.    <div class="pic">
    46.      <img src="./images/4.svg" alt="">
    47.    div>
    48.    <div class="text">
    49.      <h4>数据评估分析h4>
    50.      <p>获取视频在对应产品内的数据表现、获取抖音热点,及时进行表现评估p>
    51.    div>
    52.  li>
    53. ul>
  • 相关阅读:
    JAVA环境下使用DATAX(不使用python调用:也是个人记录一下)
    输出菱形的代码
    EBS 并发管理器无法启动处理
    FCN的图像分割 语义分割 技术研究,基于pytorch
    详解Python3对json和txt文件的读写操作
    C++入门(二)
    C++ 类型转换
    Java循环结构—多重循环及continue break(基础)
    【Python Web】django框架(十)员工管理系统(用户管理)
    中国乙腈市场预测与战略咨询研究报告(2022版)
  • 原文地址:https://blog.csdn.net/qq_69748833/article/details/133936619