在HTML+CSS布局中,浮动(float) 是一种经典的布局技术,用于控制元素在页面中的排列方式。它最初设计用于实现文字环绕图片的效果,后来被广泛用于复杂布局,但随着Flexbox和Grid的兴起,其使用场景有所减少,但仍是前端基础中需要掌握的重要概念。

一、浮动的基本概念

浮动的本质:让元素脱离正常的文档流(Normal Flow),并向左或向右移动,直到碰到父元素的边缘或其他浮动元素。

  • 正常文档流:元素默认按照从上到下、从左到右的顺序排列(块级元素独占一行,行内元素并排)。
  • 浮动后:元素会"漂浮"起来,不再占据原来在文档流中的位置,导致后续元素可能向上移动并环绕它。

二、浮动的语法

通过float属性设置浮动,可选值如下:

selector {float: none;   /* 默认值,不浮动 */float: left;   /* 向左浮动 */float: right;  /* 向右浮动 */
}
示例:文字环绕图片
<div class="container"><img src="example.jpg" style="float: left; margin-right: 10px;" width="200"><p>这是一段文字,会环绕在图片右侧...(文字内容足够长时,会在图片下方继续排列)</p>
</div>

效果:图片向左浮动,文字会自动环绕在图片右侧和下方。

三、浮动的特性

  1. 脱离文档流,但不脱离文本流
    • 浮动元素不再占据文档流的位置,后续非浮动元素会填补其空间。
    • 但文本(或行内元素)会环绕浮动元素,不会被其覆盖(这是浮动设计的初衷)。
  2. 具有“块级”特性
    • 行内元素浮动后,会自动具备块级元素的特性(可设置宽高、margin/padding等),例如:
span {float: left;width: 100px;  /* 行内元素默认无法设置宽高,浮动后可生效 */height: 50px;
}
  1. 浮动元素会“收缩”
    • 块级元素浮动后,如果未设置宽度,会根据内容自动收缩(默认块级元素宽度为父元素100%)。
  2. 多个浮动元素会并排排列
    • 同一方向的浮动元素(如多个float: left)会在一行内依次排列,超出父元素宽度时会自动换行。

四、浮动的问题:父元素高度坍塌

浮动元素脱离文档流后,父元素无法感知其高度,导致父元素高度为0(即“高度坍塌”),可能破坏页面布局。

示例:高度坍塌现象
<div class="parent" style="border: 2px solid red;"><div class="child" style="float: left; width: 100px; height: 100px; background: blue;"></div>
</div>
  • 父元素(红色边框)因子元素浮动,高度为0,边框会“塌陷”成一条线。

没有浮动的效果

添加了浮动的效果

五、清除浮动(解决高度坍塌)

清除浮动的核心是让父元素重新感知浮动元素的高度,常用方法如下:

1. 额外标签法(隔墙法)

在浮动元素的最后添加一个空的块级元素,设置clear: both

<div class="parent"><div class="child" style="float: left;"></div><!-- 额外标签 --><div style="clear: both;"></div>
</div>
  • clear: both表示该元素左右两侧不允许有浮动元素,迫使父元素撑开高度。
  • 缺点:增加无意义的标签,不符合语义化。
2. 父元素设置overflow

给父元素添加overflow: hiddenauto,触发“BFC(块级格式化上下文)”,使父元素包含浮动元素:

.parent {overflow: hidden;  /* 或 overflow: auto */
}
  • 优点:简单快捷,无需额外标签。
  • 缺点:可能隐藏超出父元素的内容(如子元素的margin或阴影)。
3. 伪元素清除法(推荐)

通过父元素的::after伪元素模拟额外标签,是目前最常用的方法:

.parent::after {content: "";       /* 伪元素必须设置content */display: block;    /* 转为块级元素 */clear: both;       /* 清除浮动 */visibility: hidden; /* 隐藏伪元素(不影响布局) */height: 0;         /* 高度为0,不占用空间 */
}
.parent {*zoom: 1; /* 兼容IE6/7(IE低版本不支持伪元素) */
}
  • 优点:语义化好,不添加额外标签,兼容性强。

六、浮动的应用场景

  1. 文字环绕图片:最经典的原生场景。
  2. 横向排列元素:如导航栏、图片画廊等(多个元素浮动实现并排)。
  3. 两栏/三栏布局:早期没有Flexbox/Grid时,常用浮动实现左右分栏。
