2013-05-01 18 views
6

Tarayıcı içi Javascript ile ilgili olarak, window.getComputedStyle() yönteminin, bir öğeye uygulanan CSS özelliklerinin son kullanılan değerlerini vermesi beklenir. MDN documentation'a göre, “tüm hesaplamalar yapıldıktan sonra” anlamına gelir. Bununla birlikte, “tüm hesaplamalar” kenar boşluğu daraltmayı içermez gibi görünüyor. Firefox ve Chrome'da (en azından), getComptedStyle().marginBottom yönergesi, hesaplanan herhangi bir kenar boşluğu hesaplanmadan önce hesaplanan değeri döndürür. (Kabaca) içeriği yüksekliği sıfır (bakınız the W3C CSS2 Recommendation) olduğu içinNedenComputedStyle marjı daraltmayı hesaba katmıyor?

<div style="margin: 10px 0 15px 0"></div> 

Üst ve alt kenar daraltılmış olur:

Örneğin, aşağıdaki öğesine. düzeni sınırlayıcı istemci dikdörtgen önce 10px bir marj ve sonra 5px bir farkla, yani max(0, marginBottom - marginTop) göstermektedir bağlı kenar çöken,

getComputedStyle().marginTop → 10px 
getComputedStyle().marginBottom → 15px 
getBoundingClientRect().top → {top of margin box} + marginTop 
getBoundingClientRect().bottom → idem top 

Ancak: CSSOM yöntemleri bu değerleri döndürür.

Neden getComputedStyle().marginBottom doğrudan 5px'e dönmüyorsa, belirtilen tüm 15px yerine "tüm hesaplamalar yapıldıktan sonra" gerçek değer kullanılır? Bu bir W3C tarafından önerilen davranış mı? (Ben w3.org docs bu konuda hiçbir şey görmedim.)

bu bir hata ya da bir özellik midir? Bir "u" ile

cevap

1

Ben tüm kodu görmüyorum ama işlev adı, aslında olduğunu düşünüyorum "getComputedStyle,".

Yazım hatası? Bu kadar kolay olabilir mi? İlk siz olmazdınız - kendim dahil.

Bu yardımcı olur.

+0

Evet bu bir yazım hatasıydı. Teşekkür –

+0

Mersi, @Martin. – Parapluie

İlgili konular