Problemy początkujących z CSS
02 marca 2006
Pierwszym i najpoważniejszym jest brak zrozumienia pojęcia kaskady w CSS. Objawia się to głównie złym stylowaniem linków (z powodu ustawienia zasad dla samego <a/> globalnie), stylem obrazków-hiperłączy umieszczonych w akapicie jak dla zwykłego linka.
Dalej - zapominanie o prawidłowym box modelu. Określa on że na szerokość bloku składa się jego margines, obramowanie, dopełnienie i wartość ustawiona za pomocą width. Obejść można to wstawiając dodatkowy blok w środek i jemu aplikując margines bądź pozostałe dwie właściwości. Najprędzej się można z tym zetknąć poznając zasady budowania layoutów na floatowanych divach. Gdy nagle oczekiwane "25% + 75%" > 100% i jedna kolumna zjeżdza pod drugą bądź pojawia się poziomy pasek przewijania.
Ostatnio natknąłem się na łączenie słów określających pozycję obrazka (left, center, right) z odległościami w pikselach, emach, procentach. Ten zapis jest błędny:
background: url(bullet.png) 5px center no-repeat;
Powiadomi nas o tym walidator. Jeśli potrzebujemy odsunąć obrazek tła o ileś pikseli i jednocześnie ustawić wyśrodkowanie, trzeba skorzystać z 50%. A dla right czy bottom - 100%. Poprawny kod:
background: url(bullet.png) 5px 50% no-repeat;
Następnie mamy może nie błąd, ale brak optymalizacji i konsekwencji. Jeśli blok ma kropkowane obramowanie jednopikselowe, w którym tylko dolna linia jest innego koloru to po co pisać:
border-left: 1px dotted #28FF24;border-top: 1px dotted #28FF24;border-right: 1px dotted #28FF24;border-bottom: 1px dotted #FFF;
Skoro można:
border: 1px dotted #28FF24;border-bottom-color: #FFF;
Podobnie z grubością. Zamiast:
border-left: 3px dotted #28FF24;border-top: 1px dotted #28FF24;border-right: 5px dotted #28FF24;border-bottom: 10px dotted #28FF24;
Wystarczy:
border-style: dotted;border-color: #28FF24;border-width: 3px 1px 5px 10px;
Nie jest powiedziane że używanie CSS-a od razu czyni z nas użytkowników standardów. Należy zapoznać się z różnymi materiałami, także specyfikacjami, bo zaczynanie nauki w ciemno i po omacku często kończy się podobną zupą w regułach jak kiedyś <font/> w HTML-u.


