Perfection or Vanity

Project: Terminated

Blog nie jest już dalej prowadzony ani aktualizowany. Mimo tego, wpisy i komentarze są dalej dostępne. Możesz przeczytać pożegnalny wpis albo przejść do archiwum.

Dziwactwa IE - Listy

12 grudnia 2005

Pionowe przerwy

Najbardziej znany problem - w moim menu pod Internet Explorerem zostają dodane paskudne przerwy. Dlaczego tak się dzieje?

Wszystko przez to, że umieszczamy w nim elementy blokowe. Mogą być to elementy, których blokowość określa DTD, bądź którym zmieniamy kontur przez CSS.

Z tego powodu, wszelkie spacje i tabulatory występujące pomiędzy elementami listy (li) są traktowane zupełnie inaczej niż powinny. Dodana jest przerwa.

Wyjść jest parę:

  1. Zrezygnować z elementów blokowych.
  2. Usunąć białe znaki z listy.
  3. Zmienić zachowanie listy.

Pierwsze rozwiązanie jest podane tylko dla formalności - wiadomo, że jeśli chcemy linki w postaci blokowej, to nie będziemy się ich pozbywać i zmieniać koncepcji.

Usunąć białe znaki możemy w sposób zwyczajny i bardziej elegancki. Pierwszy to po prostu usunęcie wszystkiego pomiędzy </li> a <li>, tworząc jedną długą linijkę kodu. Polecałbym jednak zmianę toku myślenia. Przecież wystarczy zawrzeć wszystkie białe znaki w znaczniku HTML i go tam tak naprawdę nie będzie. A kod poprawny i działający.

No i wreszcie trzecie rozwiązanie. Najlepsze, bo odwołujące się do magicznej własności hasLayout Internet Explorer'a. Czym hasLayout jest, a czym nie, mam zamiar opisać za jakiś czas - na chwilę obecną powinno nam wystarczyć, że elementy które „nie mają layoutu” są bardzo często psute przez przestrzały silnik renderujący Explorer'a.

Aby zmusić listę do przyjęcia layoutu, należy ustawić elementom z zachowaniem blokowym szerokość bądź wysokość. O ile pierwszy sposób może być niedostępny dla kodera, to drugi jest bardzo ciekawy i prosty. Ustawmy height na 1% i przekonajmy się, że odstępy znikają. :)

Znikające markery

Gdy ustawimy szerokość bądź wysokość dla listy (<ol/>, <ul/>), markery pozycji znikają, bądź są umiejscowione w zły sposób. Jak mocno się zastanowić, to widzimy że kolejny problem wyświetlania jest związany z hasLayout. Bo przecież, jak już wspominałem nadajemy layout elementowi, gdy ustawimy jego wymiary.

Wyściem z tej dziwacznej sytuacji jest w większości przypadków dodanie marginesu dla elementów listy.

Numerowane listy i licznik

Uporaliśmy się z jednym problemem, zmierzamy ku następnemu. Gdy przytrafia nam się taka sytuacja, kiedy to jeden z elementów listy nagle zaczyna używać jakby nowego licznika, można wyrywać sobie włosy z głowy garściami. Ale my już się domyślamy, że znowu chodzi o posiadanie layoutu przez element. W tym przypadku jeden z elementów listy dostał określoną wysokość.

Co więcej - gdy będziemy potrzebowali umieścić więcej niż jedną linijkę tekstu w takiej pozycji listy, to marker pojawi się na dole, a nie na górze. Wyjściem z tych sytuacji jest przedefiniowanie tego co chcemy osiągnąć i podejście od drugiej strony. Zawsze znajdzie się wyjście, a nie ma nic gorszego jak dodawanie kolejnych kawałków kodu, żeby uporać się z poprzednimi błędami.

Oczywiście są także inne możliwości zmiany hasLayout na true i wynikające z tego komplikacje i ułatwienia oraz błędy pisania layoutów dla IE, ale jak wspominałem nie będę teraz się w nie wgłębiał. Zrobię to przy innej okazji, mam nadzieję, że dość bliskiej. Wierzę jednak, że coś zaczyna nam już świtać odnośnie problemów z Internet Explorerem i wyświetlaniem nowoczesnych układów stron. ;-)

Informacje i hiperłącza

Blog o projektowaniu zgodnych ze standardami stron internetowych.

Praktyczne przykłady, sztuczki CSS, sposoby obchodzenia błędów przeglądarek, lekki i nieinwazyjny JavaScript, użyteczny design, dostępność i skrypty użytkownika.

RSS

Informacje o wpisie

Napisał riddle 12 grudnia 2005 o 18:32

Kategorie: CSS, HTML & Semantyka, Internet Explorer

Dodaj do:

Wpisy archiwalne

Archiwum miesięczne

Dzięki!

Dodaj bloga do Technorati Favorites Dodaj bloga do Del.icio.us Blog należy do sieci 10przykazań.com

  1. Dzięki wielkie, już myślałem, że wina leży po winie mojego kodu i zamierzałem się poddać i nie zważać na użytkowników IE :) Takich problemów się nie spodziewałem…

  2. (Komentarz zmodyfikowany 27.02.2007 o 00:38)

    Witam.
    Mam pytanie jak usunąc niechciany Link z wyszukiwarki Internet Eksplorer.
    Proszę o odpowiedz.
    Z góry dziekuję

  3. Droga Karolino,

    Internet Explorer nie jest wyszukiwarką, ale przeglądarką, podobnie jak Mozilla Firefox, Opera, Safari i Conqueror.

    PS. o jaki link chodzi i na jakiej stronie.
    LInki wstawiają autorzy stron i nie da się ich usuwać.

  4. Tego szukałem, dzięki Riddle :)

  5. Bardzo dobrze ze takie strony instnieja:)

Dodaj komentarz

Do formatowania komentarzy używaj Textile (HTML nie działa). Szczególnie jeśli wklejasz większe fragmenty kodu. W razie niepewności użyj podglądu komentarza.

Wypowiedzi obraźliwe, infantylne oraz nie na temat będą moderowane – pisząc postaraj się zwiększyć wartość dyskusji.

Komentarze nie służą do wysyłania wiadomości albo informowania o błędach, itd. Chcesz coś mi napisać – skontaktuj się.