48 margin屬性詳解

2021-01-10 石問新

margin屬性

margin是盒子的外邊距,是盒子和其他盒子之間的距離。

margin也有四個方向。

以margin開頭,接著跟一個小短橫,然後跟表示方向的單詞,就是margin的四個方向的小屬性。

margin的塌陷

所謂的margin的塌陷,就是豎直方向的margin,有塌陷現象。

這個現象是:小的margin會塌陷到大的margin中,而margin不疊加,以大值為準。

比如下圖:

上面的盒子,把下面的盒子向下"踹"了30像素,下面的盒子,把上面的盒子向上"踹"了40像素。而最終在頁面上顯示的時候,這兩個盒子之間的距離是40像素,而並不是70像素。這就是margin的塌陷現象。

而margin在水平方向並不具有塌陷現象,是可以疊加的。

接下來,我創建一個叫"margin屬性詳解.html"的文件,在vscode和瀏覽器中進行演示。

<!DOCTYPE html><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>margin屬性詳解</title><style>.span1 {margin-right: 10px; }.span2 {margin-left: 20px; }.box1 {width: 200px;height: 200px;background-color: red;margin-bottom: 10px; }.box2 {width: 200px;height: 200px;background-color:orange;margin-top: 20px; }</style></head><body><spanclass="span1">欲為諸佛龍象</span><spanclass="span2">先做眾生牛馬</span><divclass="box1"></div><divclass="box2"></div></body></html>

我創建了兩個span標籤和兩個div標籤。

span標籤是行內元素,可以並排顯示,div標籤是塊級元素,不能並排顯示。

關於行內元素和塊級元素,後面會介紹。這裡先知道就行。

兩個span標籤,我設置了左右方向的margin,兩個div標籤,我設置了豎直方向的margin。

在瀏覽器中,效果如下:

現在我在頁面的span上右鍵點擊"檢查",打開瀏覽器調試窗口,把滑鼠滑到代碼區域的span1上,用肉眼就能很明顯的看到,頁面渲染區域的span1和span2之間的水平方向距離,肯定是超過10像素的,也就是說在水平方向上,margin不塌陷,會疊加。它們之間的距離是10+20=30像素。

我把滑鼠滑到box2上,就能看到box2和box1之間豎直方向的距離就是20像素,取的是20這個大值,而不是進行疊加。也就是說,在豎直方向上,是有margin塌陷現象的。

一些元素有默認的margin

一些元素,比如body、ul、p等標籤,在我們什麼樣式都沒有給它們設置的時候,瀏覽器就會給它們設置默認的margin,這些默認的margin,會影響我們開發精準的網頁。

因此,在我們開始編寫一個網頁的時候,就要把這些具有默認margin的元素的默認margin清除掉。

如何清除呢?可以這樣寫:

這裡的*號,是通配符選擇器。通配符選擇器表示選擇頁面上所有的元素。

同樣的,一些元素也具有默認的padding,所以我們一開始,就把所有的元素的margin和padding都設為0。

但是通配符選擇器有效率問題(並不是所有的元素都有默認的margin和padding,只是一部分),所以我們使用併集選擇器,把經常要用到的元素設置一下就行了。

關於一些元素具有默認的margin和padding,我在瀏覽器中演示一下。我還是在"margin屬性詳解.html"這個文件中,寫一個ul,再寫一個p。

<!DOCTYPE html><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>margin屬性詳解</title><style>.span1 {margin-right: 10px; }.span2 {margin-left: 20px; }.box1 {width: 200px;height: 200px;background-color: red;margin-bottom: 10px; }.box2 {width: 200px;height: 200px;background-color:orange;margin-top: 20px; }</style></head><body><spanclass="span1">欲為諸佛龍象</span><spanclass="span2">先做眾生牛馬</span><divclass="box1"></div><divclass="box2"></div><ul><li>他是平原跑出來的第一輪太陽</li><li>閉著眼都能感覺到陽光</li><li>我被燃燒過勁氧化發黃</li><li>枯燥風化</li><li>且時光還長</li></ul><p>任何瞬間的心動都不容易,不要怠慢了它。</p></body></html>

