css高度塌陷和外边距塌陷的原因及解决办法

2023-05-16

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

概念介绍

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

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

图示

子元素浮动前:

子元素浮动后:

解决办法

(1)给父元素一个高度

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

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

(2)利用BFC解决

概念介绍-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.设置绝对定位和固定定位

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

做法:清除浮动的方法

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

拓展-BFC的触发条件

1、根元素(<html>)
2、float值非none
3、overflow值非visible
4、display值为inline-block、table-cell、table-caption、flex、inline-flex
5、position值为absolute、fixed

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

概念介绍

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

两种情况

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

图示

相邻块元素

嵌套块元素

解决办法

一、相邻块元素

(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

2)  外边距塌陷 分为嵌套盒子塌陷兄弟盒子塌陷

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

css高度塌陷和外边距塌陷的原因及解决办法 的相关文章

  • 如何在GEB中选择内部元素的文本?

    我有以下场景 div ul class select2 results style width 400px li class select2 results dept 0 select2 result select2 result sele
  • 如何使用CSS更改iframe的src

    我有这段代码 并且不知道如何制作它 因此当我单击 菜单 中的项目时 不会重定向到其他页面 而是更改 iframe 的 src 我应该更改 Code
  • Sass 部分导入

    我有 sass 编译的问题 当我有一个部分的项目时 partial scss并将其导入到多个部分文件中 因为它包含颜色变量 它将多次出现在编译的 css 中 这很丑陋 因为同一个规则会多次 推翻 自身 这使得调试信息 chromium 开发
  • Phonegap Cordova Statusbar 插件创建双栏

    我正在开发一个使用phonegap 的应用程序 通过 CLI 构建 而不是 PhoneGap 构建 我的 cordova plugin statusbar 插件有问题 打开时它将增加额外的条高度 这是它的样子 双高菜单栏 我通过两种方式实现
  • 在 Kendo UI 网格列标题上添加悬停文本

    我正在尝试将自定义悬停文本 如工具提示 添加到 KendoUI 网格中的列标题 文本应该特定于每一列 并且最好不显示在标题行之外的任何内容上 Grid 对象没有工具提示选项 但我不确定是否有办法使用 CSS 或它们的行模板 http dem
  • 仅在 Windows Chrome 上使用变换比例会导致文本模糊

    我遇到了一个关于 CSS 转换的非常令人沮丧的问题scale 我有一个文本块 我想在悬停时将其缩放 105 但它导致文本模糊 但仅限于 Windows 版本的 Chrome 我发现这个问题 https stackoverflow com q
  • window.alert() 之后无法编辑输入文本字段

    我有这个 Electron 应用程序 使用 NodeJS Bootstrap AngularJS 其中包含一些可以编辑的文本输入字段 我有一个触发 window alert 的按钮 触发后 文本输入字段将不再可编辑 单击应用程序的其他元素不
  • Bootstrap 3 将文本与 Div 底部对齐

    我正在尝试在 Bootstrap 中进行如下设置 其中文本与图像底部对齐 THIS IS AN IMAGE And some text
  • 为什么在 CSS3 中启用硬件加速会降低性能?

    我在 css3 实验中将 10 000 个小 div 元素从浏览器视口的顶部移动到底部 对于此测试 我使用两种不同的方法 使用 GPU 加速translate3D x y z or translateZ 0 无需 GPU 加速 只需调整to
  • 如何创建具有动态数量的网格列的 TailwindCSS 网格?

    我正在使用 Vue3 和 TailwindCSS 并希望创建一个具有动态的网格grid cols n 班级 我知道 TailwindCSS 默认情况下最多支持 12 列 但我无法自定义主题 因为列的数量完全是动态的 给出以下纯 HTML J
  • 2 个单词之间有空格 CSS

    我想在 css 中的 2 个单词之间添加一个空格 例如 1 RUNNING DAYS email protected cdn cgi l email protection 在 HTML 中有 nbsp nbsp但使用不正确 nbsp我认为
  • 我们可以在displaytag中使用rowspan和colspan吗?

    我必须创建一个表 其结构是这样的 col1 col2 col3 col4 col3 1 col3 2 是否可以使用显示标签创建这样的数据网格 查看装饰器示例 http displaytag sourceforge net 1 2 tut d
  • Sass 与 BEM,继承选择器

    我正在使用 Sass 3 4 1 和 BEM 所以我的 scss 是 photo of the day title font size 16px 我希望每次将鼠标悬停在 photo of the day标题发生了一些事情 这很常见 所以通常
  • SVG 中虚线的悬停事件

    带有线 或路径 的 SVG 使用stroke dasharray当用户将鼠标悬停在虚线的实心部分上时 似乎只会触发 CSS 和 JS 悬停事件 https codepen io anon pen YeXoZy https codepen i
  • 超大图像缩小后变得模糊

    这是我第一次尝试响应式设计 所以如果这是一个愚蠢的简单问题 请原谅 我创建了一个图像并将其最大宽度设置为不大于图像的实际宽度 因为我知道放大图像会导致模糊不清 我有点困惑的是 当我缩小窗口并且图像开始缩小时 它也变得模糊 这是正确的行为吗
  • Django base.html扩展为homepage.html,出现静态图像,但home.css不起作用

    Problem 正如标题所示 我正在构建一个 django 项目 base html 扩展为 homepage html 并且工作正常 出现静态图像 但 home css 在任何地方都不起作用 Update 我已经切换了base html
  • Bootstrap 使用 SASS 和 fontawesome 图标分隔符修改面包屑

    所以我正在尝试更改默认值breadcrumb与 SASS 的风格 我已经按照官方 Bootstrap 4 beta 3 文档中提到的方式设置了所有内容 我更改了以下内容custom scss breadcrumb divider f105
  • 基于多个类选择元素

    我有一个样式规则 我想在标签具有two类 有没有办法不用 JavaScript 来执行此操作 换句话说 li class left ui class selector 我想应用我的风格规则only if the li两者都有 left an
  • div 元素中的文本在 Firefox 中位于水平对齐的 span 元素之上

    我正在编写一个 Web 应用程序 其中支持票证显示为左侧的票证 ID 作为静态文本 其余字段 描述 严重性 持续时间 状态 报告者 在右侧显示为固定文本中的滚动文本 大小视口 我从一个 span 包含票证 ID 和视口 div 包含第二个
  • 删除已从另一个下拉菜单中选择的下拉值

    我在网上搜索了一段时间 但仍然找不到答案 我的网站上有三个下拉菜单 我使用它们来接受用户首选项 以便用户可以控制结果的输出 所以我想知道如果在其中一个下拉列表中选择了该值 是否可以从其他两个下拉列表中取出该值 例如 如果用户在第一个电影中选

