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

CSS 浮动(Float)及其应用

1. 什么是浮动(Float)?

浮动元素会脱离正常的文档流(Document Flow),并向左或向右移动,直到碰到父元素的边缘或另一个浮动元素。

基本语法

.float-left {float: left;
}.float-right {float: right;
}.no-float {float: none; /* 默认值 */
}

2. 浮动的常见应用场景

(1) 文字环绕图片

<div class="container"><img src="example.jpg" class="float-left" alt="示例图片"><p>这里是环绕的文字内容……</p>
</div>

效果:图片浮动在左侧,文字自动环绕在其右侧。 在这里插入图片描述

(2) 多列布局(传统方式)

在 Flexbox 和 Grid 流行之前,浮动是创建多列布局的主要方式。

.father {border: black solid;width: 1250px;margin: 20px;background-color: #f5f5f5;}.left,.right {float: left;margin-left: 10px;}.left {height: 410px;width: 200px;background-color: black;}.right {height: 410px;width: 950px;background-color: blue;}.grandson {height: 188px;width: 200px;background-color: yellow;float: left;margin-left: 30px;margin-top: 10px;}

在这里插入图片描述
最外黑框线父元素father为文档流,其所有孩子都为浮动流,黑色区块left为一列,蓝色区块right为一列。蓝色区块内又有黄色浮动流grandson。

3. 浮动带来的问题及解决方案

(1) 父元素高度塌陷(Collapsing Parent)

问题:当子元素浮动后,父元素无法自动计算高度,导致布局错乱。

<body><div class="father"><div class="left"></div><div class="right"><div class="grandson"></div><div class="grandson"></div><div class="grandson"></div><div class="grandson"></div><div class="grandson"></div><div class="grandson"></div><div class="grandson"></div><div class="grandson"></div></div><div class="clear"></div></div><div class="no">this is not a content</div>
</body>

显示为:
发现父元素高度发生塌陷,后一位文档流顶了上来。
在这里插入图片描述

解决方案

  • 方法1:使用 clearfix 技巧(推荐)
    .clearfix:after {content: "";display: block;height: 0;clear: both;visibility: hidden;}.clearfix {/* IE6、7 专有 */*zoom: 1;}
    
    <div class="father clearfix">
    
    成功解决:
    在这里插入图片描述
  • 方法2:使用额外标签
============style============
.clear{
clear:both;
}
=============body============
<div class="clear"></div>>

(2) 浮动元素之间的间隙问题

问题:多个浮动元素之间可能出现意外的空白间隙。
原因:HTML 换行符被解析为空格,或 margin 未正确设置。
解决方案

  • 移除 HTML 换行(不推荐)
    <div class="float-left"></div><div class="float-left"></div>
    
  • 使用 margin 调整间距
    .float-item {float: left;margin-right: 10px;
    }
    
  • 改用 Flexbox 或 Grid(现代布局方案)
http://www.lryc.cn/news/2384354.html

相关文章:

  • CC53.【C++ Cont】一维前缀和
  • Python爬虫实战:研究Grab 框架相关技术
  • 每日leetcode
  • YouTube视频字幕转成文章算重复内容吗?
  • 网络学习-利用reactor实现http请求(六)
  • 云原生安全:IaaS安全全解析(从基础到实践)
  • 【IC_Design】跨时钟域的寄存器更新后锁存
  • Spring AI 之提示词
  • 亚远景-汽车软件开发的“升级之路”:ASPICE各等级说明
  • Java微服务架构:Spring Cloud全栈指南,附最新Demo源码,可独立运行!
  • 使用LLaMA-Factory微调ollama中的大模型(一)------家用电脑安装LLaMA-Factory工具
  • 支持向量机(SVM):分类与回归的数学之美
  • 手撕I2C和SPI协议实现
  • 人工智能+:职业价值的重构与技能升级
  • JVM部分内容
  • paddlehub搭建ocr服务
  • python-leetcode 68.有效的括号
  • 人性的裂痕:社会工程学如何成为网络安全的隐形战场
  • ObservableCollection序列化,和监听链表内元素变化
  • NLP学习路线图(四):Python编程语言
  • matlab实现无线通信组
  • 基于单片机的室内采光及可燃气体泄漏报警装置设计
  • Serverless爬虫架构揭秘:动态IP、冷启动与成本优化
  • 从单体到分布式:深入解析Data Mesh架构及其应用场景与价值
  • AI大模型ms-swift框架实战指南(十三):Agent智能体能力构建指南
  • LLM最后怎么输出值 解码语言模型:从权重到概率的奥秘
  • Leetcode百题斩-回溯
  • 超小多模态视觉语言模型MiniMind-V 训练
  • 边缘云的定义、实现与典型应用场景!与传统云计算的区别!
  • HarmonyOS 鸿蒙应用开发基础:父组件和子组件的通信方法总结