成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

margin

brianway / 1314人閱讀

摘要:二負(fù)一個(gè)沒有設(shè)定高度的塊狀元素,其高度是自動(dòng)的,具體來說就是由它里面的文檔流最后的位置決定的。為負(fù)值,會(huì)導(dǎo)致元素的邊界收縮,其作用只會(huì)影響文檔流的邊界。而文檔流邊界的減少,會(huì)產(chǎn)生以下兩個(gè)影響。

一、margin移動(dòng)的參考基線

上圖解析:

box 的實(shí)際大小 = box 的物理大小 + 正的 margin(物理大小指的是除去 margin,也就是包含 border 以內(nèi)的 box 大小)

如果是負(fù)的 top 或 left 值會(huì)引起 box 的向上或向左位置移動(dòng),如果是負(fù)的 bottom 或 right 會(huì)影響下面 box 的顯示的參考線。

二、負(fù)margin-bottom

一個(gè)沒有設(shè)定高度的塊狀元素,其高度是自動(dòng)的,具體來說就是由它里面的文檔流最后的位置決定的。

margin-bottom為負(fù)值,會(huì)導(dǎo)致元素的邊界收縮,其作用只會(huì)影響文檔流的邊界。而文檔流邊界的減少,會(huì)產(chǎn)生以下兩個(gè)影響。
1、后面的元素會(huì)占據(jù)收縮產(chǎn)生的那一部分文檔流,從而形成后面元素覆蓋前面元素的效果
2、當(dāng)父元素沒有明確指定height,會(huì)導(dǎo)致父元素的邊界會(huì)往上面縮,也就是其父元素的邊界在子元素邊界上面。

總之:margin-bottom為負(fù)值只會(huì)影響父元素的高度(前提是父元素沒有明確指定height),無法影響子元素自身的高度!

三、負(fù)margin-right

margin-right為負(fù)數(shù)只會(huì)改變?cè)刈陨淼膶挾龋ㄇ疤崾歉冈爻叽绻潭ǎ釉貙挾任丛O(shè)),不會(huì)修改父元素的寬度。margin-left為負(fù)數(shù)在該條件下也會(huì)改變?cè)刈陨淼膶挾取?/p>

為什么負(fù)margin-right/margin-left會(huì)改變?cè)貙挾龋?/strong>因?yàn)榧偃鏟為block元素且沒有指定width,則p的width+padding+border+margin=父級(jí)div的width(這里都是說的水平方向)。

這里假定padding,border為0。父級(jí)div width為400px。p的width為inherit。不設(shè)置margin,則p的width為400px。
當(dāng)margin-left:-100px;,p.width + (-100px) = 400px。因此, p的width就變成了500px。

這里說的p都是假定為inherit width。如果指定了p的width,則margin-left,margin-top為負(fù)值會(huì)引起p元素位置的變化。

四、負(fù)margin的應(yīng)用 多列等高布局(原理:負(fù)margin-bottom)
body,
p {
    margin: 0;
    padding: 0;
}

#testdiv {
    overflow: hidden;
    width: 660px;
    margin: 0 auto;
}

#left,
#center,
#right {
    margin-bottom: -400px;
    padding-bottom: 400px;
}

#left {
    float: left;
    width: 180px;
    background: #777;
}

#center {
    float: left;
    width: 300px;
    background: #888;
}

#right {
    float: right;
    width: 180px;
    background: #999;
}

p {
    color: #FFF;
    text-align: center
}

style="height:50px"

style="height:100px"

未設(shè)置padding-bottom和 margin-bottom屬性時(shí),高度不一,外層DIV高度為內(nèi)層最高DIV高度。

設(shè)置padding-bottom和 margin-bottom屬性,未設(shè)置testdiv的overflow屬性時(shí),外層DIV高度仍為200,內(nèi)層各div邊界在外層div邊界之下。

設(shè)置testdiv的overflow屬性后,外層div以內(nèi)層最高div的高度200為自身的高度,各列不足200高度的,則用padding不足。

去除列表右邊距(原理:負(fù)margin-right/margin-left)

