hasLayout i jego implikacje, cz. III
16 lutego 2006
Wcześniej: część I (wprowadzenie), część II (rozwinięcie i techniczne informacje).
Mimo, że miało być tutaj dalsze tłumaczenie postanowiłem, że lepiej dać coś od siebie, a nie na sucho przeklepywać słowa. Więc jak pamiętamy z poprzedniej części, aby zaaplikować layout możemy skorzystać z jednej z właściwości CSS. W tym miejscu polecam stosowanie przede wszystkim komentarzy warunkowych. Aplikowanie layoutu elementom przez błędy parsowania CSS może i działają, ale jest to rozwiązanie krótkowzroczne, o czym można się przekonać na przykładzie IE7.
<!--[if lte IE 7]><![endif]-->
W swoich stronach pisanych dla IE5.5+ (choć naprawdę już rzadko ktoś wymaga wsparcia dla IE5.x - głównie dla IE6) korzystam z niestandardowej właściwości zoom: 1. Użycie innej wartości niż jeden spowodowałoby powiększenie bądź pomniejszenie elementu, ale w takiej postaci CSS po prostu przełączy layout dla elementu.
Moje doświadczenie z layoutem i dziwactwami IE, pokazało że nie ma co liczyć na obszerne opisy każdego przypadku. To błędy i zachowują się one w magiczny sposób, czego dowodem jest ich usunięcie w IE7. Jeśli coś zaczyna znikać, wychodzić poza blok, pojawiają się problemy z odległościami - po pierwsze i zawsze sprawdź czy element ma hasLayout.
Jeśli ma - spróbuj się go pozbyć. W razie gdyby blok potrzebował mieć wymiary, zmień zależności i może wyjdzie że wcale mieć nie musi. Jeśli natomiast nie ma layoutu - zaaplikuj go, najlepiej właśnie przez zooming. Większość problemów znika jak ręką odjął.
Przykładem jest pierwszy nagłówek drugiego poziomu na tym blogu. Obejrzycie bloga w IE i zobaczcie jak ładnie znika i pojawia się to pomarańczowe tło z lewej strony podczas przewijania. Po zaaplikowaniu layoutu dla h2 problem przestanie istnieć, zakład? :-)


