CSS kutusu modeli spesifikasyonuna bakarsanız , aşağıdakileri göreceksiniz:
[Kenar boşluğu] yüzdesi, oluşturulan kutunun içeren bloğunun genişliğine göre hesaplanır . Bunun "margin-top" ve "margin-bottom" için de geçerli olduğunu unutmayın. İçeren bloğun genişliği bu elemana bağlıysa, ortaya çıkan düzen CSS 2.1'de tanımsızdır. (vurgu benim)
Bu gerçekten doğrudur. Ama neden ? Kimseyi bu şekilde tasarlamaya ne zorlar ki? İstediğiniz senaryoları düşünmek kolaydır, örneğin belirli bir şeyin her zaman sayfanın üst kısmından% 25 aşağıda olması gerekir, ancak dikey dolgunun yatay boyutuna göre olmasını isteyebileceğiniz herhangi bir neden bulmak zordur. ebeveyn.
İşte bahsettiğim fenomenin bir örneği:
<div style="border: 1px solid red; margin: 0; padding: 0; width: 200px; height: 800px;">
This div is 200x800.
<div style="border: 1px solid blue; margin: 10% 0 0 10%;">
This div has top-margin of 10% and left-margin of 10% with respect to its parent.
</div>
</div>
height: 10%; width: 10%
kare bir öğe almayacağınızı söylerseniz .
Note that in a horizontal flow, percentages on ‘margin-top’ and ‘margin-bottom’ are relative to the width of the containing block, not the height (and in vertical flow, ‘margin-left’ and ‘margin-right’ are relative to the height, not the width).
Yani her iki yöne de gidiyor
margin: 25%
gerçekte ne anlama geldiğine dair belirsizliğe neden olacağıydı . Kod öyle olduğunu öne sürse bile, bu eşit bir marj olmaz. Bunu destekleyecek kanıtım yok, ama mantıklı görünüyor.