margin外边距合并详解:
外边距合并现象在网页布局中非常的常见,必须对此有明确的把我,以此做到未雨绸缪,否则可能影响工作效率,甚至严重阻碍项目的进度。在网络上已经有大量的相关文章,下面再通过实例结合对网络教材的总结,再来介绍一下外边距合并现象。
概念:
相邻的两个或者多个外边距在垂直方向上合并成一个外边距,这就是所谓的外边距合并。
水平方向不存在此现象。
外边距合并产生条件:
1.相邻的外边距之间没有非空内容、padding和border和clear分隔。
2.对象都处于文档流中,即非浮动和position属性值不为absolute和fixed的元素。
合并可以存在于兄弟对象之间,也可以存在于父子对象之间,下面就分开介绍一下:
一.兄弟对象之间的外边距合并:
实例如下:
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="author" content="http://www.51texiao.cn/" /><title>蚂蚁部落</title><style type="text/css"> div{ width:100px; height:100px; } .top{ background-color:green; margin-bottom:20px; } .bottom{ background-color:red; margin-top:10px; } </style> </head> <body> <div class="top"></div> <div class="bottom"></div> </body> </html>
以上代码的表现可以看出bottom元素的上边距和top元素的下边距产生合并现象,也就是两个元素垂直间距是20px,而不是20px+10px=30px。可以看出两个外边距的值取较大者。再来看一段代码实例:
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="author" content="http://www.51texiao.cn/" /><title>蚂蚁部落</title><style type="text/css"> div{ width:100px; height:100px; } .top{ background-color:green; margin-bottom:-20px; } .bottom{ background-color:red; margin-top:10px; position:relative; left:20px; } </style> </head> <body> <div class="top"></div> <div class="bottom"></div> </body> </html>
如果外边距有正有负,那么就选取最大值正直和最小的负值相加,得出的即是两个两个边距合并的值。再看一段实例代码:
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="author" content="http://www.51texiao.cn/" /><title>蚂蚁部落</title><style type="text/css"> div{ width:100px; height:100px; } .top{ background-color:green; margin-bottom:-20px; } .bottom{ background-color:red; margin-top:-10px; position:relative; left:20px; } </style> </head> <body> <div class="top"></div> <div class="bottom"></div> </body> </html>
如果对象的外边距都是负数,那么取最小的负数作为外边距。
二.父子外边距合并:
先看一段代码实例:
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="author" content="http://www.51texiao.cn/" /><title>蚂蚁部落</title><style type="text/css"> #parent{ width:200px; height:200px; background-color:red; } #children{ width:60px; height:60px; background-color:green; margin:0px auto; margin-top:50px; } </style> </head> <body> <div id="parent"> <div id="children"></div> </div> </body> </html>
在以上代码中,出现了外边距和并现象,这时,子元素的外边距并不作用于父元素,而是作用于父元素之外的对象。父子外边距合并不但要满足在文章开始介绍的两条外边距合并条,而且还要满足父元素中不能够有上下文布局属性,例如不能具有overflow(除visible)或者display:inline-block等属性。
特别说明:
以上介绍的外边距合并实例都是只涉及到两个对象,因为这在实际应用中是最常见的情况,但是外边距合并现象并非只局限于两个对象之间,只要满足外边距合并的条件就可以出现外边距合并现象,代码实例如下:
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="author" content="http://www.51texiao.cn/" /><title>外边距合并-蚂蚁部落</title> <style type="text/css"></style> </head> <body> <div style="border:1px solid red;width:200px;"> <div style="margin-top:50px; background-color:green;"> <div style="margin-top:-50px;"> <div style="margin-top:150px;">蚂蚁部落</div> </div> </div> </div> </body> </html>
在以上代码中,三个外边距出现合并现象。需要特别注意的是,计算合并后外边距值的方式并非是一层一层计算的,而是遵循在上面介绍的几个原则,那么上面的合并方式就是从负值值挑选最小的和从正值挑选的最大的相加,也就是-50px+150px=100px。
还有一种比较极端的合并方式:元素本身的外边距也会合并,代码实例如下:
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="author" content="http://www.51texiao.cn/" /><title>蚂蚁部落</title><style type="text/css"></style> </head> <body> <div style="border:1px solid red;width:200px;"> <div style="margin-bottom:50px;margin-top:50px;"></div> </div> </body> </html>
由以上代码的运行结果可以看出,自身的外边距产生了合并现象,但是此div不能够具有高度和内容等等,因为这样上下外边距就不相邻了,外边距合并的条件就不具备了。
原文地址是:http://www.51texiao.cn/div_cssjiaocheng/2015/0501/510.html

HTML、CSS和JavaScript是构建现代网页的核心技术:1.HTML定义网页结构,2.CSS负责网页外观,3.JavaScript提供网页动态和交互性,它们共同作用,打造出用户体验良好的网站。

HTML的功能是定义网页的结构和内容,其目的在于提供一种标准化的方式来展示信息。1)HTML通过标签和属性组织网页的各个部分,如标题和段落。2)它支持内容与表现分离,提升维护效率。3)HTML具有可扩展性,允许自定义标签增强SEO。

HTML的未来趋势是语义化和Web组件,CSS的未来趋势是CSS-in-JS和CSSHoudini,JavaScript的未来趋势是WebAssembly和Serverless。1.HTML的语义化提高可访问性和SEO效果,Web组件提升开发效率但需注意浏览器兼容性。2.CSS-in-JS增强样式管理灵活性但可能增大文件体积,CSSHoudini允许直接操作CSS渲染。3.WebAssembly优化浏览器应用性能但学习曲线陡,Serverless简化开发但需优化冷启动问题。

HTML、CSS和JavaScript在Web开发中的作用分别是:1.HTML定义网页结构,2.CSS控制网页样式,3.JavaScript添加动态行为。它们共同构建了现代网站的框架、美观和交互性。

HTML的未来充满了无限可能。1)新功能和标准将包括更多的语义化标签和WebComponents的普及。2)网页设计趋势将继续向响应式和无障碍设计发展。3)性能优化将通过响应式图片加载和延迟加载技术提升用户体验。

HTML、CSS和JavaScript在网页开发中的角色分别是:HTML负责内容结构,CSS负责样式,JavaScript负责动态行为。1.HTML通过标签定义网页结构和内容,确保语义化。2.CSS通过选择器和属性控制网页样式,使其美观易读。3.JavaScript通过脚本控制网页行为,实现动态和交互功能。

HTMLISNOTAPROGRAMMENGUAGE; ITISAMARKUMARKUPLAGUAGE.1)htmlStructures andFormatSwebContentusingtags.2)itworkswithcsssforstylingandjavascript for Interactivity,增强WebevebDevelopment。

HTML是构建网页结构的基石。1.HTML定义内容结构和语义,使用、、等标签。2.提供语义化标记,如、、等,提升SEO效果。3.通过标签实现用户交互,需注意表单验证。4.使用、等高级元素结合JavaScript实现动态效果。5.常见错误包括标签未闭合和属性值未加引号,需使用验证工具。6.优化策略包括减少HTTP请求、压缩HTML、使用语义化标签等。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

禅工作室 13.0.1
功能强大的PHP集成开发环境

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

SublimeText3汉化版
中文版,非常好用