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

css基础-浮动

一、浮动是什么?

比喻:就像泳池里的救生圈

  • 原始用途:让文字环绕图片(像杂志排版)
  • 意外发展:被用来做页面布局(像用救生圈搭浮桥)

二、浮动怎么产生的?

场景还原:

正常文档流:元素像书架上的书,严格从上到下排列

开启浮动:元素变成"悬浮书",会:

  • 脱离书架(脱离文档流)
  • 漂向指定方向(left/right)
  • 后面的书会填补空隙(产生文字环绕效果)

经典布局案例:

<!DOCTYPE html>
<style>
  .container {
    border: 3px solid red;  /* 父容器边框 */
    margin: 20px;
  }
  .float-box {
    float: left;           /* 开启左浮动 */
    width: 150px;
    height: 100px;
    background: skyblue;
    margin: 10px;
  }
  .normal-content {
    background: #ffe0b2;   /* 后续普通内容 */
    padding: 15px;
  }
</style>

<!-- 问题场景 -->
<div class="container">
  <div class="float-box"></div>
  <div class="float-box"></div>
</div>

<div class="normal-content">
  <h2>我是后续内容</h2>
  <p>我本应该在父容器下方,现在却紧贴浮动元素...</p>
</div>

20250322211603

👉 效果:两栏并排布局(早期网页常用手法)

三、浮动带来的问题

比喻:泳池里的救生圈漂走后…

父容器塌陷(高度消失)

现象:父元素变成"空泳池",背景边框失效

原因:浮动的子元素不占父容器空间

后续元素乱跑

现象:后面的内容紧贴浮动元素排列

示例:页脚跑到右侧栏旁边

布局错位

现象:多个浮动元素卡在容器边缘无法换行

四、解决方案大全

方法1:人工救生杆(空div清除法)

<div class="parent">
  <div class="float-box">浮动元素</div>
  <div style="clear: both;"></div> <!-- 插入清除杆 -->
</div>\

✅ 优点:简单直接
❌ 缺点:增加无意义标签

方法2:魔法防护罩(overflow触发BFC)

.parent {
  overflow: hidden; /* 或 auto */
}

✅ 优点:代码简洁
❗ 注意:可能隐藏溢出内容

方法3:专业清洁工(clearfix黑科技 结合伪元素)

/* 现代最推荐方案 */
.clearfix::after {
  content: "";
  display: block;
  clear: both;
}

使用方式:

<div class="parent clearfix">
  <div class="float-box">浮动元素</div>
</div>

✅ 优点:无副作用,专业级解决方案

方法4:新时代救生艇(Flex/Grid布局)

/* Flex方案 */
.parent {
  display: flex;
  gap: 20px; /* 间距 */
}

/* Grid方案 */
.parent {
  display: grid;
  grid-template-columns: 1fr 2fr; /* 两栏布局 */
}

✅ 优势:彻底告别浮动烦恼
🚀 推荐:现代布局的首选方案

五、使用建议

方案适用场景学习优先级
clearfix维护老项目★★★☆☆
Flex布局大多数现代布局★★★★★
Grid布局复杂二维布局★★★★☆
overflow简单场景快速修复★★☆☆☆

六、调试技巧

浏览器检查:按F12查看元素是否"浮起来"(脱离文档流)

颜色标记法:给父元素加背景色,观察是否塌陷

渐进式布局:先写HTML结构,再逐步添加浮动

css overflow: hidden——隐藏溢出、清除浮动、解决坍塌问题


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

相关文章:

  • 【工具变量】全国地级市克鲁格曼专业化指数数据集(2006-2023年)
  • 基于蒙特卡洛方法的网格世界求解
  • 使用netDxf扩充LaserGRBL使它支持Dxf文件格式
  • 在刀刃上发力:如何精准把握计划关键节点
  • uniapp 微信小程序 手机号快速验证组件 解密 encryptedData 获取手机号
  • docker速通
  • OAuth 2.0认证
  • doris:负载均衡
  • 【数据预测】基于遗传算法GA的LSTM光伏功率预测 GA-LSTM光伏功率预测【Matlab代码#91】
  • OpenHarmony 开源硬件学习全指南:从入门到实战
  • JAVA - OJ沙箱(JAVA默认模板沙箱,JAVA操作dokcer沙箱)
  • MacOS安装 nextcloud 的 Virtual File System
  • LangChain组件Tools/Toolkits详解(6)——特殊类型注解Annotations
  • llama源码学习·model.py[4]Attention注意力(2)源码分析
  • 洛谷 [语言月赛 202503] 题解(C++)
  • (滑动窗口)算法训练篇11--力扣3.无重复字符的最长字串(难度中等)
  • ROM(只读存储器) 、SRAM(静态随机存储器) 和 Flash(闪存) 的详细解析
  • Centos编译升级libcurl
  • DeepSeek自学手册:《从理论(模型训练)到实践(模型应用)》|73页|附PPT下载方法
  • NVM 多版本node.js管理工具