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.

Pierwszy fragment tłumaczenia (i interpretacji) artykułu „On having layout” wykonane na licencji Creative Commons.

Obszerny wstęp do zagadnienia (notabene także tego tłumaczenia) jest dostępny we wpisie „hasLayout i jego implikacje, część I”.

Początki

Obdarowanie elementu tak zwanym „layoutem” może naprawić wiele niespójności w sposobie renderowania (wyświetlania) stron przez Internet Explorera.

John Gallant i Holly Bergevin zaklasyfikowali te niezgodności do błędów związanych z wymiarami, co oznacza, że zwykle mogą być naprawione przez zaaplikowanie elementowi szerokości bądź wysokości. To rozwiązanie prowadzi do pytania dlaczego „layout” - układ, oznaczony przez wymiary - zmienia renderowanie oraz zależności między elementami. Pomimo trafności pytania, trudno na nie odpowiedzieć. W tym artykule autorzy koncentrują się na niektórych aspektach tego skomplikowanego problemu. Więcej bardziej dokładnych i szczegółowych przykładów oraz dyskusji można będzie znaleźć w dołączonych hiperłączach.

hasLayout - Definicja

Dla Internet Explorera pod Windows „layout” jest dość specyficznym pomysłem określającym w jaki sposób - odnosząc się do okna - elementy są rysowane, w jaki wyznaczają granice dla swojej zawartości, jak oddziałują wzajemnie i odnoszą się do innych elementów oraz jaki mają wpływ na wysyłanie zdarzeń przez aplikację bądź użytkownika.

Programiści Microsoftu zadecydowali, że elementy posiadające wokoło siebie blok powinny być w stanie uzyskać „właściwość”, którą określają jako layout, bądź hasLayout.

hasLayout prawdopodobnie nie jest ani właściwością ani nawet zachowaniem - raczej odziedziczoną po silniku koncepcją renderowania, która nadaje własność elementowi. Ta własność renderowania może być nieodwracalnie przełączona na wartość logiczną true przez niektóre właściwości CSS. Także niektóre elementy HTML domyślnie posiadają layout.

Karty rozdane, trzeba grać

Problem z hasLayout wpływa na projektantów (i koderów) na wszystkich poziomach zaawansowania. Layout (zwykle jego brak - przyp. tłum.) ma trudny do przewidzenia i niecodzienny wpływ na wyświetlanie się bloków go posiadających. To samo dotyczy się jego implikacji na elementy potomne wewnątrz ram pudełka.

Konsekwencjami posiadania layoutu (bądź jego braku) może być:

  • Wiele błędów elementów pływających (floatów)
  • Inne traktowanie podstawowych właściwości bloków.
  • Zapadanie się marginesów pomiędzy pojemnikiem a jego potomkami.
  • Różnorakie problemy z konstrukcją list.
  • Różnice w umieszczeniu obrazków teł.
  • Różnice między przeglądarkami podczas używania skryptów

Skąd layout przychodzi

W przeciwieństwie do standardowych właściwości lub nawet specyficznych właściwości CSS (-moz, -op - przyp. tłum.) layout nie jest przydzielany przez deklaracje CSS. Innymi słowy, nie ma „właściwości layout”.

Poniższe elementy wydają się posiadać layout, nawet jeśli dokumentacja MSDN nie wyraża się o tym jasno.

  • <table>
  • <td>
  • <body>
  • <img>
  • <hr>
  • <input>, <select>, <textarea>, <button>
  • <iframe>, <embed>, <object>, <applet>
  • <marquee>

Właściwości CSS

Poniższe właściwości CSS oraz ich wartości pozwalają nadać layout elementowi, jeśli zostaną mu zastosowane.

  • position: absolute
    Odnosi się do otaczającego bloku i tutaj właśnie zaczynają się kłopoty
  • float: left|right
    Pływanie elementów zawiera w sobie wiele dziwactw ze względu na niektóre aspekty layoutu elementu
  • display: inline-block
    Czasem jest jedynym wyjściem jeśli element jest typu liniowego lecz potrzebuje layoutu. Włączenie hasLayout jest najprawdopodobniej jedynym prawdziwym efektem tej właściwości.
  • width: dowolna wartość
    Jest zwykle poprawką używaną kiedy hasLayout psuje zamierzony efekt.
  • height: dowolna wartość
    height: 1% jest używany w Holly Hack (najbezpieczniej używać 1px - przyp. tłum.)
  • zoom: dowolna wartość
    Specyficzna dla MS, nie waliduje się. Zoom: 1 może zostać użyte dla debugowania.
  • writing-mode: tb-rl
    Specyficzna dla MS, nie waliduje się.

Cdn. Część III

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 25 stycznia 2006 o 04:08

Kategorie: CSS, 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. Chciałbym zaznaczyć, że tak naprawdę nie wiem czy dokończę tłumaczenie caluśkiego artykułu, licencja pozwala mi usuwać części, które moim zdaniem są bez sensu lub są zbytnim laniem wody (które to mieliście okazję czytać w cz. I) i będę to robił.

    Nie wiem jak rozwinie się dalej artykuł, czy będę tłumaczył tylko czy opisywał i streszczał czy naprzemiennie. Nie chciałbym pisać tak rozwlekle jak zrobili to autorzy, bo jest to bardzo ciężkostrawne. Do tego w paru miejscach nie zgadzam się z autorami, przesadzają bądź piszą zbyt ogólnikowo, a czasem zagłębiają się za mocno w szczegóły.

    Anyway, zobaczymy. :)

  2. Nie poddawaj sie :)
    czekaj z niecierpliwoscia na dalsza czesc :)

  3. ja czekam na dalsza częśc :)

  4. już nie mogę się doczekać tego ciągu dalszego :]

  5. Apostrofu używamy przy odmianie słów obcych tylko wtedy, gdy na końcu znajdują się samogłoski nieme.

    Microsoftu, Explorera, layoutu, floatów.
    Riddle'a, Google'a.

  6. Ciekawe, ciekawe, ale praktyka bylaby ciekawsza ;)

  7. @Riddle: Na MDC EN jest wiele artykułów o CSS do przetłumaczenia na język ojczysty. Może wspomożesz projekt swoim doświadczeniem?

    Artykuły są rzeczowe, krótkie i dla początkujących i zaawansowanych :P Więc?

  8. hm.. szukam strony gdzie znajde profesjolany kurs css

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ę.