随机推荐

  • 修改Linux配置文件后,让其生效的办法

    方法一 下面这个命令 xff0c 可以使所有用户都可以生效 xff0c 但是需要重新启动服务器 xff0c 如果是企业服务器 xff0c 极其不建议重新启动 xff0c 如果允许可以重启 项目中 xff0c 这个命令一般是java通过ssh
  • 在Windows上使用nginx具体步骤

    首先下载Windows版本的nginx http nginx org en docs windows html 直接将文件解压 xff0c 然后直接在有nginx exe同级的目录下执行cmd 当然你也可以双击下图红框中的文件 xff0c
  • Linux重启nginx服务

    1 方法一 到nginx下面的sbin目录下执行 nginx s reload 2 方法二 如果第一种不生效 xff0c xff08 项目背景 xff09 实际项目不生效 xff0c 也即部署到nginx下面的vue项目 xff0c 已经更
  • 静态方法调用yml配置文件中的值

    目录 一 概念讲解二 正确方式正确方法一正确方法二 可能遇到的问题 一 概念讲解 获取配置文件的注解方式有 64 value 64 ConfigurationProperties xff0c 这两种方式遇到下列情况都会失效 xff1a 属性
  • 2022IDEA搭建springMvc项目

    springmvc项目搭建 一 创建maven项目二 Add Framework Support三 添加依赖并配置maven四 配置前端控制器 96 DispatcherServlet 96 五 配置SpringMVC XML文件六 创建c
  • Error creating bean with name ‘mySwaggerResourceProvider‘

    多种情况都会导致此错误的产生 造成原因1 依赖冲突 xff1a 当maven导入项目的依赖A与导入项目的依赖B都依赖于依赖C xff0c 如下图所示 xff0c 都依赖于guava 也就是依赖C xff0c 因为依赖A与依赖B都有依赖C的依
  • Contents have difference only in line separators

    问题描述 xff1a idea关联上git xff0c 文件更改完 xff0c 然后ctrl 43 z回退到未更改之前 xff0c 但是git上的commit还是有此文件 xff08 表示有更改的地方 xff09 xff0c 如下图所示 红
  • valid prop: custom validator check failed for prop “size“.

    问题现象 xff0c 如下图所示 解决方案 xff1a 第一步 xff1a 首先确定出问题的 vue页面 xff0c 如上图所示 xff0c 是c view business product product manage vue 文件出现的
  • 装饰器

    装饰器 由于函数也是一个对象 xff0c 而且函数对象可以被赋值给变量 xff0c 所以 xff0c 通过变量也能调用该函数 span class prompt gt gt gt span class function span class
  • yolov5 识别效果不好如何判断原因

    yolov5 训练完模型以后发现 对测试图片的识别效果不好 那么这个时候该怎么办呢 是过拟合还是欠拟合了呢 怎么判断呢 欠拟合 机器学习中一个重要的话题便是模型的泛化能力 xff0c 泛化能力强的模型才是好模型 xff0c 对于训练好的模型
  • STM32F303RE 四个ADC同步规则采样

    STM32F303RE 芯片有4个ADC 采样频率据说能达到5Mbsps 已经算是非常高的了 比较适合做采样 参考文章 STM32三个ADC同步规则采样 参考上面的配置文章 经过不断的失败和重复尝试 最后终于搞通了 其中遇到了好几个错误 也
  • Python虚拟环境导出包安装到另一台电脑的方法

    Python虚拟环境导出包安装到另一台电脑的方法 环境 xff1a Windows 版 Python Python 3 6 8可以用自带的命令建立虚拟环境 xff0c 不用安装另外的如 virtualenv virtualenvwrappe
  • C# System.Numerics.Math.Sin 计算对边和临边

    在 C 中 xff0c 使用 System Numerics 中的 Math Sin 计算 36 869898 度角的正弦值可以通过以下代码实现 xff1a span class token keyword using span span
  • HTTP 错误 401.0 - Unauthorized 的解决方案

    我的项目突然间报这个错误 HTTP 错误 401 0 Unauthorized 您无权查看此目录或页面 最可能的原因 通过身份验证的用户无权访问处理请求所需的资源 可尝试的操作 查看失败请求跟踪日志以获取有关此错误的其他信息 有关详细信息
  • 卡尔曼滤波,最最容易理解的讲解.找遍网上就这篇看懂了.

    学习卡尔曼滤波看了4天的文章 硬是没看懂 后来找到了下面的文章一下就看懂了 我对卡尔曼滤波的理解 我认为 卡尔曼滤波就是把统计学应用到了滤波算法上 算法的核心思想是 根据当前的仪器 34 测量值 34 和上一刻的 34 预测量 34 和 3
  • HTTP status Code 412 未满足前提条件的解决方法之一

    最近网站老是报告错误 ajax返回状态为 error 思来想去不知道为啥 后来跟踪了下 发现是在请求某个页面的时候会返回412错误 而这个页面的请求是通过jquery 的 34 panel 34 load 34 http 34 方法去请求的
  • RabbitMQ入门 用途说明和深入理解

    RabbitMQ 在上一家公司已经接触过了 但是懵懵懂懂的 不是很清楚 具体怎么个逻辑 这次公司打算搭建新的系统 领导要求研究一下MQ 经过研究得出的结论是 MSMQ的设计理念不适合做系统的底层框架 他不适合做分布式系统 最主要的是 MSM
  • KEIL软件的Error: Flash Download failed - Could not load file '..\OBJ\Template.axf'解决思路

    第一个知识点 axf是编译后生成的文件 这个文件是用来写入单片机的 如果不存在这个文件 首先要看一下 是不是有编译错误 编译错误肯定不会出这个文件的 第二个知识点 这个文件的路径是可以指定的 在Options for Target Temp
  • 数学分析 反函数存在性定理,连续性定理与求导定理

    反函数存在性定理 若函数 y 61 f x x D f 是严格单调增加 xff08 减少 xff09 的 xff0c 则存在它的反函数 x 61 f 1 y R f X xff0c 并且 f 1 y 也是严格单调增加 xff08 减少 xf
  • css高度塌陷和外边距塌陷的原因及解决办法

    1 高度塌陷 xff08 原因 xff0c 如何解决 xff09 概念介绍 高度塌陷 xff1a 子元素设置浮动后就会脱标 脱离标准流进入浮动流 xff0c 如果此时父元素没有设置高度 xff0c 那么父元素高度就会为0 xff0c 形成所