示例:简单两栏布局
<div class="container"><div class="left" style="float: left; width: 30%; background: #f0f0f0;">左侧栏</div><div class="right" style="float: right; width: 70%; background: #e0e0e0;">右侧栏</div><div style="clear: both;"></div> <!-- 清除浮动,避免影响后续元素 -->
</div>

七、浮动的注意事项

  1. 谨慎嵌套浮动:多层浮动可能导致复杂的布局问题,难以调试。
  2. 及时清除浮动:只要父元素包含浮动子元素,就需要清除浮动,避免高度坍塌。
  3. 现代布局替代方案:对于复杂布局,优先使用Flexbox(一维)或Grid(二维),它们更简洁、易维护,且避免了浮动的副作用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/919542.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/919542.shtml
英文地址,请注明出处:http://en.pswp.cn/news/919542.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GPIO初始化及调用

下面把 HAL 库 和 标准外设库&#xff08;SPL&#xff09; 初始化 GPIO 点亮/熄灭 LED 的完整步骤、示例代码和常用 API 逐一说清楚。用例默认 PC13 接 LED&#xff08;蓝板常见&#xff1b;低电平点亮&#xff0c;高电平熄灭——若板子相反&#xff0c;只把写 1/0 对调即可&am…

【GPT入门】第48课 LlamaFacotory 合并原模型与LoRA模型

【GPT入门】第48课 LlamaFacotory 合并原模型与LoRA模型1.合并原模型与LoRA训练的增量模型2. 测试模型1.合并原模型与LoRA训练的增量模型 llamafactory-cli webui 执行合并 合并后模型大小 (base) rootautodl-container-b4b04ea4f2-b5ee47d1:~# du -sh /root/autodl-tmp/mod…

Python爬虫实战:研究tumblr,构建博客平台数据采集分析系统

1. 引言 1.1 研究背景 在信息爆炸的时代,社交媒体平台已成为人们获取信息、表达观点和进行社交互动的主要渠道。这些平台上积累的海量数据包含了用户偏好、社会趋势、文化现象等丰富信息,对学术研究、市场分析、产品开发等领域具有重要价值。 Tumblr 作为一个综合性的轻博客…

集成算法学习总结

一、集成学习基础认知 核心思想&#xff1a;集成学习&#xff08;ensemble learning&#xff09;通过构建并结合多个个体学习器来完成学习任务&#xff0c;类似于 “多个专家共同决策”&#xff0c;通常比单个学习器的性能更优。其核心逻辑是利用多个学习器的优势互补&#xff…

线程安全的产生以及解决方案

线程安全原子性&#xff08;Atomicity&#xff09;、可见性&#xff08;Visibility&#xff09;、有序性&#xff08;Ordering&#xff09; 是保证线程安全的三大核心要素 —— 线程安全问题的本质&#xff0c;几乎都是这三个特性中的一个或多个被破坏导致的。操作不会被 “中途…

Spring Cloud Netflix学习笔记01

文章目录前言一、微服务概述什么是微服务&#xff1f;微服务与微服务架构微服务优缺点优点缺点微服务技术栈有那些&#xff1f;二.SpringCloud入门概述SpringCloud是什么&#xff1f;SpringCloud和SpringBoot的关系Dubbo 和 SpringCloud技术选型总结SpringCloud能干嘛&#xff…

专题:2025母婴行业消费洞察与分龄营养趋势报告|附40 +份报告PDF、交互图表数据汇总下载

原文链接&#xff1a;https://tecdat.cn/?p43654 当95后妈妈拿着计算器对比DHA纯度&#xff0c;当爸爸们为“防红屁屁纸尿裤”货比三家&#xff0c;母婴行业的风向早就变了。从“一把奶粉喂到3岁”到“按月龄定制营养包”&#xff0c;从“进口就好”到“看专利数据下单”&…

redhat6/centos6 配置yum源

由于RHEL6/centos6系统官方早就停止通知维护了&#xff0c;公司的开发服务器有比较老&#xff0c;发现竟然scp都没有装。。。今天配置个本地yum源&#xff0c;安装一下常规软件和开发环境比较简单&#xff0c;直接上代码1.上传一个centos6的iso文件CentOS-6.5-x86_64-bin-DVD1.…

day31 SQLITE

数据库相关函数数据库创建int sqlite3_open( const char *filename, sqlite3 **ppDb);功能&#xff1a;打开数据库&#xff0c;不存在则创建参数&#xff1a;const char *filename 数据库名sqlite3 **ppDb 二级指针&#xff0c;传出ppDb数据库的一级指…