在瀏覽器中,效果如下:

我們看到,我在代碼中只是新添加了一個ul,一個p,並沒有給body、ul、p設置margin,span標籤只設置了左右方向的margin,並沒有設置上下方向的margin,但是在瀏覽器中,"欲為諸佛龍象先做眾生牛馬"所在的span和瀏覽器的窗口上邊框之間是有一定的縫隙的。

由此,我們就能看出,body和瀏覽器上邊框有一個向上的margin,我們並沒有給body設置margin,那麼就說明body具有默認的margin。

根據代碼,第二個div,我們並沒有設置下margin,但是ul和第二個div,以及下面的p之間,都有距離,這就說明ul和p標籤都具有默認的margin。

我們還可以右鍵--檢查,打開調試面板,把滑鼠滑到代碼區域,點擊body,並把滑鼠懸停到body上,會看到頁面的顯示區域,body默認就有上下左右方向的margin,

再看看body的盒子模型圖,就能看到body上下左右四個方向,默認的margin是8像素,

同樣的,我們點擊代碼中的ul,把滑鼠懸停到ul上,會看到ul的盒子模型圖上,顯示ul默認具有上下方向的margin是16像素,左右方向margin為0,

ul的盒子模型圖如下,

同樣的,在代碼區點擊p,滑鼠停在p上,就能看到p元素也有默認上下方向的margin,

p元素的盒子模型圖上,上下方向margin為16像素,左右沒有,如下:

一些元素具有默認的margin,也有默認的padding,我們都可以通過盒子模型圖來看到。

現在,我們為了頁面更精準,就要去掉這些元素默認的margin和padding,在css中加上去掉這些元素默認margin和padding的代碼:

<!DOCTYPE html><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>margin屬性詳解</title><style>.span1 {margin-right: 10px; }.span2 {margin-left: 20px; }.box1 {width: 200px;height: 200px;background-color: red;margin-bottom: 10px; }.box2 {width: 200px;height: 200px;background-color:orange;margin-top: 20px; }body,ul,p {margin: 0;padding: 0; }</style></head><body><spanclass="span1">欲為諸佛龍象</span><spanclass="span2">先做眾生牛馬</span><divclass="box1"></div><divclass="box2"></div><ul><li>他是平原跑出來的第一輪太陽</li><li>閉著眼都能感覺到陽光</li><li>我被燃燒過勁氧化發黃</li><li>枯燥風化</li><li>且時光還長</li></ul><p>任何瞬間的心動都不容易,不要怠慢了它。</p></body></html>

現在,瀏覽器中效果就是這樣:

我們看到,body和瀏覽器窗口之間、ul和第二個地之間,ul和最下面的p元素之間,都沒有縫隙了,都是緊貼著的了。這就是去掉他們的默認margin的效果。

實際開發中,去掉元素默認margin和padding的代碼,我們用交集選擇器去寫,不要用通配符去寫,當然自己練習的話,怎麼寫無所謂。

盒子水平居中

一個盒子,默認是位於頁面的最左邊,或者位於父元素的最左邊開會顯示的,怎麼樣才能讓盒子在水平方向上居中呢?

把盒子左右兩邊的margin設置為auto,盒子就在水平方向上居中了。

我們知道,padding寫兩個值的時候,第一個值表示上下方向,第二個值表示左右方向,同樣的,margin也一樣。

margin寫兩個值,第一個值寫為0,就表示上下方向為0,第二個值寫auto,auto就是自動的意思。左右方向自動,它自然就居中了。

因此,想要讓任何一個盒子水平方向居中,就寫margin:0 auto。

注意:文本水平居中是text-align:center,和盒子的水平居中不是一個概念。

盒子的垂直方向居中,需要使用絕對定位技術。絕對定位,後面我們會接觸到。

