hasLayout
Silnik Internet Explorera stara się przedstawić niektóre elementy jako prostokąty i tym sposobem ułatwić sobie ich pozycjonowanie i renderowanie. Elementom, które uważa za nadające się do
uproszczonej obsługi nadaje właściwość hasLayout (możliwa do sprawdzenia z poziomu JavaScript).
Należy pamiętać, że cecha ta naprawia błędy, ale niekiedy może ich przysparzać.
- elementy z
hasLayoutmają tendencję do „obcinania” wszystkich elementów wystających poza ich granice (pozycjonowanych absolutnie albo z ujemnym marginesem) -
floatjest bardziej przewidywalnie, ale mniej zgodne ze specyfikacją (np. element zfloatnie może wystawać poza element zhasLayout) - błędnie działa zapadanie marginesów
- obramowanie elementu wychodzi poza jego tło
Wymuszanie hasLayout
Elementy zyskują „layout”, jeśli:
- nada im się wymiary lub
- nada się właściwość
zoom:1(zoomjest eksperymentalnym, słabo zaimplementowanym rozszerzeniem IE) lub - ustawi
position:relativealbooverflow: hidden;(nie działa w każdym przypadku)
Elementy <table>, <object> i kilka innych zawsze mają „layout”.
Ciekawostka
Ten sposób traktowania elementów w IE ma bardzo wiele skutków ubocznych. Niektóre są wręcz dziwaczne. On having layout
pokazuje przykład, w którym hasLayout potrafi nawet zepsuć licznik listy:
<ol><li>raz</li><li>dwa</li><li style="width: 50%">trzy</li><li>cztery</li></ol>
Daje w Explorerze:
1. raz 2. dwa 1. trzy 4. cztery
Zmodyfikowano: 17.02.2007, 05:33