嵌入式-SPI番外之按钮驱动程序的编写-Day15

目录 一、按钮简单操作回忆 二、按钮新操作实现 &#xff08;1&#xff09;按钮的点击实现灯亮/灭 ①连接电路 ②初始化板载LED和按钮 ③按钮程序的基本原理&#xff08;核心仍为0亮/1灭&#xff09; ④按钮消抖的原理 三、按钮封装的操作-点击&#xff0c;双击&#xf…

星域智链科技:用科技点亮生活,以 AI 拓展无限可能

星域智链科技&#xff08;东莞市&#xff09;有限公司简介 星域智链科技&#xff08;东莞市&#xff09;有限公司&#xff0c;理念是 让科技便利生活、丰富生活&#xff0c;专注于科技、AI领域。 全场景 GPS 定位器 —— 精准追踪&#xff0c;守护安全&#xff0c;适用于车辆…

国内代理IP在SEO行业中的应用

随着互联网的快速发展&#xff0c;SEO&#xff08;搜索引擎优化&#xff09;已经成为了数字营销的重要组成部分。无论是企业还是个人站长&#xff0c;都希望通过SEO提升自己网站的排名和流量。然而&#xff0c;随着竞争的激烈&#xff0c;传统的SEO优化手段已经逐渐显现出局限性…

Linux + arm 内存屏障

ARM 硬件层的屏障指令DMB (Data Memory Barrier)&#xff1a;保证在它之前的内存访问&#xff08;符合给定域/类型&#xff09;在它之后的内存访问之前对可见性排序。常用域&#xff1a;ish&#xff08;Inner Shareable&#xff09;&#xff0c;sy&#xff08;system-wide&…

网络安全中的远程控制活动检测与防御策略

本文还有配套的精品资源&#xff0c;点击获取 简介&#xff1a;远程控制技术在IT领域中用于网络连接和设备操作&#xff0c;但同样被黑客利用进行非法入侵。端口占用情况是识别远程控制活动的关键因素&#xff0c;使用工具如"cports"可以监控这些端口。系统中未知…

UIGestureRecognizer 各个子类以及其作用

在 iOS 里&#xff0c;UIGestureRecognizer 是一个抽象基类&#xff0c;专门用来处理手势事件。它本身不能直接用&#xff0c;必须用它的 子类。这些子类分别对应常见的手势识别器。常见的 UIGestureRecognizer 子类及作用1. UITapGestureRecognizer作用&#xff1a;点击手势&a…

计算机网络 HTTPS 全流程

HTTPS 通信的全流程&#xff08;特别是 TLS 握手阶段&#xff09;中使用的三个随机数是保障安全性的核心设计&#xff0c;不能随意减少。每个随机数都承担着至关重要的安全职责。下面详细解释 HTTPS 全流程&#xff0c;并重点分析这三个随机数的作用和必要性&#xff1a;&#…

DL00271-基于YOLOv11的激光雷达LiDAR船舶目标检测含完整数据集

【CSDN推荐】基于YOLOv11的激光雷达&#xff08;LiDAR&#xff09;船舶目标检测——含完整数据集&#xff01;&#x1f6a2; 科研人员必看&#xff01; 高校老师、学生和研究者们&#xff0c;前沿技术来了&#xff01;本论文利用YOLOv11模型&#xff0c;结合激光雷达&#xff0…

SQL-leetcode—3374. 首字母大写 II

3374. 首字母大写 II 表&#xff1a;user_content -------------------- | Column Name | Type | -------------------- | content_id | int | | content_text| varchar | -------------------- content_id 是这张表的唯一主键。 每一行包含一个不同的 ID 以及对应的文…

告别笼统的 200 OK:一份给 API 设计者的 HTTP 状态码终极指南

文章目录写在前面问题描述核心结论与建议简要描述详细阐述1xx - 信息性响应 (Informational)2xx - 成功 (Successful)3xx - 重定向 (Redirection)4xx - 客户端错误 (Client Error)5xx - 服务器错误 (Server Error)HTTP 状态码速查表参考以及更多更详细的状态码查询写在前面 你…

从防抖节流到链表树:编程世界中的抽象优化艺术

从防抖节流到链表树&#xff1a;编程世界中的抽象优化艺术 在编程的知识体系中&#xff0c;有些概念看似毫不相关&#xff0c;却在底层逻辑上有着惊人的相似之处。防抖与节流、链表与树&#xff0c;这两组分属不同领域的概念&#xff0c;正是这种思维共性的典型代表。它们不仅展…