CSS查缺补漏之《如何优雅解决margin垂直方向塌陷与合并问题?》

news2024/11/26 20:31:55

一:父子元素之间margin垂直方向塌陷问题

在处理margin垂直方向问题时,经常会遇到在给子元素设置margin时,导致效果出现在了父元素上;如下代码所示:

代码原义是想实现三方面:

① 将box1的margin-top调为50px,使其与父元素之间形成空隙;

② 将box2的margin-top调为20px,使其与兄弟元素box1之间形成空隙;

③ 将box3的margin-bottom调为20px,使其与父元素之间形成空隙;

<div class="box">
  <div class="box1">box1</div>
  <div class="box2">box2</div>
  <div class="box3">box3</div>
</div>
    .box {
      width: 400px;
      height: 400px;
      background-color: antiquewhite;
      text-align: center;
    }
    .box1 {
      margin-top: 50px;
      width: 100px;
      height: 100px;
      line-height: 100px;
      background-color: rgba(0, 115, 255, 0.39);
    }
    .box2 {
      width: 100px;
      height: 100px;
      line-height: 100px;
      background-color: rgba(0, 255, 51, 0.232);
      margin-top: 20px;
    }
    .box3 {
      width: 100px;
      height: 100px;
      line-height: 100px;
      background-color: rgba(255, 196, 0, 0.232);
      margin-bottom: 20px;
    }

 从上述代码可以看到,效果出现与预期不同的情况:

① 给第一个子元素box1设置了margin-top值后,并没有起作用,却导致了父元素的margin-top存在;

该种情况被称为父子元素在垂直方向的margin塌陷问题,如何解决此问题?

有三种方法:

给父元素设置不为0的padding值

.box {
   width: 400px;
   height: 400px;
   background-color: antiquewhite;
   text-align: center;
   padding: 2px;
}

 ② 给父元素设置宽度不为0的border值

.box {
   width: 400px;
   height: 400px;
   background-color: antiquewhite;
   text-align: center;
   border-top: 1px solid red;
}

 或

.box {
   width: 400px;
   height: 400px;
   background-color: antiquewhite;
   text-align: center;
   border: 1px solid red;
}

 

③ 给父元素设置CSS样式overflow: hidden

.box {
   width: 400px;
   height: 400px;
   background-color: antiquewhite;
   text-align: center;
   overflow: hidden;
}

二:兄弟元素之间margin垂直方向合并问题

在处理兄弟元素问题时,若上面的兄弟元素设置了margin-bottom下面的兄弟元素设置了margin-top,则最后的margin值会取二者之间的最大值,而不是将二者相加,该种现象称为margin合并问题;

 <div class="box">我是box元素</div>
 <div class="bro">我是box的兄弟元素</div>
    div {
      height: 200px;
      line-height: 200px;
      width: 200px;
      text-align: center;
    }
    .box {
      background-color: aquamarine;
      margin-bottom: 40px;
    }
    .bro {
      background-color: rgb(234, 250, 57);
      margin-top: 20px;
    }

     

可以看到,在二者之间只有40px的空隙,产生了合并现象。如何解决此问题?

最好的方法是指设置一个,计算好兄弟元素之间的margin,只设置一方即可~

 

如上述代码只给第一个兄弟元素添加margin-bottom为60px即可,

    div {
      height: 200px;
      line-height: 200px;
      width: 200px;
      text-align: center;
    }
    .box {
      background-color: aquamarine;
      margin-bottom: 60px;
    }
    .bro {
      background-color: rgb(234, 250, 57);
      /* margin-top: 20px; */
    }

  

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Activity 的生命周期和启动方式

Activity 的生命周期 Activity A 启动B&#xff0c;生命周期&#xff1a; A: onPause - B: onCreate-onStart-onResume- A:onStop Activity B返回 A&#xff0c;生命周期&#xff1a; B&#xff1a;onPause - A:onRestart - onStart - onResume - A:onStop onPause onStop 区…

分布式数据保护策略——多副本和纠删码怎么选?

在之前的《一文读懂分布式存储》文章中&#xff0c;我们介绍了什么是分布式存储。 但谈到存储&#xff0c;安全就是一个绕不开的话题。 没有数据安全的存储毫无意义。 所以数据保护技术对于分布式存储来说非常重要。 ▉ 为什么需要数据保护&#xff1f; 数据显示&#xff0…

考研英语|2022年真题 正确率:16/20|14:00~15:30

22 错 25 错 34 错 40 错 Text 1 21 实词对应 preservemaintain 22 推理判断题 错因&#xff1a;仅仅定位在vulnerable 没有继续往后阅读 immune to decay 理解错误&#xff0c;真确释义为“不会腐烂”&#xff0c;错误理解为“容易腐烂坏掉” 文中定位&#xff1a;第…

618年中大促专属!不容错过的B2B电商机遇

即将又迎来一年一度的618年中大促&#xff0c;各大品牌商家是否都做好准备了呢&#xff1f; 对于这场购物狂欢的盛宴&#xff0c;很多人常常会把焦点放在面向消费者的B2C市场上&#xff0c;B2B市场则因线上化渗透率较低&#xff0c;显得相对冷清&#xff0c;不够引人关注。 事实…