相關焦點

  • DIV+CSS中padding和margin屬性用法
    DIV+CSS是現在網頁布局的主流,你對其中的padding和margin兩個重要屬性的用法是否了解,這裡和大家分享一下,相信本文介紹一定會讓你有所收穫。
  • 《怪物獵人世界冰原》全屬性輕弩配裝推薦 各屬性輕弩怎麼搭配
    想來很多朋友都還不是很清楚吧,所以呢小編今天給大家帶來的就是怪物獵人世界冰原全屬性輕弩配裝推薦,需要的朋友不妨進來看看。 火和冰的屬性彈上面這把都可以用,嫌麻煩的只做這把就好,推薦零件:3反動抑制,1彈丸強化。實際上最強的火屬性輕弩應該是下面這把火龍弩。
  • 《三國志14》武將羊祜是誰 武將羊祜屬性戰法一覽
    在三國志14中存在著許許多多的武將,但許多玩家還不了解這位將士,本次小編帶來了三國志14武將羊祜屬性戰法一覽,想要了解的玩家不妨進來看看。在三國志14中存在著許許多多的武將,但許多玩家還不了解這位將士,本次小編帶來了三國志14武將羊祜屬性戰法一覽,想要了解的玩家不妨進來看看。
  • 金色盔甲屬性圖鑑
    金色盔甲屬性圖鑑 2020-05-13 16:27:48 策略戰棋SLG 人氣值:加載中... (點擊圖片可查看大圖) 以上就是關於戰爭機器戰術小隊金色盔甲屬性圖鑑的相關分享,希望對大家了解這些盔甲的屬性有幫助。
  • 《三國志14》張梁五維屬性怎麼樣 張梁個性戰法說明
    新手指南 | 武將技能 | 戰法詳解 三國志14張梁五維屬性怎麼樣?想來很多朋友都還不是很清楚吧,所以呢小編今天給大家帶來的就是三國志14張梁個性戰法說明,需要的朋友不妨進來看看。
  • 《孤膽槍手2傳奇》M16A1合成配方詳解 M16A1怎麼合成
    M16A1怎麼合成 2020-02-23 18:07:48 動作射擊STG 人氣值:加載中...遊戲中有很多的傳奇武器可以通過合成獲得,今天小編給大家帶來孤膽槍手2傳奇M16A1合成配方詳解,需要的小夥伴快來看一下吧。
  • 《魂器學院》元素屬性克制怎麼樣 元素屬性克制關係詳解
    導 讀 在遊戲中是有元素屬性克制這一說法的,如果把這個機制運用的好的話在實戰中是非常有幫助的,那麼今天小編就來給大家說說元素屬性克制關係,希望大家喜歡。
  • 《Skul:英雄殺手》矮人族屬性詳解
    18183首頁 英雄殺 《Skul:英雄殺手》矮人族屬性詳解 《Skul:英雄殺手》矮人族屬性詳解 來源:網絡
  • 《恐怖黎明》星座刺客屬性怎麼樣 星座刺客屬性詳解
    導 讀 刺客星座是《恐怖黎明》中的中級星座,技能刀陣是範圍傷,給缺少AOE的戰士增加了清兵能力,而且刀陣很適合綁定審判的符文,下邊就給大家帶來恐怖黎明星座刺客屬性詳解
  • 《怪物獵人世界冰原》溟波套屬性怎麼樣 溟波套技能效果一覽
    玩法技巧 | 裝備推薦 怪物獵人世界冰原溟波套屬性怎麼樣?想來很多朋友都還不是很清楚吧,所以呢小編給大家帶來的就是怪物獵人世界冰原溟波套技能效果一覽,需要的朋友不妨進來看看。
  • 《騎馬與砍殺2》庫賽特兵種屬性大全 庫賽特全兵種圖鑑
    有些玩家對兵種屬性了解的不是很全面,這裡給大家帶來了騎馬與砍殺2庫賽特兵種屬性大全,一起來看下吧。 全攻略) 5《神界:原罪2》全章節全主支線任務流程圖文攻略 全角色/種族/職業+系統教程[遊俠攻略組]【完結】 6《騎馬與砍殺2》圖文攻略:專精加點+兵種介紹+武器鍛造+勢力介紹+戰鬥系統+地圖探索+跑商賺錢【遊俠攻略組】 7《只狼:影逝二度》圖文攻略:遊戲操作+全BOSS打法+技能介紹+全劇情流程+全收集+武器介紹+遊戲介紹【遊俠攻略組】 8《吞食孔明傳》圖文攻略 全章節通關流程+全收集圖文詳解
  • 解析DIV布局之四大屬性用法
    解析DIV布局之四大屬性用法 本文向大家介紹一下DIV布局屬性的概念,主要包括position屬性,direction屬性,float和clear屬性等內容,希望本文的介紹能讓你有所收穫。
  • 《元氣騎士》粒子之鷹屬性特點怎麼樣 粒子之鷹屬性特點詳解
    導 讀 粒子之鷹是《元氣騎士》中的一把武器,綠色品質,3點攻擊,攻擊耗藍1,0暴擊,15顆子彈,下邊就給大家帶來元氣騎士粒子之鷹屬性特點詳解,大家可以來看一看
  • 天天酷跑閃電騎士怎麼樣 屬性技能詳解
    天天酷跑閃電騎士怎麼樣 屬性技能詳解 來源:www.18183.com作者:集落時間:2014-06-13 天天酷跑閃電騎士怎麼樣 屬性技能詳解,本文小編為您帶來天天酷跑閃電騎士怎麼樣 屬性技能詳解。
  • LOL冰霜之心屬性怎麼樣 冰霜之心屬性詳解
    ------------------------------------- LOL冰霜之心屬性怎麼樣?冰霜之心好不好用?冰霜之心屬性效果怎麼樣?
  • 《求生之路2》鉻合金霰彈槍屬性效果詳解
    18183首頁 求生之路2 《求生之路2》鉻合金霰彈槍屬性效果詳解 《求生之路2》鉻合金霰彈槍屬性效果詳解 來源:網絡
  • 流放之路雙閃屬性區別詳解 流放之路閃避與躲避屬性的區別
    導 讀 流放之路閃避與躲避屬性新手詳解,遊戲中,我們常常可以看見許多的遠程BD裡,防禦手段是選擇的雙閃,那麼雙閃到底是什麼意思了?
  • 《了不起的修仙模擬器》天地五方旗厲害嗎 天地五方旗屬性一覽
    遊戲中有許多的密寶,很多小夥伴可能對天地五方旗還不了解吧,今天小編給大家帶來修仙模擬器天地五方旗屬性一覽,快來看一下吧。 素色雲界旗 對木屬性造成雙倍傷害。 俠客風雲傳》全劇情全結局全任務流程攻略(人物創建+全支線人物流程+全寶箱收集+全女主攻略+全心法收集+DLC天王歸來+碧血丹心DLC全攻略) 3《神界:原罪2》全章節全主支線任務流程圖文攻略 全角色/種族/職業+系統教程[遊俠攻略組]【完結】 4《美少女萬華鏡5》人物有什麼 遊戲人物介紹 5《逃離塔科夫》官網地址是什麼 遊戲官網地址介紹 6《吞食孔明傳》圖文攻略 全章節通關流程+全收集圖文詳解
  • 《逃離塔科夫》左輪手槍效果說明 左輪手槍屬性效果介紹
    | 上古捲軸6 | 帝國時代4 | 看門狗軍團 | 生化3重製版 | 收穫日3 | 聖女之歌3 | 騎馬與砍殺2 當前位置:攻略首頁 > 單機遊戲攻略 > 逃離塔科夫 > 正文 《逃離塔科夫》左輪手槍效果說明 左輪手槍屬性效果介紹
  • 橙色裝備屬性一覽
    橙色裝備屬性一覽 2020-05-30 09:10:39 策略戰棋SLG 人氣值:加載中...遊戲中裝備有不同的等級,其中有不少橙裝效果各有特色,這裡給大家帶來了黑荊棘角鬥場橙色裝備屬性一覽,感興趣的玩家一起來看下吧。