CSS 中的折叠边距:初学者指南

css 中的折叠边距:初学者指南

介绍

没有什么比应用一种样式但它没有按预期工作更令人沮丧的了。边距塌陷是一种导致意想不到的造型效果的现象。那么,什么是折叠边距以及它如何影响 css 中的边距?

利润崩溃

折叠边距源于css属性边距,它控制元素外部的间距。顾名思义,当相邻元素的边距组合或“折叠”为一个而不是相加时,就会发生折叠边距。这通常发生在同级元素之间或父元素和子元素之间。例如,如果两个同级元素具有边距(一个具有 20 像素的下边距,另一个具有 30 像素的上边距),您可能期望总边距为 50 像素。但是,由于折叠边距,只会应用较大的边距 30px,而较小的边距 20px 将被折叠。

.element1 {    margin-bottom: 20px;}.element2 {    margin-top: 30px;}

此外,如果父元素缺少内边距或边框,并且其子元素具有上边距,则该边距可能会“折叠”到父元素之外,从而影响父元素的位置。

.parent {    margin-top: 0;}.child {    margin-top: 20px;}

.child 的 20px 上边距可能会折叠到 .parent 之外,从而将整个父级向下移动 20px。

这可能会让菜鸟开发人员感到困惑(我直到最近才知道这一点),因为最终的间距可能不符合他们的预期。

解决方法

添加内边距或边框:向父元素添加少量内边距或边框将防止边距塌陷。

.parent {    padding-top: 1px; /* or border-top: 1px solid transparent; */}

overflow属性的使用:当父级的overflow属性设置为visible以外的任何属性时(例如overflow:hidden;),它可以防止边距折叠。

.parent {    overflow: hidden;}

使用 flexbox 或网格布局:这些布局方法通过设计避免了边距折叠问题。

弹性盒示例:

.parent {    display: flex; /* flexbox layout */    flex-direction: column; /* stack children vertically */    border: 1px solid #000; /* just for visibility */}.child1, .child2 {    margin: 20px 0; /* vertical margins that won't collapse */    background-color: lightblue;}

网格示例

.parent {   display: grid; /* grid layout */   grid-template-rows: auto auto; /* define two rows */   border: 1px solid #000; /* just for visibility */ }.child1, .child2 {     margin: 20px 0; /* vertical margins */     background-color: lightgreen; }

使用float或inline-block:使子元素浮动或设置为显示:inline-block;还可以防止边距塌陷。然而,我很少再看到浮动,但很高兴知道遗留代码库的情况。

浮动示例:

.parent {    border: 1px solid #000; /* just for visibility */ } .child1, .child2 {     float: left; /* prevents margin collapsing */     width: 100%; /* full width */     margin: 20px 0; /* vertical margins */     background-color: lightcoral; }

内联块示例

.parent {   border: 1px solid #000; /* Just for visibility */}.child1, .child2 {    display: inline-block; /* Prevents margin collapsing */    width: 100%; /* Full width */    margin: 20px 0; /* Vertical margins */    background-color: lightyellow;}

结论

了解边距折叠可以极大地有助于网页布局中一致且预期的间距,特别是在使用块级元素时。值得注意的是,内联元素(例如 、、 等)通常不受边距折叠的影响,因为与块级元素相比,它们在生成垂直边距方面具有独特的行为。边距折叠主要对块级元素带来挑战,例如

等,因为它们可能具有相互交互的垂直边距。

立即学习“前端免费学习笔记(深入)”;

参考

mdnw3学校

以上就是CSS 中的折叠边距:初学者指南的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1629928.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月24日 12:52:20
下一篇 2025年12月24日 12:52:39

相关推荐

  • 编写 CSS 的最佳实践——干净、可扩展和可维护的代码

    编写 css 的最佳实践 – 干净、可扩展且可维护的代码 在本课程的最后一讲中,我们将重点关注编写高效、可扩展且可维护的 css 的最佳实践。这些原则将帮助您为样式表开发一种干净且专业的方法,使它们随着项目的发展而更易于管理。 1.使用有意义的类名 类名应该具有描述性并表明其用途。避免使用模糊的名称…

    2025年12月24日
    000
  • 查看过渡主题动画

    使用 css 和视图转换从浅色模式转换为深色模式时添加炫酷效果 复制自 twitter 上的@jhey[!注意]这假设您已经设置了暗光模式,并具有某种功能来更新您的主题 添加css /* angled */ [data-style=’angled’]::view-transition-old(roo…

    2025年12月24日
    000
  • 我进入网络编程世界的第一步:HTML 和 CSS

    大家好! 几天前,我决定迈出一步,开始学习编程。和许多人一样,我从基础知识开始:html 和 css。开始一个简短的 40 分钟课程(来自 deivchoi 的从头开始的基础 html5 和 css3 课程),虽然一开始一切看起来都很简单,但当我到达 css 和样式部分时,我对本地和全局的概念有点迷…

    2025年12月24日
    000
  • 使用 SCSS Mixins 和函数让你的 CSS 更好

    scss 是 css 的扩展,使您的代码更易于管理。借助 scss,您可以使用 mixins 和函数来帮助您避免一次又一次编写相同的代码。在本文中,我将向您展示一些有用的 scss mixin 和函数,它们可以节省您的时间并使您的代码更清晰。 为什么使用 mixins 和函数? ​​编写 css 时…

    2025年12月24日
    000
  • CSS BEM 命名约定:它是什么、为什么重要以及如何使用它?

    编写干净且有组织的 css 很重要,尤其是对于大型项目。构建 css 的最佳方法之一是使用 bem 命名约定。在本文中,我们将解释 bem 是什么、为什么它很重要、它的优点和缺点,并通过两个示例向您展示如何使用它。 什么是边界元法? bem 代表 块、元素 和 修饰符。它是一个用于编写 css 类名…

    2025年12月24日
    000
  • CSS 中的盒模型:制作精确布局的终极指南

    Web设计概念中,盒子模型是CSS中非常关注布局设计的基础知识领域。盒子模型解释了页面上元素的放置和定位方式,这会影响水平度和总体连贯性。 除了概述盒子模型的背景和边框之外,本指南还指导您完成填充、边距和盒子大小调整,以便您可以完全控制布局。要开始专业水平的 Web 项目设计,无论您的编程水平如何,…

    2025年12月24日
    000
  • CSS 选择器备忘单

    这是一个全面的 css 选择器备忘单,涵盖了您可能需要的所有基本和高级选择器: 1. 基本选择器 通用选择器 (*):针对所有元素。 * { margin: 0; } 类型选择器(元素选择器):针对给定类型的元素。 p { color: blue; } 类选择器(.classname):针对具有特定…

    2025年12月24日
    000
  • CSS 中的盒模型:制作精确布局的终极指南(第 2 部分)

    什么是盒子模型? 盒子模型描述了每个 html 元素如何在网页上表示。每个元素都被视为包含多个层的矩形框:内容、填充、边框和边距。该结构还会影响网页上元素的布局和间距。 盒子模型在网页设计中的用途 CSS 盒模型确保每个元素相对于其他元素都有明确定义的边界和间距。这些边界是安排干净且结构化的页面布局…

    2025年12月24日
    000
  • CSS Padding – 管理元素内部的空间

    第 11 讲:css 填充 – 管理元素内的空间 在本次讲座中,我们将讨论css 填充,它控制元素内部元素内容与其边框之间的空间。填充在确定元素的间距和大小、提供干净且可读的布局方面起着至关重要的作用。 1.什么是填充? padding 定义元素内容与其边框之间的空间。与边距(在元素外部…

    2025年12月24日
    000
  • 太阳系的表示

    这是前端挑战 v24.09.04,CSS 艺术:空间的提交。 灵感 仅使用 CSS 来直观地展示太阳系。 演示 https://github.com/ShitanshuRoy/solar 要运行,只需在任何浏览器中打开index.html 文件即可。 旅行 深入研究 CSS 动画,能够创建有趣的移动…

    2025年12月24日
    000
  • CSS 艺术:太空 – 太阳系探索

    `这是前端挑战 v24.09.04,CSS 艺术:空间的提交。 灵感 我想使用 CSS Art 和 HTML 创建一个交互式且具有视觉吸引力的太阳系表示。灵感来自于我对太空和天体之美的迷恋。通过这个项目,我的目标是将简约设计与互动元素相结合,鼓励用户探索和了解太阳系中的每个行星。 演示 现场演示:探…

    2025年12月24日
    000
  • CSS 显示 – 控制元素的布局行为

    第 12 讲:css 显示 – 控制元素的布局行为 在本次讲座中,我们将讨论最重要的 css 属性之一:display。 display 属性控制元素的布局行为,确定它们在页面上的相互渲染方式。 1.了解显示属性 display 属性定义元素在布局中的行为方式。它控制元素是否显示为块级元…

    2025年12月24日
    000
  • CSS 位置 – 控制元素放置

    第 13 讲:css 位置 – 控制元素放置 在本次讲座中,我们将探讨 css 位置属性,它允许您控制页面上元素的确切位置。了解不同的定位值及其工作原理将帮助您精确创建动态布局。 1.什么是位置属性? position 属性指定元素在文档中的位置。您可以使用它来相对于正常流程移动元素,甚至将它们放置…

    2025年12月24日
    000
  • 像专业人士一样组织您的 CSS:属性的逻辑分组

    编写干净且组织良好的 css 很重要,尤其是对于较大的项目。实现此目的的一种方法是以逻辑方式对 css 属性进行分组。在本文中,我将向您展示如何使用逻辑分组来组织 css,其中定位是第一位的。这将使您的代码更易于阅读和维护。 为什么要进行逻辑分组? 在编写 css 时,我们经常以随机顺序添加属性。但…

    2025年12月24日
    000
  • 绿色倡议地图:CSS(第 2 部分)

    介绍 在本教程中,您将学习如何通过逐步应用 css 样式来改善 html 页面的视觉外观。在整个过程中,您将向 html 元素分配选择器并逐步设置它们的样式。这种方法将让您了解如何将样式应用于不同的元素以及它们如何影响您网站的整体设计。 第 1 步:创建 css 文件 在文本编辑器中创建一个新文件并…

    2025年12月24日
    000
  • CSS Grid 与 Flexbox:响应式设计详细指南

    创建网站时,确保您的布局能够很好地适应不同的屏幕尺寸(无论是台式机、平板电脑还是移动设备)非常重要。 css flexbox 和 css grid 都是强大的工具,可帮助开发人员创建灵活且响应式的设计。它们允许您的布局根据用户的屏幕尺寸进行调整,使您的网站更加用户友好和高效。 在本指南中,我们将解释…

    2025年12月24日
    000
  • 如何修复 Tailwind CSS 在 Nextjs 中不起作用的问题

    如果您遇到 tailwind css 未在 next.js 项目中应用样式的问题,本指南将引导您完成如何解决该问题。我们将一步步进行,涵盖安装、故障排除和潜在修复。 步骤1:删除.next文件夹、node_modules和package-lock.json 开始之前,如果 tailwind css …

    2025年12月24日
    000
  • 使我的标记更加迷人:空间

    这是前端挑战 v24.09.04 的提交,Glam Up My Markup: Space 我建造了什么 针对此挑战,我使用 HTML、CSS 和 JavaScript 创建了一个以太阳系为主题的交互式网页。目标是通过视觉上引人入胜的设计和交互功能来增强简单的太阳系模板。 演示 您还可以在这里查看项…

    2025年12月24日
    000
  • 使用 React 构建 Fylo 云存储网站

    介绍 在这篇博文中,我们将逐步介绍如何使用 react 创建一个功能丰富的云存储网站。该网站受 fylo 启发,提供了主页、功能、工作原理、感言和页脚等部分。在此过程中,我们将讨论用于构建这个完全响应式网站的结构、组件和样式。 项目概况 该项目由多个部分组成,旨在展示云存储服务。每个部分都是用 re…

    2025年12月24日 好文分享
    000
  • 浏览器中的星星:网络般的太空之旅

    这是前端挑战 v24.09.04 的提交,Glam Up My Markup: Space 我建造了什么我创建了 Solar System Explorer,这是一个交互式 Web 应用程序,可带领用户踏上令人惊叹的太阳系之旅。该项目旨在将教育与引人入胜的设计融为一体,为各个年龄段的太空爱好者提供身…

    2025年12月24日
    000

发表回复

登录后才能评论
关注微信