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

CSS系列之浮动清除clear(三)

一、为什么需要清除浮动

        浮动的原理是让元素脱离文档流,直接浮在桌面上。使用浮动后续添加内容布局可能会产生布局混乱,造成高度坍塌,这时候就可以利用清除浮动来解决父元素高度塌陷的问题。

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>清除浮动</title><style>* {margin: 0;padding: 0;}.box1 {width: 100px;height: 100px;background-color: pink;}.box2 {width: 150px;height: 150px;background-color: skyblue;}</style>
</head><body><div class="box1">1</div><div class="box2">2</div>
</body></html>

 

现在给1号盒子添加一个左浮动float :left,我们来看看会发生什么

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>清除浮动</title><style>* {margin: 0;padding: 0;}.box1 {width: 100px;height: 100px;background-color: pink;float :left;}.box2 {width: 150px;height: 150px;background-color: skyblue;}</style>
</head><body><div class="box1">1</div><div class="box2">2</div>
</body></html>

我们可以看到2号盒子和1号盒子发生了重叠,那么原因是什么呢,原因是1号盒子漂浮起来了,原本所占的空间空缺出来了,所以2号盒子到了1号盒子的位置。

下面总结5种清除浮动的方法(测试已通过 ie chrome firefox opera,后面三种方法只做了解就可以了)

二、解决方法之clear

直接给第二个盒子添加一个clear:left  这里需要注意,clear消除的是上一个盒子对自己的影响,所以,前面一个盒子往哪边浮动,我们就clear哪边,这里的上一个盒子是float:left,所以我们在第二个盒子上添加的也是clear:left

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>清除浮动</title><style>* {margin: 0;padding: 0;}.box1 {width: 100px;height: 100px;background-color: pink;float :left;}.box2 {width: 150px;height: 150px;background-color: skyblue;clear: left;}</style>
</head><body><div class="box1">1</div><div class="box2">2</div>
</body></html>

三、解决方法之overflow:hidden

overflow这个属性需要添加在父元素上,所以我们给两个盒子添加一个父元素,为了看清楚高度塌陷,我们在添加一个底部盒子,如下:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>清除浮动</title><style>* {margin: 0;padding: 0;}.box1 {width: 100px;height: 100px;background-color: pink;}.box2 {width: 80px;height: 80px;background-color: skyblue;}.father {width: 100%;border: 2px solid red;}.bottom {width: 100%;height: 200px;background-color: green;}</style></head><body><div class="father"><div class="box1">1</div><div class="box2">2</div></div><div class="bottom">3</div>
</body></html>

现在给1号盒子和2号盒子添加浮动,我们来看看会发生什么

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>清除浮动</title><style>* {margin: 0;padding: 0;}.box1 {width: 100px;height: 100px;background-color: pink;float: left;}.box2 {width: 80px;height: 80px;background-color: skyblue;float: left;}.father {width: 100%;border: 2px solid red;}.bottom {width: 100%;height: 200px;background-color: green;}</style></head><body><div class="father"><div class="box1">1</div><div class="box2">2</div></div><div class="bottom">3</div>
</body></html>

 可以看到我们的底部盒子不在原来的位置了,原因是什么呢,原因就是此时父元素我们并没有给他设置高度,父元素的高度完全是1号2号盒子撑起来的,现在给1号2号盒子添加了浮动,不占据原来的位置了,所以父元素此时的高度为零,不占位置了,底部盒子就会上去,造成高度塌陷。

解决方法就是:给父元素添加一个overflow:hidden

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>清除浮动</title><style>* {margin: 0;padding: 0;}.box1 {width: 100px;height: 100px;background-color: pink;float: left;}.box2 {width: 80px;height: 80px;background-color: skyblue;float: left;}.father {width: 100%;border: 2px solid red;overflow:hidden;}.bottom {width: 100%;height: 200px;background-color: green;}</style></head><body><div class="father"><div class="box1">1</div><div class="box2">2</div></div><div class="bottom">3</div>
</body></html>

四、解决方法之给父元素添加高度

方法就是给父元素添加一个高度,注意父元素高度的设置一定要大于子元素中高度最高的盒子,以此例子来说就是,子元素中最高的盒子高度是100px,那么父元素的高度一定要大于等于100px。

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>清除浮动</title><style>* {margin: 0;padding: 0;}.box1 {width: 100px;height: 100px;background-color: pink;float: left;}.box2 {width: 80px;height: 80px;background-color: skyblue;float: left;}.father {width: 100%;height: 100px;border: 2px solid red;}.bottom {width: 100%;height: 200px;background-color: green;}</style></head><body><div class="father"><div class="box1">1</div><div class="box2">2</div></div><div class="bottom">3</div>
</body></html>

这里我们主要看clear方法,认真体会clear的作用和效果,感谢大家的观看,我们下期再见。 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 数据库mysql集群主从、高可用MGR、MHA技术详解
  • Go 语言生产服务故障案例精析
  • 黑马JavaWeb开发笔记09——ElementUI代码引入教程、Element常用组件使用(Table, Pagination, Dialog, Form)
  • python爬虫源码:selenium+browsermobproxy实现浏览器请求抓取
  • 7- 排序算法
  • 如何本地搭建Whisper语音识别模型
  • netty之ChannelOption
  • 数据库入门: 从 0 到 1 理解数据管理
  • Visual Basic:企业级应用开发的稳健之选
  • Dubbo ZooKeeper Spring Boot整合
  • Java | Leetcode Java题解之第381题O(1)时间插入、删除和获取随机元素-允许重复
  • Java-InputStream、MultipartFile和File相互转换工具类
  • Day50 | 108.冗余连接 109.冗余连接II
  • IO进程day04(进程)
  • Linux之shell脚本的if分支
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 【comparator, comparable】小总结
  • 【笔记】你不知道的JS读书笔记——Promise
  • 【剑指offer】让抽象问题具体化
  • 【译】理解JavaScript:new 关键字
  • 08.Android之View事件问题
  • AHK 中 = 和 == 等比较运算符的用法
  • If…else
  • interface和setter,getter
  • java正则表式的使用
  • node 版本过低
  • php的插入排序,通过双层for循环
  • spring security oauth2 password授权模式
  • Terraform入门 - 3. 变更基础设施
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 目录与文件属性:编写ls
  • 区块链分支循环
  • 三分钟教你同步 Visual Studio Code 设置
  • 使用docker-compose进行多节点部署
  • 使用parted解决大于2T的磁盘分区
  • 新书推荐|Windows黑客编程技术详解
  • 异步
  • 正则与JS中的正则
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • 扩展资源服务器解决oauth2 性能瓶颈
  • ​configparser --- 配置文件解析器​
  • ​浅谈 Linux 中的 core dump 分析方法
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • ​油烟净化器电源安全,保障健康餐饮生活
  • #define与typedef区别
  • #pragma预处理命令
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • $jQuery 重写Alert样式方法
  • (13)DroneCAN 适配器节点(一)
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (二)换源+apt-get基础配置+搜狗拼音
  • (附源码)springboot教学评价 毕业设计 641310
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子