可實(shí)現(xiàn)中間帶些間隔的布局。

ul,
li {
    list-style: none;
    padding: 0;
    margin: 0;
}

.container {
    height: 210px;
    width: 490px;
    border: 5px solid #000;
    overflow: hidden;/*將超出部分內(nèi)容隱藏*/
}

ul {
    height: 210px;
    background-color: red;
    margin-right: -30px;
    /*一個(gè)負(fù)的margin-right,相當(dāng)于把ul的寬度向右增加了30px*/
}
   
li {
    height: 100px;
    width: 100px;
    background: #eee;
    float: left;
    margin-right: 30px;
}
  • 子元素1
  • 子元素2
  • 子元素3
  • 子元素4

ul不加 margin-right: -30px;,則一行放不下

ul加上 margin-right: -30px;,則會(huì)導(dǎo)致超出父元素

因此需要為父元素添加overflow: hidden;

五、margin折疊 折疊含義

兩個(gè)或多個(gè)毗鄰的普通流中的塊元素垂直方向上的 margin 會(huì)折疊

1、兩個(gè)或多個(gè)

說明其數(shù)量必須是大于一個(gè),又說明,折疊是元素與元素間相互的行為,不存在 A 和 B 折疊,B 沒有和 A 折疊的現(xiàn)象。

2、毗鄰

是指沒有被非空內(nèi)容、padding、border 或 clear 分隔開,說明其位置關(guān)系。

注意一點(diǎn),在沒有被分隔開的情況下,父元素的 margin-top 會(huì)和它普通流中的第一個(gè)子元素(非浮動(dòng)元素等)的 margin-top 相鄰; 只有父元素的 height 是 "auto" 的情況下,它的 margin-bottom 才會(huì)和它普通流中的最后一個(gè)子元素(非浮動(dòng)元素等)的 margin-bottom 相鄰。

3.垂直方向

是指具體的方位,只有垂直方向的 margin 才會(huì)折疊,也就是說,水平方向的 margin 不會(huì)發(fā)生折疊的現(xiàn)象。

發(fā)生折疊的情況

1、相鄰的兄弟元素

上一個(gè)元素的margin-bottom與下一個(gè)元素的margin-top重疊。

2、父級(jí)和第一個(gè)/最后一個(gè)子元素

父元素的margin-top與子元素的margin-top,或父元素的margin-bottom與子元素的margin-bottom重疊。

3、空的block元素

自己的margin-top和margin-bottom重疊(自身內(nèi)容為空,垂直方向上 border、padding 為 0發(fā)生)
如何使元素上下margin不折疊

1、使元素脫離普通流

浮動(dòng)元素、inline-block 元素、absolute和fixed定位元素的 margin 不會(huì)和垂直方向上其他元素的 margin 折疊。(這里指的是上下相鄰的元素)

創(chuàng)建了塊級(jí)格式化上下文的元素,不和它的子元素發(fā)生 margin 折疊??赏ㄟ^以下幾種觸發(fā)BFC:float(除了none)、overflow(除了visible)、display(table-cell/table-caption/inline-block)、position(除了static/relative)

2、使元素不毗鄰

添加border或padding或line boxs

margin重疊的計(jì)算規(guī)則

1、正正取大值(都為正,則取最大的正值)
2、正負(fù)值相加(一正一負(fù),則取兩者相加后的值)
3、負(fù)負(fù)最負(fù)值(都為負(fù),則取絕對(duì)值大的負(fù)值)
參考自:
由淺入深漫談margin屬性
深入理解margin重疊以及負(fù)margin對(duì)元素大小的影響
collapsing-margin的W3C官方介紹

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/111699.html

