.website {cascading-style-sheets:100%;}

HTML jest językiem opisu struktury dokumentu, nie jego wyglądu

CSS (Cascading Style Sheets) czyli kaskadowe arkusze stylu to podstawowy sposób na oddzielenie treści dokumentu od jego wyglądu. Przy ich pomocy można bardzo łatwo i dokładnie kontrolować wygląd dowolnego elementu strony www. Konsekwentne zastosowanie CSS całkowicie zmienia zarówno proces projektowania jak i tworzenia dokumentów HTML, upraszcza cały proces a przede wszystkim zdecydowanie ułatwia wprowadzanie zmian. W dokumencie HTML pozostają jedynie znaczniki strukturalne oznaczone identyfikatorami i przypisane do klas a sam wygląd opisuje się przy pomocy CSS.
W prosty sposób opisują sposób wyświetlania elementów HTML przez przeglądarkę.
Bez CSS bylibyśmy skazani na rozmieszczanie wszystkiego w zagnieżdżonych tabelach i wyrównywanie oraz rozmieszczanie elementów za pośrednictwem zupełnie do tego nie przeznaczonych elementów i atrybutów (np. cellpadding i cellspacing tabeli lub komórki) lub skomplikowanych sztuczek w rodzaju 'przezroczystego gifa', kod byłby zaśmiecony znacznikami font i ukryty w nieczytelnej abrakadabrze tabel w tabelach w tabelach... Na siłę i w sztuczny sposób dopasowywane, pomieszane ze sobą elementy strukturalne, graficzne i opisujące wygląd tworzyłyby zupełnie nieprzejrzystą i niefunkcjonalną gmatwaninę znaków.

Wstęp

Jest konieczny, bo muszę się zastrzec, że poniższe uwagi mają charakter bardziej reklamówki czy ściągi, niż przybliżenia oficjalnej specyfikacji, chociaz była ona głównym źródłem i starałem się wszytkie - moim zdaniem - najważniejsze rzeczy w niej zawarte przynajmniej tu zasygnalizować. W pisaniu tej ściągi pomocne były mi artykuły Oktawiusza Kaczy 'Kaskadowe arkusze stylów' (Magazyn Internet, 6/99) oraz Marka Łaptaszyńskiego 'Kaskadowe arkusze stylów' cz.1-3 (Magazyn Internet, 12/99, 1/00, 2/00), głównie w kwestii układu materiału w niektórych rozdziałach i polskiego nazewnictwa oraz opisu CSS2. Ostateczny wpływ na to co i w jaki sposób się tu znalazło ma moje doświadczenie, dlatego wszystkie informacje możecie zastosować tylko na własne ryzyko.
I jeszcze jedna ważna uwaga: wszystko co tu jest napisane dotyczy CSS1, dla CSS2 istnieje osobny rozdział. To rozgraniczenie jest konieczne ponieważ CSS2 nie jest jeszcze w pełni interpretowany
Będę wdzięczny za wszelkie informacje o znalezionych tu błędach lub nieścisłościach.

Uwaga dla użytkowników Internet Explorera: decyzja użycia najgorszej przeglądarki nie może być najlepsza. Starałem się dopasować tę witrynę dla Internet Explorera, tak żeby nie pojawiły się zbyt wielkie defekty, ale jednocześnie postanowiłem nie wspierać złego obyczaju używania MSIE i co spowodowało, że w tej przeglądarce wygląda najgorzej. Nie dlatego, żebym coś popsuł; po prostu tak działa Internet Explorer. Sugeruję użycie Mozilli lub Opery.

Budowa

CSS podobnie jak HTML i javascript jest to zwykły dokument tekstowy (lub jego fragment). Definicja stylu niezależnie od tego gdzie jest umieszczona zbudowana jest zawsze w ten sam sposób:

nazwa_właściwości:parametr;

i wszystkie są dla jednego znacznika - jeśli definicje są umieszczone w sekcji head, lub osobnym pliku - zgrupowane w nawiasach w ten sposób:

selektor {nazwa_właściwości:parametr; nazwa_właściwości:parametr; nazwa_właściwości:parametr;}

Dla przykładu: krawędź ma własciwości style width i color, więc np:

img {border-style:solid; border-width:1px; border-color:black;}

