详解css外边距折叠(margin collapsing)

详解CSS外边距折叠

什么是外边距折叠?

在 CSS 中,相邻的两个块级元素垂直方向的外边距会发生重叠,这种行为叫做外边距折叠。当发生外边距折叠时,相邻两个元素之间将会只有一个外边距,而不是两个外边距之和。

外边距折叠只会发生在块级元素上,行内元素没有外边距,不会发生外边距折叠。

哪些情况会发生外边距折叠?

  1. 相邻兄弟元素之间的外边距会发生折叠。

  2. 父元素和第一个/最后一个子元素之间的外边距会发生折叠。

  3. 空块级元素的外边距会被折叠(一个空块级元素是指没有任何内容或内部元素的块级元素)。

如何避免外边距折叠?

  1. 使用 padding 或 border 代替外边距。

  2. 给元素添加 overflow: auto; 或 overflow: hidden;,可以防止外边距折叠。

示例

示例一

在以下示例中,两个相邻兄弟元素之间的外边距发生了折叠,box1 的外边距被折叠到了 box2 上。

<div class="box1">Box 1</div>
<div class="box2">Box 2</div>
.box1 {
  margin-bottom: 20px;
}

.box2 {
  margin-top: 30px;
}

在这里,box1 的下边距为 20pxbox2 的上边距为 30px,但实际上它们之间的间距只有 30px

示例二

在以下示例中,一个父元素和子元素之间的外边距发生了折叠,parent 的底边距被折叠到了 grandchild1 上。

<div class="parent">
  <div class="child1">Child 1</div>
  <div class="child2">Child 2</div>
  <div class="child3">
    <div class="grandchild1">Grandchild 1</div>
    <div class="grandchild2">Grandchild 2</div>
  </div>
</div>
.parent {
  margin-bottom: 20px;
}

.grandchild1 {
  margin-top: 30px;
}

在这里,parent 的下边距为 20px,但它与 grandchild1 之间的距离只有 30px,原因是 parent 和它的第一个子元素 child1 之间的外边距折叠了,导致 parent 的底边距被折叠到了 grandchild1 上。我们可以给 parent 添加一个 padding 或 border 来避免这种情况。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解css外边距折叠(margin collapsing) - Python技术站

(0)
上一篇 2023年6月9日
下一篇 2023年6月9日

相关文章

  • React中编写CSS实例详解

    下面是React中编写CSS的完整攻略: 1. 概述 React是用JavaScript编写组件的,但是每个组件都需要界面展示,这就需要用到CSS。在React中,推荐使用CSS模块化方式,这样能够避免全局CSS污染的问题。本文将详细讲解在React中编写CSS的实例操作过程。 2. 在React中使用CSS模块化 2.1 安装CSS模块化 首先在终端中执行…

    css 2023年6月10日
    00
  • Vue2.0 给Tab标签页和页面切换过渡添加样式的方法

    当使用 Vue2.0 开发应用时,我们可能需要 Tab 标签页或页面切换时添加过渡动画效果。以下是添加过渡动画效果的方法: 使用 Vue 的过渡类名 Vue 为过渡动画提供了内置的过渡类名。我们可以通过 CSS 来为这些类名添加样式。以下是在 Tab 标签页中使用过渡类名的示例: 首先,需要在 Vue 组件内部定义过渡的类名,比如在 style 标签中添加以…

    css 2023年6月10日
    00
  • 深入理解CSS overflow:hidden——溢出,坍塌,清除浮动

    深入理解CSS overflow:hidden——溢出,坍塌,清除浮动 溢出(Overflow) 当元素的内容超出了容器的范围时,我们需要处理这种溢出现象。此时,我们可以使用CSS属性overflow来控制其内容的显示方式。 overflow:hidden 使用overflow:hidden可以隐藏元素的溢出内容,这通常用于父元素中有绝对定位子元素时的处理。…

    css 2023年6月10日
    00
  • 一张图看懂移动HTML5前端性能优化

    一张图看懂移动 HTML5 前端性能优化是一张概述和总结了移动端 HTML5 前端性能优化的思维导图,且很好地概括了优化步骤以及对应的各项技巧细节。在图上可以看到,整个优化过程可以分为以下几个步骤: 优化网络 压缩资源 优化 JavaScript 优化 CSS 优化图片 优化渲染 下面我们将逐个分析每一步骤的技巧及其对应的示例。 优化网络 优化网络是性能优化…

    css 2023年6月10日
    00
  • css之clearfix的用法深入理解(必看篇)

    CSS之clearfix的用法深入理解 简介 clearfix 是一种使用 CSS 技术清除浮动的方法。清除浮动后,可以让父元素包含子元素的浮动高度。 原理 产生浮动的元素会脱离文档的流,不再占据文档空间。 父元素如果没有设置高度,则高度为0。子元素设置浮动后,父元素的高度并不会随着子元素高度的改变而改变,即父元素不会自动包含子元素的高度。 clearfix…

    css 2023年6月10日
    00
  • css实现一个元素高度固定宽度按比例显示效果

    实现一个元素高度固定宽度按比例显示的效果,可以通过以下步骤: 1. 设置元素宽度和高度 首先,需要设置元素的宽度和高度。元素的高度设置为固定值,可以使用 height 属性,例如: .element { height: 400px; } 2. 设置元素背景图 接下来,在元素中设置背景图,可以使用 background-image 属性。 .element {…

    css 2023年6月10日
    00
  • Bootstrap基本样式学习笔记之按钮(4)

    下面我将对“Bootstrap基本样式学习笔记之按钮(4)”这篇文章进行详细讲解。 标题 “Bootstrap基本样式学习笔记之按钮(4)” 前言 在这篇文章中,作者主要讲解了Bootstrap按钮组件的使用方法。Bootstrap是一款前端开发框架,而按钮是网站开发中不可或缺的组件之一。因此,学习Bootstrap的按钮组件对于想要学习前端开发的人来说是非…

    css 2023年6月11日
    00
  • css移动端实现与pc端一样的:acitve效果

    为了在移动端实现与PC端一样的active效果,我们可以使用以下几种方法: 方法一:使用:active伪类 CSS中的:active伪类可用于将样式应用于元素被按下时。 示例代码: button:active{ color: red; background-color: yellow; } 这个CSS样式将把按钮在按下时设置为红色文本和黄色背景。这种技术在移…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部