CSS之高度塌陷和外边距塌陷

目录

1.高度塌陷(原因,如何解决)

【概念介绍】

【解决办法】

【概念介绍-BFC】

【拓展-BFC的触发条件】

2.外边距塌陷 (原因,如何解决)

【概念介绍】

【两种情况】

1.相邻块元素

2.嵌套块元素

【解决办法】

一、相邻块元素

二、嵌套块元素

总结:


1.高度塌陷(原因,如何解决)

【概念介绍】

高度塌陷:子元素设置浮动后就会脱标(脱离标准流进入浮动流),如果此时父元素没有设置高度,那么父元素高度就会为0,形成所谓的父元素高度塌陷现象

引发的后果:浮动的子元素会对页面的布局造成影响,需要清除浮动。由此得出,解决高度塌陷的本质是清除浮动造成的影响

【图示】

子元素浮动前:

img

子元素浮动后:

img

【解决办法】

(1)给父元素一个高度

做法:直接计算出父元素的高度,给父元素定高

缺点:当子元素过多的时不好计算

(2)利用BFC解决

(3)清除浮动造成的影响

做法:清除浮动的方法

详情请看:清除浮动的方法有哪些

【概念介绍-BFC】

BFC(Block Formatting Context,块格式化上下文) 是Web页面的可视化CSS渲染的一部分,是页面中的一块渲染区域,有自己的渲染规则,它决定了其子元素将如何定位,以及和其他元素的关系和相互作用。

其特性之一:bfc中的浮动元素参与bfc的高度计算,所以可以将父元素变为bfc模式,解决高度塌陷

做法:

a.给父元素设置浮动(此时父元素有高度,但是父元素本身也脱标了,会产生其它的布局问题)

b.给父元素的显示模式设置为inline-block、table-cell、table-caption、flex、inline-flex

c.给父元素overflow设置为非visible(常见做法就是overflow:hidden)

d.设置绝对定位和固定定位

【拓展-BFC的触发条件】
 1、根元素(<html>)2、float值非none3、overflow值非visible4、display值为inline-block、table-cell、table-caption、flex、inline-flex5、position值为absolute、fixed

2.外边距塌陷 (原因,如何解决)

【概念介绍】

垂直方向上的两个块级元素外边距出现了合并的现象,就叫外边距塌陷(水平方向上的元素没有外边距塌陷现象)

【两种情况】

垂直相邻块元素和嵌套块元素 都会产生该现象

【图示】

1.相邻块元素

img

2.嵌套块元素

img

【解决办法】
一、相邻块元素

(1)不用margin,选用padding

操作:让其中某个元素的margin变成padding,因为padding不存在塌陷

(2)中间加个空标签隔开

操作:让空标签的高度为两者margin之和

(3)只给一个元素设置margin

操作:只给其中一个元素设置margin,就不存在外边距塌陷了

(4)改变元素的显示模式

操作:改变其中一个块元素的显示模式为行内块元素

缺点:改变了元素的显示模式,可能产生其它的问题

二、嵌套块元素

(1)更改元素显示模式。

操作:改变其中一个块元素的显示模式为行内块元素

缺点:改变了元素的显示模式,可能产生其它的问题

(2)更改元素的文档流。

操作:给其中一个元素设置浮动,脱离标准流,就能解决

缺点:脱标元素会对后面的元素造成影响

(3)给父元素设置溢出隐藏 (推荐)

操作:设置overflow:hidden

(4)给父元素设置(上)内padding

操作:给父元素设置一个上内边距,使其和子元素保持距离

缺点:可能造成其它子元素的位置发生改变

(5)给父元素设置(上)边框

操作:给父元素一个边框,让子元素的margin-top以这个边框为准

缺点:多了个边框,影响美观

注意:定位能实现效果,但是,与本题关系不大。本题主要探讨的是使用margin-top实现效果的时候会产生问题,要怎么解决这个问题(现象)

总结:
  1. 高度塌陷是因为父元素没有设高,而子元素浮动脱标,造成父元素高度为0产生塌陷。

常见的解决办法:

1.给父元素设置高度

2.设置父元素的显示模式为flex

3.设置父元素overflow为hidden

  1. 外边距塌陷 分为嵌套盒子塌陷兄弟盒子塌陷

对于嵌套盒子,常见的解决办法就是利用父盒子的padding,实现分离的效果

对于兄弟盒子,常见的解决办法就是只给一个盒子设置margin,就可以了

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

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

相关文章

PPP协议原理介绍+报文分析+配置指导-RFC1661

