当前位置: 首页 > article >正文

前端清除浮动有哪些方式?

在网页设计中,浮动(float)属性用于让元素脱离正常文档流,使其向左或向右浮动。但浮动元素可能会导致父元素高度塌陷等布局问题,如下图,父元素的高度由于子元素的浮动没有被撑开,因此需要清除浮动。

以下是几种常见的清除浮动的方式:

1. 使用 clear 属性

clear 属性用于指定元素的哪一侧不允许有浮动元素。可以在浮动元素的后面添加一个空的元素,并为其设置 clear 属性。

HTML 代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Clear Float with Empty Element</title>
    <style>
       .parent {
            border: 1px solid red;
        }

       .float-left {
            float: left;
            width: 100px;
            height: 100px;
            background-color: lightblue;
        }

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

<body>
    <div class="parent">
        <div class="float-left"></div>
        <div class="clear"></div>
    </div>
</body>

</html>
解释
  • 在浮动元素后面添加一个空的 <div> 元素,并为其设置 clear: both,这样可以确保该元素不会与浮动元素在同一行,从而让父元素包含浮动元素。

2. 使用 BFC(块级格式化上下文)

BFC 是一个独立的渲染区域,规定了内部的块级元素如何布局,并且与外部元素相互隔离。可以通过设置父元素的某些属性来创建 BFC,从而包含浮动元素。

HTML 代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Clear Float with BFC</title>
    <style>
       .parent {
            border: 1px solid red;
            overflow: auto; /* 创建 BFC */
        }

       .float-left {
            float: left;
            width: 100px;
            height: 100px;
            background-color: lightblue;
        }
    </style>
</head>

<body>
    <div class="parent">
        <div class="float-left"></div>
    </div>
</body>

</html>
解释
  • 为父元素设置 overflow: autooverflow: hidden 可以创建 BFC,使得父元素包含浮动元素,从而解决高度塌陷问题。

3. 使用伪元素

使用伪元素 ::after 可以在父元素的内容末尾插入一个虚拟元素,并为其设置 clear 属性。

HTML 代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Clear Float with Pseudo Element</title>
    <style>
       .parent {
            border: 1px solid red;
        }

       .parent::after {
            content: "";
            display: block;
            clear: both;
        }

       .float-left {
            float: left;
            width: 100px;
            height: 100px;
            background-color: lightblue;
        }
    </style>
</head>

<body>
    <div class="parent">
        <div class="float-left"></div>
    </div>
</body>

</html>
解释
  1. 通过 ::after 伪元素在父元素的内容末尾插入一个空的块级元素,并设置 clear: both,从而清除浮动。这种方法不需要在 HTML 中添加额外的元素,是比较常用的清除浮动的方式。

4. 直接为父元素设置高度

以下为清除浮动后的效果:
在这里插入图片描述
可以看到父元素被子元素的高度撑开;样式正常。


http://www.kler.cn/a/567569.html

相关文章:

  • 微服务即时通信系统---(七)文件管理子服务
  • 关于延迟任务线程池,Java提供的ScheduledThreadPoolExecutor,Spring提供的ThreadPoolTaskScheduler
  • flutter 专题 八十 Flutter 应用性能检测与优化
  • AUTOSAR整体架构与应用层详解和综合实例
  • 基于fast-whisper模型的语音识别工具的设计与实现
  • 【西瓜书《机器学习》七八九章内容通俗理解】
  • JWT概念及JAVA使用
  • Winbox5怎样设置上网
  • PAT乙级(1026 程序运行时间)C语言超详细解析
  • 使用Spring Boot与达梦数据库(DM)进行多数据源配置及MyBatis Plus集成
  • seacms v9 实现的MySQL注入
  • Kubernetes 详解笔记
  • Word快速替换修改学术论文所有中的中括号引用未上标格式
  • BiliBili视频下载-原理与实现Python+FFmpeg
  • 【Netty】五种经典 IO 模型详解,附各种模型流程图及流程详解
  • 特征值与特征向量
  • 【GraphQL API 漏洞简介】
  • vue3+TS使用i18n.global.locale,页面要刷新时才更新
  • 第十四届蓝桥杯:DFS之飞机降落
  • 如何在VUE框架下渲染出来一个水球图