衆所周知,CSS翻譯中的百分比值與翻譯後的元素本身的大小相關,而(AFAIK)則應用於任何其他與父代大小相關的屬性。這主要用於垂直居中元素,例如,在我們的瀏覽器中,flexbox
或grid
是我們的東西。爲什麼CSS轉換中的百分比值相對於元素本身?
.wrapper {
width: 500px;
height: 200px;
background-color: lightgray;
}
#element {
width: 42px;
height: 42px;
background-color: red;
position: relative;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
<div class="wrapper">
<div id="element"></div>
</div>
在這個例子中,我們看到如何應用於left
和top
性質50%是指.wrapper
的寬度的50%(或高度,爲top
),所以它的250像素和100像素,分別。但在translate
-50%適用於#element
本身,因此它是42px的50%。
我看到它的好處,但我不明白這種(明顯)不一致的原因。所以,
- 爲什麼在CSS翻譯的百分比值是相對於元素本身,而在任何其他屬性是相對於父母的大小?
- 此行爲是否還有其他屬性?
編輯:作爲SergeS的回答說,我在MDN看到,所有屬性都有定義他們對<percentage>
值本身引用。
在transform
,
百分比 - 指邊界框的大小。
在top
,
百分比 - 指的是包含塊的高度。
在margin
,
百分比 - 指的是包含塊的寬度。
我很好奇這些定義的原因。
翻譯屬性工作的元素,因爲它不涉及在瀏覽器上重新繪製像素,它只是從一個地方移動到另一個地方。其他的屬性將包括我想的所有變換屬性。 –
謝謝@ShubhamAgrawal。你知道這個重畫像素理論的任何來源嗎? –
您可以參考[https://developers.google.com/web/fundamentals/performance/rendering/stick-to-compositor-only-properties-and-manage-layer-count] –