Web前端笔记-5、CSS基础-Flex布局、标准流

一般情况下,logo都是背景图片,而且是h1。

标准流

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

浮动

浮动本质作用是实现图文混排效果。

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

属性名:float

属性值

  • left:左对齐
  • right:右对齐

特点:

  • 浮动后的盒子顶对齐
  • 浮动后的盒子具备行内块特点
  • 浮动后的盒子脱标不占用标准流的位置

清除浮动

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

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

额外标签法

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

<style>
.clearfix {
  clear: both;
}
</style>

<div class="father">
  <div class="left"></div>
  <div class="right"></div>
  <div class="clearfix"></div>
</div>

单伪元素法

  1. 准备 after 伪元素
.clearfix::after {
 content: "";
 display: block;
 clear: both;
}
  1. 父级使用 clearfix 类

<div class="father clearfix"></div>

双伪元素法

  1. 准备 after 和 before 伪元素
/* before 解决外边距塌陷问题 */
/* 双伪元素法 */
.clearfix::before,
.clearfix::after {
 content: "";
 display: table;
}
​
/* after 清除浮动 */
.clearfix::after {
 clear: both;
}
  1. 父级使用 clearfix 类

<div class="father clearfix"></div>

overfow法

.father {
 margin: 10px auto;
 width: 1200px;
 /* height: 300px; */
 background-color: pink;
​
 overflow: hidden;
}

Flex布局(重点)

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

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

Flex组成

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

所以想用flex布局,必须有父亲。用父亲控制孩子。

组成部分:

  • 弹性容器(父)
  • 弹性盒子(子)
  • 主轴:默认在水平方向
  • 侧轴 / 交叉轴:默认在垂直方向
描述 属性
创建 flex 容器 display:flex
主轴对齐方式 justify-content
侧轴对齐方式 align-items
弹性盒子换行 flex-wrap
某个弹性盒子侧轴对齐方式 align-self
修改主轴方向 flex-direction
弹性伸缩比 flex
行对齐方式 align-content

主轴对齐方式

属性名:justify-content

属性值 效果
flex-start 默认值,弹性盒子从起点开始依次排列
flex-end 弹性盒子从终点开始依次排列
center 弹性盒子沿主轴居中排列
space-between 弹性盒子沿主轴均匀排列,空白间距均分在弹性盒子之间
space-around 弹性盒子沿主轴均匀排列,空白间距均分在弹性盒子两侧
space-evenly 弹性盒子沿主轴均匀排列,弹性盒子与容器之间间距相等

侧轴对齐方式

  • align-items:当前弹性容器内所有弹性盒子的侧轴对齐方式(给弹性容器设置)
  • align-self:单独控制某个弹性盒子的侧轴对齐方式(给弹性盒子设置)
属性值 效果
stretch 弹性盒子沿着侧轴线被拉伸至铺满容器(弹性盒子没有设置侧轴方向尺寸则默认拉伸)
center 弹性盒子沿侧轴居中排列
flex-start 弹性盒子从起点开始依次排列
flex-end 弹性盒子从终点开始依次排列
<!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>
    * {
      padding: 0;
      margin: 0;
      box-sizing: border-box;
    }
    li {
      list-style: none;
    }
    .box {
      width: 1240px;
      height: 540px;
      /* background-color: pink; */
      margin: 100px auto;
    }
    .box-hd {
      display: flex;
      justify-content: space-between;
      align-items: flex-end;
      padding: 40px 0px;
    }
    .box-hd h2 {
      font-size: 32px;
      font-weight: 400;
    }
    .box-hd h2 span {
      color: #999;
      font-size: 16px;
    }
    .box-hd a {
      text-decoration: none;
      color: #999;
      font-size: 16px;
    }

    .box-bd ui {
      display: flex;
      justify-content: space-between;
    }
    .box-bd li {
      width: 306px;
      height: 406px;
      background-color: #ddd;
      text-align: center;
      transition: .3s;
    }
    .box-bd li:hover {
      box-shadow: 0 5px 9px rgba(0, 0, 0, .3);
    }
    .box-bd li img {
      width: 100%;
    }
    .box-bd li h3 {
      padding: 12px 30px 0 30px;
      font-size: 22px;
      margin-bottom: 12px;
    }
    .box-bd li p {
      font-size: 18px;
      color: orangered;
    }
  </style>
</head>
<body>
  <div class="box">
    <div class="box-hd">
      <h2>新鲜好物
        <span>新鲜出炉 品质靠谱</span>
      </h2>
      <a href="#">查看全部> </a>
    </div>
    <div class="box-bd">
      <ui>
        <li>
          <img src="./images/1.jpg" alt="">
          <h3>全防水牛皮</h3>
          <p>¥666.00</p>
        </li>
        <li>
          <img src="./images/1.jpg" alt="">
          <h3>全防水牛皮</h3>
          <p>¥666.00</p>
        </li>
        <li>
          <img src="./images/1.jpg" alt="">
          <h3>全防水牛皮</h3>
          <p>¥666.00</p>
        </li>
        <li>
          <img src="./images/1.jpg" alt="">
          <h3>全防水牛皮</h3>
          <p>¥666.00</p>
        </li>
        
      </ui>
    </div>
  </div>
</body>
</html>

弹性盒子换行

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

属性名:flex-wrap

属性值

  • wrap:换行
  • nowrap:不换行(默认)

修改主轴方向

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

属性名:flex-direction

属性值

属性值 效果
row 水平方向,从左向右(默认)
column 垂直方向,从上向下
row-reverse 水平方向,从右向左
column-reverse 垂直方向,从下向上

多行侧轴对齐

align-items只能对于每一行单行操作

align-content多行 (侧轴方向要有高度)

属性值 效果
flex-start 默认值,弹性盒子从起点开始依次排列
flex-end 弹性盒子从终点开始依次排列
center 弹性盒子沿主轴居中排列
space-between 弹性盒子沿主轴均匀排列,空白间距均分在弹性盒子之间
space-around 弹性盒子沿主轴均匀排列,空白间距均分在弹性盒子两侧
space-evenly 弹性盒子沿主轴均匀排列,弹性盒子与容器之间间距相等

弹性伸缩比

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

子盒子添加的。

属性名:flex

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

不用给盒子指定宽度,而是分配份数。加了margin有了缝隙,是将总宽度去掉缝隙后,按份数分剩下的宽度。

圣杯布局:

父盒子有3个子盒子,给父盒子flex布局,左右盒子指定宽度,中间盒子flex: 1;即可。

posted @ 2025-05-21 22:44  subeipo  阅读(8)  评论(0)    收藏  举报