⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

CSS Float 浮动

CSS float 浮动详解 · 难度:进阶 · +15XP

CSS float 浮动详解

float 属性曾经是 CSS 布局的主力工具,用于让元素浮动到容器的左侧或右侧,使其周围的内容环绕它。虽然现代布局更多使用 Flexbox 和 Grid,但 float 在文字环绕图片等场景中仍然不可替代。

float 属性值

行为效果
none不浮动(默认)正常文档流
left浮动到左侧元素靠左,内容从右侧环绕
right浮动到右侧元素靠右,内容从左侧环绕
inline-start起始方向浮动根据书写方向靠起始边
inline-end结束方向浮动根据书写方向靠结束边

float: left —— 图片文字环绕

这是 float 最经典的用法:

img.article-img {
  float: left;
  width: 300px;
  margin-right: 20px;
  margin-bottom: 10px;
}
/* 段落的文字会自动环绕图片右侧 */

float: right —— 侧边栏布局

.sidebar {
  float: right;
  width: 300px;
}
.content {
  margin-right: 320px;  /* 为侧边栏留出空间 */
}

清除浮动 clear

当你不想要后续元素环绕浮动元素时,需要使用 clear 属性:

.clear-left  { clear: left; }   /* 清除左侧浮动 */
.clear-right { clear: right; }  /* 清除右侧浮动 */
.clear-both  { clear: both; }   /* 清除两侧浮动 */

清除浮动(Clearfix)经典方案

当容器内所有子元素都浮动后,容器的高度会塌陷为 0。Clearfix 用于解决这个问题:

/* 经典 Clearfix 方案 */
.clearfix::after {
  content: "";
  display: table;
  clear: both;
}

/* 现代替代方案:display: flow-root */ .container { display: flow-root; /* 自动清除内部浮动 */ }

/* 示例 */ <div class="clearfix"> <div style="float: left; width: 50%;">左列</div> <div style="float: right; width: 50%;">右列</div> </div>

float 的多列布局(传统方案)

.column {
  float: left;
  width: 33.33%;
  padding: 15px;
  box-sizing: border-box;
}

/* 清除最后一行的浮动 */ .row::after { content: ""; display: table; clear: both; }

float vs Flexbox vs Grid

特性floatFlexboxGrid
设计目的文字环绕一维布局二维布局
环绕效果原生支持不支持不支持
清除问题需要 clearfix无需清除无需清除
高度塌陷会塌陷不会不会
现代推荐仅文字环绕一维排列首选二维布局首选

float 实际应用场景

/* 1. 图文混排 —— float 最佳场景 */
img.inline-left {
  float: left;
  margin: 0 16px 16px 0;
  border-radius: 8px;
}

/* 2. 首字下沉(传统做法) */ p.dropcap::first-letter { float: left; font-size: 4em; line-height: 0.8; margin-right: 8px; color: #e74c3c; }

/* 3. 简单按钮排列 */ .btn-group .btn { float: left; margin-right: 8px; } .btn-group::after { content: ""; clear: both; display: table; }

???? 练习

  1. 使用 float: left 创建一个图片靠左、文字环绕的新闻摘要卡片
  2. 用 float 实现一个简单的两列布局(侧边栏 + 主内容)
  3. 使用 ::first-letter + float 创建杂志风格的首字下沉效果
  4. 练习 clearfix:让浮动元素的父容器正确包含它们
  5. 对比 float 和 Flexbox 实现同一布局的代码复杂度差异

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 122 篇
0 完成
🔥 0