前言百分比的應用隨處可見,在這裏作一個小小的總結。git 使用百分比的場合
若是上面列舉的全部屬性你都可以輕鬆地說出它們的百分比含義,那麼估計這篇文章就不大適合你了。github 接下去咱們使用JsFiddle上面的demo來逐個說說這些樣式的百分比bash 1. width 和 height這個最經常使用也是最簡單的了,它們的百分比計算是基於包裹它的父元素的寬和高來計算,好比:佈局 有一種特殊狀況是,父元素沒有明確的高度定義 [ 指的是不定義height或者使用min/max-height這種,都屬於不明確的高度定義 ],而且子元素使用百分比而且不是絕對定位,那麼這時候的百分比等同於auto。this width : auto在 CSS3 中, .example1 {
width: fill-available;
}
.example2 {
width: max-content;
}
.example3 {
width: min-content;
}
.example4 {
width: fit-content;
}
複製代碼 width 的四種表現充分利用可用空間 [ fill-available ]
收縮與包裹 [ fit-content ]
超出容器限制 [ max-content ]
height : auto
2. margin和padding這兩個屬性的百分比就比較有意思了,也是咱們常常用錯的兩個。在CSS盒子模型規範明確提出了其百分比的含義:設計
padding的解釋也是相似。 上面的意思能夠總結出三點: 百分比的計算是基於其包含塊的寬度 這時定有童鞋會疑惑,爲何 CSS 規範的制定者會選擇使用包含塊的寬度來做爲參考值,而不是高度? 其實在上面總結的三點中已經有所涉及的了,在咱們平時的樣式佈局中,元素的高度取決於子元素的高度,若是子元素的 margin 或者 padding 的百分比又依賴於包含塊的高度,那麼兩者互相依賴,就永遠沒法獲得一個穩定的值,陷入了一種死循環,所以也許是基於這個考慮,CSS 的規範中才會提到上面要點的第三點。以上純屬本身的猜想,僅供參考。 margin : auto
padding : auto ?
3. border-radius根據MDN-border-radius的百分比介紹:
4. background-positionbackground-position 這個屬性容許你在它的包含塊中隨意移動背景圖片(或者漸變),默認值是0 0 若是使用百分比,那麼百分比的計算應該是這樣的,假設一個容器的長寬爲400X200,圖片是150X150,那麼當設置 background-position: 20% 100%
(0, 0) => ((400 - 150) * 20%, (200 - 150) * 100%) font-size參照物 => 父元素 line-height參照物 => 自身 font-size 大小 vertical-align參照物 => 自身 line-height 大小 bottom、left、right、top參考的是元素包含塊的尺寸
transform: translate在水平或者垂直居中的應用場景中,我最常使用的即是這個平移變換了,輕輕鬆鬆的-50%就可讓塊元素居中,那麼這個百分之50%基於的是什麼樣的參考值呢?答案即是其自身元素的寬度或者高度,這裏的寬度和高度是否包含了padding和border呢?
請注意,當百分比值用於可繼承屬性時,只有結合參照值計算後的絕對值會被繼承,而不是百分比值自己。 |