「CSS」Margin Collapsing
外边距合并在排版上带来非常大的便利,但是人们对其不甚了解,导致使用外边距的时候总是出现繁多问题,今日写下一片文章,总结一下外边距合并。
三种基本的外边距合并
只有上外边距和下外边距才会触发外边距合并,左外边距和右外边距不会。外边距合并都是基于以下三种基本的外边距合并。
1. 相邻的同胞元素
我们考虑两个连续的 div,他们的上下左右的边距都是 50px。此时,第一个区域的下外边距 和 第二个区域的上外边距 合并,故他们的间隔是 50px。
<style> .margin-box { width: 50px; height: 50px; margin: 50px; background: #fae900; }</style><div class="margin-box"></div><div class="margin-box"></div>
2. 父元素与子元素
第一个子元素的上外边距和父元素的上外边距会进行合并
最后一个子元素的下外边距和父元素的下外边距会进行合并
合并的视觉效果就是这些合并的外边距 表现为父元素的外边距。
我们使用一个有颜色区域包含另外一个不同颜色的区域。里面的区域所有的外边距设为50px。
<div style="background: #cccdd1;"> <div class="margin-box"></div></div>
我们可以看到, margin-box 的左边和右边都展示为 #cccdd1, 而由于上边和下边的外边距和父元素的合并了,并表示为父元素的外边距,故颜色为父元素的父元素的背景色(若又发生合并,递推即可)。
细心的读者会发现,我并没有设置父元素的 margin,何来合并一说?
这是因为当 margin 为 0 的时候也会发生合并。
3. 空元素
它自己的上外边距和下外边距合并了。°(°?Д?°) °
阻止外边距合并
第二种情况不合并
设置 overflow: hidden;(不为 visible 都可)。
由于 margin 需要直接接触才能够合并,根据盒子模型,我们可以设置父元素的 边框 或 内边距,或者使用某些元素将第一个元素和父元素隔开(那就不是第一个元素了)。
三种情况都不合并
只有在静态流的元素才会发生外边距合并,故设置 float, position: absolute; 都可以使得外边距在何种情况都不合并。
inline-block 是个例外,它既没有脱离文档流,但是它的所有的外边距都不会合并。
DEMO
听说技术文章和 DEMO 更配噢~
git clone https://github.com/JasonKid/fezone.git 搜索 Margin Collapsing
记得点赞... (??□′)?? ┴─┴

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

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

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

WebDevelovermentReliesonHtml,CSS和JavaScript:1)HTMLStructuresContent,2)CSSStyleSIT和3)JavaScriptAddSstractivity,形成thebasisofmodernWebemodernWebExexperiences。

HTML、CSS和JavaScript在Web開發中的作用分別是:1.HTML定義網頁結構,2.CSS控製網頁樣式,3.JavaScript添加動態行為。它們共同構建了現代網站的框架、美觀和交互性。

HTML的未來趨勢是語義化和Web組件,CSS的未來趨勢是CSS-in-JS和CSSHoudini,JavaScript的未來趨勢是WebAssembly和Serverless。 1.HTML的語義化提高可訪問性和SEO效果,Web組件提升開發效率但需注意瀏覽器兼容性。 2.CSS-in-JS增強樣式管理靈活性但可能增大文件體積,CSSHoudini允許直接操作CSS渲染。 3.WebAssembly優化瀏覽器應用性能但學習曲線陡,Serverless簡化開發但需優化冷啟動問題。

HTML的未來充滿了無限可能。 1)新功能和標準將包括更多的語義化標籤和WebComponents的普及。 2)網頁設計趨勢將繼續向響應式和無障礙設計發展。 3)性能優化將通過響應式圖片加載和延遲加載技術提升用戶體驗。

HTML、CSS和JavaScript在網頁開發中的角色分別是:HTML負責內容結構,CSS負責樣式,JavaScript負責動態行為。 1.HTML通過標籤定義網頁結構和內容,確保語義化。 2.CSS通過選擇器和屬性控製網頁樣式,使其美觀易讀。 3.JavaScript通過腳本控製網頁行為,實現動態和交互功能。

HTML是構建網頁結構的基石。 1.HTML定義內容結構和語義,使用、、等標籤。 2.提供語義化標記,如、、等,提升SEO效果。 3.通過標籤實現用戶交互,需注意表單驗證。 4.使用、等高級元素結合JavaScript實現動態效果。 5.常見錯誤包括標籤未閉合和屬性值未加引號,需使用驗證工具。 6.優化策略包括減少HTTP請求、壓縮HTML、使用語義化標籤等。

HTML、CSS和JavaScript是構建現代網頁的核心技術:1.HTML定義網頁結構,2.CSS負責網頁外觀,3.JavaScript提供網頁動態和交互性,它們共同作用,打造出用戶體驗良好的網站。

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