oznacza, że znacznikom img została przypisana krawędź z lini ciągłej, grubości jednego piksela i koloru czarnego, można to skrócić do takiej formy:

img {border:solid 1px black;}

lub

img {border:solid 1px #000;}

natomiast:

img {border:none;}

oznacza brak krawędzi.

Selektory

Istnieje wiele metod, żeby poszczególne właściwości odnieść do konkretnych obiektów, do precyzyjnego określenia elementu mającego konkretną właściwość służy kilka rodzajów selektorów.

Sposoby umieszczenia CSS

Style można umieszczać na wiele sposobów:

Komentarze

Jednostki

Domyślnie dodatnie, w niektórych wypadkach można wpisać wartości ujemne, z oczywistych powodów nie wpisujemy jednostki wartości jeśli wynosi zero, ważne: między znakiem (jeśli stosujemy wartość ujemną) wartością a określeniem jednostki nie może być spacji

Sposób wykonywania styli

Box model

W ten sposób wygląda blokowy model obiektu - pomijając atrybuty odnoszące się do wnętrza (tła, koloru fontu, wyrównania tekstu) ma przypisane następujące własności:
Wartość width może zostać przypisana do każdego z tych elementów z jednakowa z każdej strony wielkością ale można też różnicować jej wartość zawsze w tej kolejności:
1
4
 
2
3
Na przykładzie określenia grubości krawędzi (border-width) wygląda to w ten sposób:
border-width:0 2px 4px 6px;
podane kolejno cztery wartości określają najpierw górę, potem lewą stronę, dół a na końcu prawą
natomiast dwie:
border-width:1px 6px;
określają najpierw łącznie górę i dół a potem łącznie oba boki
jeśli wpiszemy trzy wartości:
border-width:1px 3px 6px;
pierwsza opisze górę druga oba boki łącznie a trzecia dół
W ten sam sposób można zróżnicować wielkość odstępu wewnętrznego (padding) i marginesu (margin).

Blok po prawej stronie jest pierwszym w kolejności i ma atrybut float:right; a trzy z lewej nie mają w ogóle tego atrybutu. Zachowanie proporcjonalności zapewniłem wpisując procentowe wartości width.
margin
border-width
padding
obiekt
szerokość obiektu:
width
szerokość bloku:
width + padding + border-width + margin
jak widać wartości padding, border i margin są dodawane do określonej w stylu obiektu wartości width (i tak samo height) co oznacza, że opisując wielkość odstępu wewnętrznego, grubość krawędzi czy marginesu jesteśmy jakby na zewnątrz obiektu.
Podawane wartości procentowe odnoszą się zawsze do wielkości obiektu, w którym są zagnieżdżone; wpowyższym przykładzie obiekty div mają wyznaczone procentowo wartości width, zaczynając od zewnętrznego: 30%, 80%, 90%, 80%.
Oczywiście nie obyło się bez problemów ze strony Internet Explorera, który ma niestandardowy model obiektów - musiałem zastosować metodę Tanteka przypisując wszystkie trzy obiekty po lewej stronie do klasy "boxmodel" o własnościach:
width:90%; "\"}\""; width:30%;

Lista właściwości

CSS 2

(opis CSS2 jest streszczeniem informacji z artykułu Marka Łaptaszyńskiego 'Kaskadowe arkusze stylów' cz.2 - Magazyn Internet; 1/00)
Z oczywistych względów podstawowym założeniem CSS Level 2 jest wsteczna kompatybilność z CSS Level 1. Oznacza to, że każdy dokument CSS1 jest również poprawnym dokumentem CSS2. Ale specyfikacja, która w przypadku CSS1 była po prostu jednym ciągiem tekstu została podzielona na osobne rozdziały opisujące poszczególne grupy właściwości. Jest to przygotowanie do przyszłej modułowej budowy standardów W3C.
Najważniejsze zmiany to preferowanie stylów użytkownika (w przypadku konfliktu) oraz nowe selektory (głownie :hover, który jest poprawnie realizowany przez wszystkie nowoczesne przeglądarki - na jego użyciu zbudowano wiele interesujących technik) Podstawowe różnice:

Odnośniki

Tutoriale:

CSS sites:

Artykuły:

W3C:

Walidatory:

 
10%
20%
30%
40%
50%
60%
70%
80%
90%

[ redesign ] || [ na górę strony ]