国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

你有所不知的margin屬性

joywek / 1873人閱讀

摘要:前言致謝本文總結于張鑫旭老師的深入理解之課程,感謝張老師的辛苦付出難學的作為前端狗的我們,每天都要和網頁打交道。頁面中任何地方,嵌套或直接放入任何空的,都不會影響原來的布局。比如,給元素聲明,但在中的屬性是。

前言 致謝

 本文總結于 張鑫旭老師的 CSS深入理解之margin課程,感謝張老師的辛苦付出!

難學的 CSS

 作為前端狗的我們,每天都要和網頁打交道。當 UI 將設計稿發給你時,CSS 的知識便顯得尤為重要。而 CSS 這一標記性的語言,卻時常讓我很頭疼:毫無邏輯性,并充滿了各種坑爹的潛規則 ,以至于每次做項目時,大部分時間精力都浪費在了調整布局與樣式上,詳情可點擊知乎上的為什么 CSS 這么難學?問題,道出了我的心聲 :(

 但誰叫我們是吃這碗飯的呢,不管怎樣,有困難必須迎面解決,學好 CSS ,向張老師看齊!

正文

margin 算是性格剛烈的屬性了,下面,我將從各個方面講解 margin 的可怕之處。

元素尺寸的影響
通常一個元素的尺寸可分為:可視尺寸 與 占據尺寸

可視尺寸 - clientWidth (border - padding - size)

占據尺寸 - outerWidth (border - margin)

margin 又是怎樣影響這兩個尺寸的呢?

首先,兩個尺寸都需滿足一定的條件。

可視尺寸的影響條件

適用于 沒有設定 width/height 的塊級元素 (寬高設死了,怎么會影響呢?)
其中不包括 float absolute fixed 元素 ,inline水平 ,table-cell 元素

只適用于水平方向尺寸(margin-left/margin-right)

占據尺寸的影響條件

適用于 block/inline-block 水平元素

適用于 任何方向

與 width/height 值無關

inline 元素只影響水平方向 (后面會提到)

影響示例

margin 影響元素的可視水平尺寸
margin的可視尺寸示例

margin 影響占據尺寸 ,這個可以說是 margin 的本命技能了,就不舉例了。

百分比單位

通常而言,margin 的單位中,百分比單位最容易讓人頭暈。

普通元素的百分比 margin 都是相對于 容器的寬度 計算的


絕對定位的百分比 margin 是相對于 第一個具有定位屬性的祖先元素的寬度 計算的(relative/absolute/fixed)


重疊詳解

重疊可謂是 margin 中的最重要的潛規則了。

發生情景

相鄰的兄弟元素

父級和第一個/最后一個子元素

空的塊級元素(自己和自己)

重疊條件

塊級元素 (不包括 float 和 absolute 元素)

不考慮 writing-mode,只發生在垂直方向 (margin-top/margin-bottom)

父子 重疊條件

margin-top 重疊

父元素 非格式化上下文元素 沒有設置 overflow:hidden

父元素沒有 border-top 設置

父元素沒有 padding-top 設置

父元素和第一個子元素之間沒有inline元素分割

margin-bottom 重疊

父元素 非格式化上下文元素 沒有設置 overflow:hidden

父元素沒有 border-bottom 設置

父元素沒有 padding-bottom 設置

父元素和第一個子元素之間沒有inline元素分割

父元素沒有 height ,min-height,max-height 限制

空的塊級元素 margin 重疊條件

1. 元素沒有 border 設置
2. 元素沒有 padding 設置
3. 里面沒有 inline 元素
4. 沒有 height,或者 min-height

計算規則

正正取大值


兩個元素垂直距離為 : #top元素的 margin-top值

正負值相加


兩個元素垂直距離為: #top元素的margin-top值 加上 #bottom元素的margin-bottom值

負負最負值


兩個元素垂直距離為 : #top元素的 margin-top值

父級和第一個/最后一個子元素 發生重疊
給子元素設置垂直方向的 margin ,等同于 給父元素設置相同的垂直方向的 margin 屬性,
也就是說 父子元素發生 margin 重疊時, 它們倆共用一個 margin 屬性

重疊意義

連續段落或列表之類,如果沒有margin重疊,排版會不自然。

頁面中任何地方,嵌套或直接放入任何空的 div,都不會影響原來的布局。

遺落空的任意多個 p 元素,不會影響原來的閱讀排版。

margin auto

當你使用 margin auto 時,就應該聯想到一個詞 :填充

一個沒有設置寬高的塊級元素,會自動填充寬度

如果 一側是定值,一側是 auto,則 auto 為剩余空間的大小

如果兩側均是 auto,則平分 剩余空間

示例如下:


margin:auto 0 !== 垂直居中

以上,我們可得當一個塊級元素設置了 margin: 0 auto 可以實現水平居中,

而為什么 margin:auto 0 不會垂直居中?

答:一個塊級元素會自動填充可用的水平尺寸,但不會填充垂直尺寸,是因為其根本沒有任何可用的垂直空間。也就是說 margin: 0 auto , 總是有尺寸可以來填充的! 而 margin: auto 0 是沒有任何尺寸的可以來填充的。

失效情況

當子元素的寬度大于父元素的寬度 ,是無法通過 margin: 0 auto 實現居中的
因為,這個時候已經沒有任何空間可以填充了,當寬度超出父元素時,margin 已經為負值了。

垂直居中

writing-mode 與垂直居中


絕對定位元素


失效情景

inline 水平元素的垂直margin 無效(margin-top/margin-bottom)

margin 重疊發生

絕對定位元素非定位方位的 margin值 "無效"
因為 絕對定位元素 脫離了文檔流,與相鄰元素沒有關系,所以它不可能像普通元素一樣,設置margin,推走其他元素

margin 鞭長莫及
因為 有某些元素破壞了 文檔流,設置了 float absolute,造成了假象,margin不會根據 這些破壞元素作為標準

display:table-cell/display:table-row 等聲明的margin無效!某些替換元素除外,根據各個瀏覽器的實現方式作為區分。比如,給 button 元素聲明 display:table-cell,但在 chrome 中,button 的 display 屬性是 inline-block 。

內聯特性導致 margin 失效
margin-top: 負無窮, 但是,小到 1em 便無效了。
因為它是內聯元素,默認是基線對齊,x字母下邊緣對齊,margin 值再大,也不會起作用。
margin負無窮情景解析

其他屬性

margin-start

正常流向,margin-start 等同于 margin-left,兩者重疊不相加

如果水平流向是從右向左,margin-start 等同于 margin-right

在垂直流下 ( writing-mode:vertical-*; ) margin-start 等同于 margin-top

margin-end 與 margin-start 相對

margin-before 默認情況等同于 margin-top

margin-after 默認情況等同于 margin-bottom

margin-collapse

margin-collapse:collapse;

(默認值) 發生重疊

margin-collapse:discard;

取消重疊,margin 重疊部分為 0 ,沒有margin

margin-collapse:separate;

不發生重疊,margin 重疊部分為 margin-top + margin-bottom

結束語

margin 課程就到此結束了,再次感謝張鑫旭老師的辛苦付出!

深入Web全棧各項技術,堅持原創,文章更新雖不定,但只為質量而生,如果您喜歡此篇文章,歡迎支持關注。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/115714.html

相關文章

  • 不知DOM編程

    摘要:思路合并所有改變然后一次性處理使用屬性修改類名批量修改當你需要對元素進行一系列操作的時候,不妨按照如下步驟使元素脫離文檔流對其應用多重改變把元素帶回文檔中上面的這一套組合拳中,第一步和第三部分別會觸發一次重排。 前言:隨著vue,react, angular的流行,可能現在我們不必經常的操作DOM,三大框架在副交互的操作中發揮著極大地優勢。因為我們知道用腳本對DOM的操作非常昂貴,本文...

    Anshiii 評論0 收藏0
  • 不知DOM編程

    摘要:思路合并所有改變然后一次性處理使用屬性修改類名批量修改當你需要對元素進行一系列操作的時候,不妨按照如下步驟使元素脫離文檔流對其應用多重改變把元素帶回文檔中上面的這一套組合拳中,第一步和第三部分別會觸發一次重排。 前言:隨著vue,react, angular的流行,可能現在我們不必經常的操作DOM,三大框架在副交互的操作中發揮著極大地優勢。因為我們知道用腳本對DOM的操作非常昂貴,本文...

    warnerwu 評論0 收藏0
  • 不知不知道我知道偽元素小技巧

    摘要:偽元素偽元素能做什么我們要他有何用它能為我們解決什么問題和其他的方法相比她有什么有點我們為什么要使用它偽元素和偽類一樣,添加到選擇器,但是不是描述狀態,他允許我們為元素某些部分設置樣式利用偽元素,我們可以簡化頁面的標簽,同時用起來也很方便, 偽元素 偽元素能做什么?我們要他有何用?它能為我們解決什么問題?和其他的方法相比她有什么有點?我們為什么要使用它? 偽元素和偽類一樣,添加到選擇器...

    wenyiweb 評論0 收藏0
  • 不知不知道我知道偽元素小技巧

    摘要:偽元素偽元素能做什么我們要他有何用它能為我們解決什么問題和其他的方法相比她有什么有點我們為什么要使用它偽元素和偽類一樣,添加到選擇器,但是不是描述狀態,他允許我們為元素某些部分設置樣式利用偽元素,我們可以簡化頁面的標簽,同時用起來也很方便, 偽元素 偽元素能做什么?我們要他有何用?它能為我們解決什么問題?和其他的方法相比她有什么有點?我們為什么要使用它? 偽元素和偽類一樣,添加到選擇器...

    guyan0319 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<