近期在做web页面设计的时候,莫名的发现最上面会出现一个横条,颜色为html的背景颜色。本意是那一片空横条应该为header的背景色。查了一些资料,发现是margin collapsing的问题,记录下来,希望刚開始学习的人少走弯路。

从问题说起

先给出demo的源代码和截屏,给出一个直观的印象。代码例如以下:

<!DOCTYPE html>
<html><head><style type="text/css">html {width: 100%;height: 100%;max-height: 100%;margin: 0px;padding: 0px;background-color: blue;}body {width: 100%;height: 100%;max-height: 100%;margin: 0px;padding: 0px;background-color: orange;}#header {width: 100%;height: 38%;margin: 0px;padding: 0px;background-color: red;}#main {width: 100%;height: 62%;margin: 0px;padding: 0px;background-color: green;}#container {width: 80%;max-width: 864px;margin: 0px;padding: 0px;background-color: green;}#footer {width: 100%;height: 38%;margin: 0;padding: 0;background-color: gray;}</style>
</head><body><div id="header"><h1>Hello</h1></div><div id="main"><div id="container"></div></div><div id="footer"></div>
</body></html>

截屏例如以下(注意最上面的蓝色横条,本想设计为红色):

问题的解决办法

margin collapsing,边界合并。h1默认margin-top值大于0,h1的top margin与header的top margin合并,合并之后的top margin又与body的top margin合并,html是根元素,不再继续合并,所以那个横条是body的margin,颜色为html的背景色。

解决的方法

解决的方法的思路有两条。其一,去除margin,也就是把margin设置为0;其二是破坏margin collapsing。

margin设置为0

真的非常easy,代码例如以下:

h1{margin-top: 0px;
}

破坏margin collapsing

这里的方法非常多,仅仅要是针对margin collapsing的规则,破坏当中的某一个或者多个环节。

设置父元素的overflow为auto或者hidden,代码例如以下:

#header {width: 100%;height: 38%;margin: 0px;padding: 0px;background-color: red;overflow: auto;
}

设为非负padding,代码例如以下:

#header {width: 100%;height: 38%;margin: 0px;padding: 0px;background-color: red;padding-top: 0.1px;
}

设置border, 代码例如以下:

#header {width: 100%;height: 38%;margin: 0px;padding: 0px;background-color: red;border:1px solid red;
}

參考链接

  • Stackoverflow
  • W3C

转载于:https://www.cnblogs.com/zfyouxi/p/4212932.html

小记css的margin collapsing相关推荐

  1. 「CSS」Margin Collapsing - 外边距合并

    外边距合并在排版上带来非常大的便利,但是人们对其不甚了解,导致使用外边距的时候总是出现繁多问题,今日写下一片文章,总结一下外边距合并. 三种基本的外边距合并 只有上外边距和下外边距才会触发外边距合并, ...

  2. CSS中的margin、border、padding区别 CSS padding margin border属性详解

    图解CSS padding.margin.border属性 W3C组织建议把所有网页上的对像都放在一个盒(box)中,设计师可以通过创建定义来控制这个盒的属性,这些对像包括段落.列表.标题.图片以及层 ...

  3. margin collapsing现象

    读过李松峰老师翻译的新书中<CSS设计师指南(第3版>的外边距叠加部分( http://www.ituring.com.cn/article/16969)实在是有些捉急啊,这地方实在是有些 ...

  4. CSS中margin和padding的区别

    padding.margin都是边距的含义,关键问题得明白是什么相对什么的边距.padding是控件的内容相对控件的边缘的边距,margin是控件边缘相对父空间的边距. 在CSS中margin是指从自 ...

  5. html怎么设置左偏移量,CSS中margin属性的偏移量详解(代码示例)

    本篇文章给大家介绍一下CSS中margin属性的偏移量,有感兴趣的朋友可以看一看. 话不多说,我们直接进入正题~ 我们先来看一个具体的例子(相关推荐:CSS学习手册) 代码入下:HTML文件和CSS文 ...

  6. html5中margin是什么意思,css中margin是什么意思,margin作用是什么?

    一.介绍,什么意思? margin为对象外边距间隔属性.如果对一个对象比如div设置了边框后,再设置margin就会观察到这个div外面产生了间距边距. margin作用: 设置对象与其它对象的外边距 ...

  7. C语言margin的作用是,css中margin是什么意思,margin作用是什么

    一.简介,甚么含义? margin为对象外边距间隔属性.假如对一个对象比方div配置了边框后,再设置margin就会察看到这个div外面孕育发生了间距边距. margin感导: 设置对象与此外对象的外 ...

  8. CSS中margin属性详解

    margin属性概述 margin是CSS层叠样式表中用来规定围绕在元素边框周围空白区域范围的属性. 该接受任何长度单位,可以是像素.英寸.毫米或 em. 相关属性 margin 可以单独改变元素的上 ...

  9. margin collapsing

    margin collapsing 转载于:https://www.cnblogs.com/lmjZone/p/8664376.html

最新文章

  1. java 类的存储结构设计_Doris存储层设计介绍1——存储结构设计解析
  2. android获取控件宽度高度
  3. python args kw_Python基础-参数魔法,*args,**kwags
  4. [*转*] 开发B2C电子商务系统(ASP.NET)--多年前的老文章
  5. unittest测试框架详谈及实操(四)
  6. 打造自己的专业图像工具-Visual C++ 2005图像编程系列【一】
  7. 无熟人难办事?—迪米特法则
  8. 2018-2019-1 20165202 20165210 20165214 实验二 固件程序设计
  9. LuoguP3045牛券Cow Coupons
  10. 解析:WMS仓库管理系统是什么,可以提供什么协助
  11. 众人帮怎么发布悬赏任务?发布任务所需要求条件是什么?
  12. 在ubuntu用audacity把音频转换成256kbps,单声道。(亲测有效)
  13. Excel 高效办公合集 (1): Excel 一键求和
  14. linux桌面lxde 安装_如何在Arch Linux上安装LXDE桌面
  15. 苹果x屏幕失灵乱跳_苹果iphone11 pro max屏幕触摸失灵怎么办?
  16. 转载的一片关于Mapper.xml中sql的相关技术点,供以后自己慢慢学习之用
  17. C语言单链表,能直接运行的代码!
  18. Allegro_理解通孔焊盘
  19. linux升级内核后vnc显示没有桌面,Intel NUC(NUC6i3SYH)在不接显示器的情况下VNC不显示桌面(Ubuntu 18.04)...
  20. 在MySQL中创建实现自增的序列(Sequence)的教程

热门文章

  1. 【转】linux内核态和用户态的区别
  2. DataTemplate和ControlTemplate的关系
  3. mfc连接mysql增删改查_java实现mysql数据库增删改查
  4. mysql插入删除_mysql插入、更新与删除
  5. (72)信号发生器DDS方波设计 (二)(第15天)
  6. (28)System Verilog设计UART发送
  7. 服务器cpu位置,服务器CPU满载,谁之过?
  8. c# 低功耗蓝牙_C#建立从笔记本电脑内部蓝牙4.0到蓝牙低功耗(BLE)外设的流
  9. hive 将null值替换为0_【Hive】数据倾斜
  10. 14004.xilinx自动打包image.ub脚本