本文版權(quán)歸鄭哲明和饑人谷所有集绰,轉(zhuǎn)載請注明來源
keywords: 負(fù)margin十电、浮動(dòng)元素。
預(yù)警:下文僅僅是本人猜想肥橙,歡迎拍磚魄宏。
我們都知道,負(fù)margin可以使元素或其相鄰元素(右邊或下面)移動(dòng)存筏,但具體為什么會(huì)產(chǎn)生這種現(xiàn)象呢宠互?瀏覽器是又如何處理負(fù)margin的?只有清楚了這兩個(gè)問題椭坚,才能明白負(fù)margin對浮動(dòng)元素的影響予跌,比如:
看起來,浮動(dòng)元素脫離普通文檔流之后善茎,似乎彼此間形成了通路券册,相互間可以利用負(fù)margin移動(dòng)。
但其中的原理真的是這樣嗎垂涯?
在瀏覽器中烁焙,最重要的概念莫過于盒模型,任何元素都會(huì)有一個(gè)盒子耕赘,可以這樣說骄蝇,瀏覽器渲染出的頁面只不過是一群盒子的有序排列而已。我們知道操骡,一個(gè)盒子包括這樣幾個(gè)部分:margin乞榨、border、padding当娱、content。
無論是行內(nèi)元素還是塊級元素考榨、浮動(dòng)元素等跨细,它們的盒子本質(zhì)上沒有什么區(qū)別。一個(gè)元素所占據(jù)的空間就是盒子所占據(jù)的空間河质。因此冀惭,負(fù)margin移動(dòng)元素的原理也就水落石出了:負(fù)margin會(huì)縮小或擴(kuò)大盒子所占據(jù)的空間。
當(dāng)元素使用負(fù)margin-left:
盒子空間減少掀鹅,當(dāng)然就向右移動(dòng)散休,挨著包含塊的邊框排列了,但同時(shí)乐尊,元素的寬高沒變戚丸,因此視覺上看,元素的大小沒有變化扔嵌。其余負(fù)marign同理限府。
負(fù)margin對浮動(dòng)元素的影響也逃脫不了上述原理夺颤,就不具體演示了。
這里提示一點(diǎn)胁勺,負(fù)margin-left與負(fù)margin-right有些許不同(top和bottom同理):
負(fù)margin-left無下限世澜,負(fù)margin-right有下限,為盒子的原始大小署穗。
至于兩者移動(dòng)方向的區(qū)別寥裂,我想,也比較好理解案疲。
另外封恰,如果元素寬度不固定,而是平鋪整行络拌,使用負(fù)margin會(huì)擴(kuò)大內(nèi)容寬度俭驮。
lazy:(……………………