小记css的margin collapsing
近期在做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相关推荐
- 「CSS」Margin Collapsing - 外边距合并
外边距合并在排版上带来非常大的便利,但是人们对其不甚了解,导致使用外边距的时候总是出现繁多问题,今日写下一片文章,总结一下外边距合并. 三种基本的外边距合并 只有上外边距和下外边距才会触发外边距合并, ...
- CSS中的margin、border、padding区别 CSS padding margin border属性详解
图解CSS padding.margin.border属性 W3C组织建议把所有网页上的对像都放在一个盒(box)中,设计师可以通过创建定义来控制这个盒的属性,这些对像包括段落.列表.标题.图片以及层 ...
- margin collapsing现象
读过李松峰老师翻译的新书中<CSS设计师指南(第3版>的外边距叠加部分( http://www.ituring.com.cn/article/16969)实在是有些捉急啊,这地方实在是有些 ...
- CSS中margin和padding的区别
padding.margin都是边距的含义,关键问题得明白是什么相对什么的边距.padding是控件的内容相对控件的边缘的边距,margin是控件边缘相对父空间的边距. 在CSS中margin是指从自 ...
- html怎么设置左偏移量,CSS中margin属性的偏移量详解(代码示例)
本篇文章给大家介绍一下CSS中margin属性的偏移量,有感兴趣的朋友可以看一看. 话不多说,我们直接进入正题~ 我们先来看一个具体的例子(相关推荐:CSS学习手册) 代码入下:HTML文件和CSS文 ...
- html5中margin是什么意思,css中margin是什么意思,margin作用是什么?
一.介绍,什么意思? margin为对象外边距间隔属性.如果对一个对象比如div设置了边框后,再设置margin就会观察到这个div外面产生了间距边距. margin作用: 设置对象与其它对象的外边距 ...
- C语言margin的作用是,css中margin是什么意思,margin作用是什么
一.简介,甚么含义? margin为对象外边距间隔属性.假如对一个对象比方div配置了边框后,再设置margin就会察看到这个div外面孕育发生了间距边距. margin感导: 设置对象与此外对象的外 ...
- CSS中margin属性详解
margin属性概述 margin是CSS层叠样式表中用来规定围绕在元素边框周围空白区域范围的属性. 该接受任何长度单位,可以是像素.英寸.毫米或 em. 相关属性 margin 可以单独改变元素的上 ...
- margin collapsing
margin collapsing 转载于:https://www.cnblogs.com/lmjZone/p/8664376.html
最新文章
- java 类的存储结构设计_Doris存储层设计介绍1——存储结构设计解析
- android获取控件宽度高度
- python args kw_Python基础-参数魔法,*args,**kwags
- [*转*] 开发B2C电子商务系统(ASP.NET)--多年前的老文章
- unittest测试框架详谈及实操(四)
- 打造自己的专业图像工具-Visual C++ 2005图像编程系列【一】
- 无熟人难办事?—迪米特法则
- 2018-2019-1 20165202 20165210 20165214 实验二 固件程序设计
- LuoguP3045牛券Cow Coupons
- 解析:WMS仓库管理系统是什么,可以提供什么协助
- 众人帮怎么发布悬赏任务?发布任务所需要求条件是什么?
- 在ubuntu用audacity把音频转换成256kbps,单声道。(亲测有效)
- Excel 高效办公合集 (1): Excel 一键求和
- linux桌面lxde 安装_如何在Arch Linux上安装LXDE桌面
- 苹果x屏幕失灵乱跳_苹果iphone11 pro max屏幕触摸失灵怎么办?
- 转载的一片关于Mapper.xml中sql的相关技术点,供以后自己慢慢学习之用
- C语言单链表,能直接运行的代码!
- Allegro_理解通孔焊盘
- linux升级内核后vnc显示没有桌面,Intel NUC(NUC6i3SYH)在不接显示器的情况下VNC不显示桌面(Ubuntu 18.04)...
- 在MySQL中创建实现自增的序列(Sequence)的教程
热门文章
- 【转】linux内核态和用户态的区别
- DataTemplate和ControlTemplate的关系
- mfc连接mysql增删改查_java实现mysql数据库增删改查
- mysql插入删除_mysql插入、更新与删除
- (72)信号发生器DDS方波设计 (二)(第15天)
- (28)System Verilog设计UART发送
- 服务器cpu位置,服务器CPU满载,谁之过?
- c# 低功耗蓝牙_C#建立从笔记本电脑内部蓝牙4.0到蓝牙低功耗(BLE)外设的流
- hive 将null值替换为0_【Hive】数据倾斜
- 14004.xilinx自动打包image.ub脚本