个人认为&#xff0c;理解报文就理解了协议。通过报文中的字段可以理解协议在交互过程中相关传递的信息&#xff0c;更加便于理解协议。 因此本文将在PPP协议报文的基础上进行介绍。 关于PPP协议基本原理&#xff0c;可参考RFC1661-The Point-to-Point Protocol (PPP)。 关于P…

编译原理2.3习题 语法制导分析[C++]

图源&#xff1a;文心一言 编译原理习题整理~&#x1f95d;&#x1f95d; 作为初学者的我&#xff0c;这些习题主要用于自我巩固。由于是自学&#xff0c;答案难免有误&#xff0c;非常欢迎各位小伙伴指正与讨论&#xff01;&#x1f44f;&#x1f4a1; 第1版&#xff1a;自…

Spring扩展点在微服务应用(待完善)

ApplicationListener扩展 nacos注册服务&#xff0c; 监听容器发布事件 # 容器发布事件 AbstractAutoServiceRegistration#onApplicationEvent # 接收事件吗&#xff0c;注册服务到nacos NacosServiceRegistry#register Lifecycle扩展 #订阅服务实例更改的事件 NamingService#…

go语言数组和切片

1. 数组Array Golang Array和以往认知的数组有很大不同。 1. 数组&#xff1a;是同一种数据类型的固定长度的序列。2. 数组定义&#xff1a;var a [len]int&#xff0c;比如&#xff1a;var a [5]int&#xff0c;数组长度必须是常量&#xff0c;且是类型的组成部分。一旦定义&…

设计模式: 装饰模式

文章目录 一、什么是装饰模式二、装饰模式的结构三、使用场景案例分析 一、什么是装饰模式 在不改变对象原有行为的基础上&#xff0c;动态的来为该对象绑定新的行为。 二、装饰模式的结构 装饰模式结构中主要包含如下角色&#xff1a; Component&#xff08;抽象部件&…

操作系统-虚拟机(传统计算机 虚拟机 两类VMM对比 指令等级 特权与敏感)

文章目录 传统计算机虚拟机VMM的对比支持虚拟化的CPU通常分更多指令等级&#xff08;特权 敏感&#xff09; 传统计算机 传统物理机只有一个操作系统 两个进程在一个操作系统上运行会存在一些隐患&#xff08;相互影响 争夺资源等&#xff09; 解决方法&#xff1a;如果各个进…

Docker部署

Docker简介 Docker是一个开源的容器引擎&#xff0c;它有助于更快地交付应用。 Docker可将应用程序和基础设施层隔离&#xff0c;并且能将基础设施当作程序一样进行管理。使用 Docker可更快地打包、测试以及部署应用程序&#xff0c;并可以缩短从编写到部署运行代码的周期。 &a…

HCIP 交换

拓扑图&IP划分如下&#xff1a; 第一步&#xff0c;配制VLAN LSW1&#xff0c;LSW2&LSW3同理 检测 LSW1 LSW2 测试

硬件之相机选型

1. 相机成像原理 相机成像原理如图所示&#xff1a; 注&#xff1a; 当物距为无穷远时&#xff0c;像距等于焦距&#xff0c;成像在焦平面上&#xff1b;当物距为无穷无与两倍焦距之间时&#xff0c;像距在焦距与两倍焦距之间&#xff0c;成缩小的实像&#xff1b;当物距等于两…

MySQL的主从复制

主从复制是指将主数据库的 DDL 和 DML 操作通过二进制日志传到从库服务器中&#xff0c;然后在从库上对这些日志重新执行&#xff08;也叫重做&#xff09;&#xff0c;从而使得从库和主库的数据保持同步。 MySQL支持一台主库同时向多台从库进行复制&#xff0c; 从库同时也可…

什么是JMeter?我们为什么要用JMeter做性能测试

什么是JMeter&#xff1f;我们为什么要用JMeter做性能测试 什么是JMeter&#xff1f;为什么选择JMeterJMeter的优点JMeter是如何工作的 什么是JMeter&#xff1f; Apache JMeter TM是纯Java开源软件&#xff0c;最初由Apache软件基金会的Stefano Mazzocchi开发&#xff0c;旨在…

使用模方时,使用手动备份功能恢复备份前的状态没有效果,是什么原因?

在使用备份恢复时&#xff0c;鼠标应点击在要恢复的瓦块上&#xff0c;再点击还原备份&#xff1b;见下图&#xff1a; 模方是一款针对实景三维模型的冗余碎片、水面残缺、道路不平、标牌破损、纹理拉伸模糊等共性问题研发的实景三维模型修复编辑软件。模方4.1新增自动单体化建…