相關(guān)文章

  • 細(xì)說 CSS margin

    摘要:給父元素設(shè)置了一個(gè)灰色背景,并且沒有設(shè)置高度,因此高度會(huì)隨著內(nèi)容而擴(kuò)展,設(shè)置為。這個(gè)元素的位置如下圖所示因?yàn)樵厍宄俗蟾?dòng),所以元素下移。由于這條規(guī)則的存在,導(dǎo)致他們折疊后的不能跟的進(jìn)行折疊,因此的高度被撐開。 作者:https://coding.net/u/zhengkenghong原文:https://blog.coding.net/blog/css-margin 本文著重描述關(guān)...

    tianren124 評(píng)論0 收藏0
  • 你有所不知的margin屬性

    摘要:前言致謝本文總結(jié)于張鑫旭老師的深入理解之課程,感謝張老師的辛苦付出難學(xué)的作為前端狗的我們,每天都要和網(wǎng)頁打交道。頁面中任何地方,嵌套或直接放入任何空的,都不會(huì)影響原來的布局。比如,給元素聲明,但在中的屬性是。 前言 致謝  本文總結(jié)于 張鑫旭老師的 CSS深入理解之margin課程,感謝張老師的辛苦付出! 難學(xué)的 CSS  作為前端狗的我們,每天都要和網(wǎng)頁打交道。當(dāng) UI 將設(shè)計(jì)稿發(fā)給...

    joywek 評(píng)論0 收藏0
  • margin詳解

    摘要:屬性指定了盒的區(qū)的寬度。簡寫屬性一次性設(shè)置四周的,而其它屬性只設(shè)置它們各側(cè)的。 margin屬性指定了盒的margin區(qū)的寬度。margin簡寫屬性一次性設(shè)置四周的margin,而其它margin屬性只設(shè)置它們各側(cè)的。這些屬性適用于所有元素,但非替換行內(nèi)元素上的豎直margin將不會(huì)產(chǎn)生任何效果 margin與容器尺寸 margin與可視尺寸 margin與可視尺寸 只適用于沒有設(shè)定...

    stonezhu 評(píng)論0 收藏0
  • 關(guān)于css margin,你需要知道的一切

    摘要:前兩個(gè)元素之間的是,因?yàn)檩^小的頂部與較大的底部相結(jié)合。這是由于兩個(gè)重疊造成的。同樣,這種行為也有一定的邏輯。這意味著在使用百分比時(shí),元素周圍的大小都是相同的。 為了保證的可讀性,本文采用意譯而非直譯。 當(dāng)我們學(xué)習(xí)CSS時(shí),我們大多數(shù)人學(xué)到的第一件事是CSS中盒子的各個(gè)部分的細(xì)節(jié),這部分通過叫做 CSS盒、模型。盒模型中的元素之一是margin,即盒子周圍的透明區(qū)域,它會(huì)將其他元素從盒子...

    FreeZinG 評(píng)論0 收藏0
  • 關(guān)于css margin,你需要知道的一切

    摘要:前兩個(gè)元素之間的是,因?yàn)檩^小的頂部與較大的底部相結(jié)合。這是由于兩個(gè)重疊造成的。同樣,這種行為也有一定的邏輯。這意味著在使用百分比時(shí),元素周圍的大小都是相同的。 為了保證的可讀性,本文采用意譯而非直譯。 當(dāng)我們學(xué)習(xí)CSS時(shí),我們大多數(shù)人學(xué)到的第一件事是CSS中盒子的各個(gè)部分的細(xì)節(jié),這部分通過叫做 CSS盒、模型。盒模型中的元素之一是margin,即盒子周圍的透明區(qū)域,它會(huì)將其他元素從盒子...

    libxd 評(píng)論0 收藏0
  • selenium中BasicAuth認(rèn)證彈框處理

     小編寫這篇文章的主要目的,是給大家做一個(gè)介紹,介紹關(guān)于在python selenium中,如果出現(xiàn)了BasicAuth認(rèn)證彈框,那么,我們后續(xù)應(yīng)該要怎么進(jìn)場處理呢?下面就給大家詳細(xì)解答下。  一、什么是BasicAuth  兩個(gè)不認(rèn)識(shí)的見面:  假如說張三和李四見面了,于是張三向李四發(fā)出了誠摯的邀請(qǐng):李四,國慶來上海玩吧,我請(qǐng)你吃小龍蝦!本來李四想先視頻一下到時(shí)候好認(rèn)人,但張三說那樣就沒有驚喜感...

    89542767 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<