全网最全,pytest自动化测试框架——数据驱动实战详解(超详细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 第一种&#xff1…

Web前端开发技术储久良第三版课后选择答案(1-10章)

P16-第1章 练习与实验答案 练习1 1.选择题 【1】Html是一种&#xff08;&#xff09;语言。 【A】编译型 【B】超文本标记 【C】高级程序设计 【D】面向对象编程【2】世界上第一个网页是()。 【A】http://www.w3c.org 【B】http:/info.cern.ch 【C】http://www.microsoft.com…

ffmpeg学习记录

1、对图片进行裁剪 ffmpeg -i input.jpg -vf cropiw/3:ih:20:0 caijian.jpg PS&#xff1a; crop100:100:12:34 相同效果: cropw100:h100:x12:y34 2、视频增加文字水印 使用drawtext滤镜进行增加水印 参数 类型 说明 text 字符串 文字 textfile 字符串 文字文件 …

invalid python sdk, pycharm2022不能创建虚拟环境的解决方法

感谢万能的google&#xff01; 一开始google搜索“pycharm2022 invalid python sdk cannot set up a python sdk at python 3.11”&#xff0c;进入链接&#xff1a;Cannot setup a Python SDK in PyCharm project using virtualenv after OS reinstallation - Stack Overflow…

Flink将数据写入CSV文件后文件中没有数据

Flink中有一个过时的sink方法:writeAsCsv,这个方法是将数据写入CSV文件中,有时候我们会发现程序启动后,打开文件查看没有任何数据,日志信息中也没有任何报错,这里我们结合源码分析一下这个原因. 这里先看一下数据处理的代码 代码中我是使用的自定义数据源生产数据的方式,为了方…

AIVA.AI:AI音乐作曲创作平台

【产品介绍】 AIVA.AI是一个人工智能音乐创作平台&#xff0c;可以根据用户的需求和喜好&#xff0c;自动生成不同风格和情感的音乐。目标是成为创意人士的创意助手&#xff0c;无论是独立游戏开发者、音乐新手还是专业作曲家&#xff0c;都可以利用AIVA.AI的技术来为自己的项目…

分布式各系统时间统一程序

目录 1、背景2、Cristians algorithm 算法&#xff08;克里斯蒂安算法&#xff09;3、实现思路3.1、步骤&#xff1a;3.2、公式 4、具体代码4.1、构建时间戳4.2、定义数据包4.3、客户端实现4.3、服务端实现 说明 1、背景 使用场景是在一个大型分布式系统下&#xff0c;对时间有…

第一天,掌握PyTorch的张量创建

文章目录 一&#xff0c;张量二&#xff0c;创建张量1. 直接从数据来创建张量Tensor函数TODO &#xff1a;从数据直接创建张量 2. 从numpy数据创建张量from_numpy函数从numpy数据创建张量 3. 从另一个张量来进行创建张量4. 使用随机值或者常数值来创建张量5. 张量的属性&#x…

【C】C语言数据类型、常量变量的介绍

C语言基础 数据类型常量和变量变量全局变量和局部变量变量的作用域和生命周期作用域生命周期 常量 数据类型 下图为C语言常见的数据类型&#xff1a; &#xff08;浮点数就是我们常见的小数&#xff0c;字符类型要用‘’引起来&#xff0c;在C语言中字符串类型要用字符数组来…

如何知识变现?介绍几个变现途径

哈喽&#xff0c;大家好&#xff0c;我是海哥&#xff0c;知识付费变现创业教练&#xff0c;教育公司培训总监&#xff0c;从事知识付费变现咨询10年&#xff0c;已助力3000人实现知识付费变现。 在互联网时代&#xff0c;所有线下的产业都可以在线上再做一遍&#xff0c;知识产…

简易版python爬虫--通过关键字爬取网页

背景&#xff1a; 帮同学写了个爬虫程序&#xff0c;特此记录&#xff0c;怕以后忘了 这里是爬取百度https://www.baidu.com 不为什么&#xff0c;主要就是百度老实&#xff0c;能爬&#xff0c;爬着简单&#xff0c;爬着不犯法。。。 关键字爬取基本模板&#xff1a; import…

Git第一章、Git的原理与使用

背景知识&#xff1a; 我们在编写各种文档时&#xff0c;为了防止文档丢失&#xff0c;更改失误&#xff0c;失误后能恢复到原来的版本&#xff0c;不得不复制出一个副本。每个版本有各自的内容&#xff0c;但最终会只有一份报告需要被我们使用 。但在此之前的工作都需要这些不…

[Flutter]理解Widget-Key的作用

这里主要是理解在Widget中key的作用/用途。 import dart:math;import package:flutter/material.dart;/// 这里主要是理解在Widget中key的作用/用途。 void main() {runApp(const MyApp()); }class MyApp extends StatelessWidget {const MyApp({super.key});overrideWidget b…

Vault从入门到精通系列之二:启动Vault服务器

Vault从入门到精通系列之二&#xff1a;启动Vault服务器 一、启动开发服务器二、设置环境变量三、验证服务器正在运行四、vault命令汇总 Vault 作为客户端-服务器应用程序运行。Vault 服务器是唯一与数据存储和后端交互的 Vault 架构。通过 Vault CLI 完成的所有操作都通过 TLS…

【Leetcode60天带刷】day09字符串—— 459.重复的子字符串,28. 实现 strStr(),剑指Offer 05.替换空格

题目&#xff1a; 459. 重复的子字符串 给定一个非空的字符串 s &#xff0c;检查是否可以通过由它的一个子串重复多次构成。 示例 1: 输入: s "abab" 输出: true 解释: 可由子串 "ab" 重复两次构成。示例 2: 输入: s "aba" 输出: false示例…

Grammarly:AI语法检测写作助手工具

【产品介绍】 Grammarly是于2009年发布&#xff0c;当前使用最普遍和准确的英语语法检查&#xff08;grammar checker&#xff09;、拼写、校对&#xff08;proofreading&#xff09;检查和抄袭&#xff08;plagiarism&#xff09;检测软件工具&#xff0c;其中Grammarly校对检…