Cascading Style Sheets (CSS) to standard pozwalający na dodanie do dokumentu HTML informacji o wyglądzie.
W stylu można opisać niemal każdy aspekt wyglądu strony, między innymi kolory, obramowania, przepływ tekstu, krój i rozmiar czcionki, położenie elementów na stronie.
Twórcy stron powinni jednak brać pod uwagę fakt, że nie wszystkie elementy CSS są obsługiwane przez wszystkie przeglądarki. W szczególności wiele elementów CSS nie jest poprawnie obsługiwanych przez najpopularniejszą przeglądarkę: Internet Explorer :(. Znacznie lepiej jest w Mozilli, Firefoxie (polecam), Operze.
Definicję stylu można umieścić:
Plik: zemsta1.html.
Oto przykład (fragment "Zemsty" Fredry), w którym informacje o stylu umieszczone są bezpośrednio w elementach, których dotyczą.
Załóżmy, że wypowiedzi poszczególnych osób chcemy pokolorować różnymi kolorami, a didaskalia chcemy zapisać czcionką pochyloną.
<p style="font-style: italic">Papkin, Śmigalski, kilku służących z kijami...</p> <h3 style="color: blue">PAPKIN</h3> <p style="color: blue">Panie majster, proszę waści</p>
Zobacz też źródło całego dokumentu.
Jak widać, aby opisać w ten sposób wygląd całej strony trzeba dopisać bardzo dużo tekstu. A co jeśli postanowimy zmienić kolory albo didaskalia pisać prostą, ale mniejszą czcionką?
Informacja o stylu dotycząca elementu jest dziedziczona przez jego podelementy. Na przykład we fragmencie:
<ol style="color: red"> <li>Telewizja Polska: <ol> <li>TVP1</li> <li>TVP2</li> </ol> </li> <li>Grupa ITI: <ol> <li>TVN</li> <li style="color: blue">TVN 24</li> </ol> </li> </ol>
Kolor czerwony będzie miała nie tylko zewnętrzna lista, ale także listy zagnieżdżone.
Informacja o stylu może być w podelemencie „nadpisana”, w powyższym przykładzie TVN 24 będzie miał jednak kolor niebieski.
Nie zawsze dokument w naturalny sposób zawiera takie elementy, które obejmują cały fragment dokumentu, któremu chcemy nadać jakiś styl.
Dlatego HTML zawiera dwa elementy bez nadanego znaczenia semantycznego, ale umożliwiające grupowanie fragmentu dokumentu i nadanie mu określonego stylu.
Elementu div
używa się na poziomie bloków (może on zawierać
inne bloki, nagówki, akapity, listy, tabele).
Elementu span
używa się na poziomie tekstu
wewnątrz wierszowego (tzn. może zawierać inne span
-y
wyróżnienia, cytaty itp., odnośniki, obrazki, ale nie paragrafy
div
-y, listy itp.).
div
Plik: zemsta2.html.
W tym przykładzie całe wypowiedzi osób umieszczone są
w elementach div
. Pozwala to na umieszczenie
jednej definicji stylu dla całej wypowiedzi.
Dodatkowo styl jest zdefiniowany w paragrafach, które są didaskaliami.
<p style="font-style: italic">Papkin, Śmigalski, kilku służących z kijami, później Rejent i Cześnik w oknach</p> <div style="color: blue"> <h3>PAPKIN</h3> <p>Panie majster, proszę waści</p> <p>Przyzwoicie, grzecznie, ładnie,</p> </div>
Zobacz też źródło całego dokumentu.
Teraz jest już znacznie mniej definicji stylu. Nadal jednak te same definicje muszą być umieszczane wiele razy w dokumencie, a gdy chcemy zmienić styl, musimy pamiętać, aby zmienić go we wszystkich miejscach.
Stylu nie trzeba pisać w każdym elemencie, którego dotyczy. Zamiast tego można raz zdefiniować styl, który będzie stosowany dla wszystkich takich samych elementów.
Załóżmy na przykład, że nie chcemy umieszczać marginesu przed/po akapicie.
Odpowiednia definicja stylu to margin: 0
.
Zamiast umieszczać ją w każdym znaczniku p
umieścimy ją w osobnym pliku,
tzw. arkuszu stylu, a w dokumencie powiemy, że chcemy ten arkusz dołączyć.
Pliki: zemsta3.html, styl3.css.
Nagłówek w pliku HTML:
<link rel="stylesheet" type="text/css" href="styl3.css">
Tak wygląda plik CSS (arkusz stylu):
p { margin: 0; } h3 { margin: 2pt 0; font-weight: bold; }
Spraw, aby między wypowiedziami poszczególnych osób pojawił się margines.
Odpowiedni wpis w stylu to np. margin-top: 5pt
. Tylko gdzie go wpisać?...
Należy zapisać piki HTML i CSS u siebie na dysku i zmienić tylko plik CSS. Efekty powinny być widoczne w przeglądarce po otwarciu pliku HTML (potem można odświeżać F5).
Do tej pory nauczyliśmy się jak podać jeden styl dla wszystkich elementów p
,
inny (ale też jeden) dla wszystkich elementów div
itd.
Ale często jest tak, że niektóre elementy tego samego typu mają wyglądać inaczej. Np. u nas wypowiedzi poszczególnych osób chcemy oznaczyć innymi kolorami, a didaskalia chcemy mieć czcionką pochyloną.
Do rozróżniania elementów tego samego typu, które mają wyglądać różnie służą klasy. Wszystko powinien wyjaśnić poniższy przykład.
Pliki: zemsta4.html, styl4.css.
Tak klasy oznacza się w HTML:
<p class="did">Papkin, Śmigalski, kilku służących z kijami, później Rejent i Cześnik w oknach</p> <div class="papkin"> <h3>PAPKIN</h3> <p>Panie majster, proszę waści</p> ... </div>
A tak wykorzystuje w CSS:
div.papkin { color: green; } div.rejent { color: blue; }
Dodaj brakujące wpisy o klasach w pliku HTML (dla każdej osoby osobna klasa w div
).
Dodaj brakujące definicje stylu w CSS tak, aby każda osoba miała inny kolor.
W CSS można wyrazić praktycznie wszystkie aspekty wyglądu dokumentu (strony). Z tym, że nie wszystkie zrozumie IE :( (polecam Firefoxa!).
Styl określa się przypisując cechom odpowiednie wartości. Poniżej wymieniam niektóre cechy dostępne w wersji 2 CSS.
cecha | dopuszczalne wartości | znaczenie |
---|---|---|
color | określenie koloru | kolor czcionki |
background-color | określenie koloru | kolor tła |
Kolor można okreslić poprzez nazwę:
black
,green
,silver
,lime
,
gray
,olive
,white
,yellow
,
maroon
,navy
,red
,blue
,
purple
,teal
,fuchsia
,aqua
Można też podać dowolny kolor w systemie RGB: dla każdego z kolorów składowych (czerwony, zielony, niebieski) podaje się wartość tego koloru w przedziale od 0 do 255.
div.papkin { color: green; } div.rejent { color: rgb(0,24,255); } body { background-color: rgb(220,220,230); }
Elementy z poziomu bloków (np. div
, p
, ol
, li
)
są wyświetlane jako prostokątne „pudełko”. Mogą zawierać inne pudełka oraz tekst
(no i obrazki itp.).
W CSS można okreslić cechy tych pudełek, takie jak marginesy, obramowanie, położenie.
cecha | dopuszczalne wartości | znaczenie |
---|---|---|
margin | określenie długości | margines zewnętrzny |
padding | określenie długości | margines wewnętrzny |
border-width | określenie długości | grubość obramowania |
border-style | none , solid , dotted , dashed , inset , outset i inne |
styl obramowania |
border-color | określenie koloru | kolor obramowania |
Długość podaje się jako wartość i jednostkę miary. Jednostki miary to m.in. piksel, punkt drukarski. Przy zerze nie trzeba podawać jednostki.
Każdą z cech dotyczących pudełek można poda wspólnie dla wszystkich czterech stron, ale także osobno w kolejności: góra, prawo, dół, lewo.
Pliki: zemsta5.html, styl5.css.
div { margin: 5pt; padding: 0 2pt 0 4pt; border-width: 4px; border-style: outset; border-color: red; background-color: silver; }
cecha | dopuszczalne wartości | znaczenie |
---|---|---|
font-family | serif , sans-serif , monospace i inne lub nazwa czcionki w apostrofach, np. 'Tahoma' |
krój czcionki |
font-size | larger , smaller , small , medium , x-large itp. lub określenie długości |
rozmiar czcionki |
font-weight | normal , bold i inne |
waga (grubość) czcionki |
font-style | normal , italic i inne |
styl czcionki |
font-stretch | normal , wider , narrower i inne |
zagęszczenie napisu |
cecha | dopuszczalne wartości | znaczenie |
---|---|---|
text-align | left , center , right , justify |
wyrównanie tekstu |
text-indent | określenie długości | wcięcie pierwszego wiersza w akapicie |
To tylko niewielka część cech, które można określić w CSS. Pełna specyfikacja znajduje się tu.
Ciekawą ilustracją na jak wiele pozwala CSS jest ta strona. Tam kod strony w HTML się nie zmienia, tylko „podpinane” są różne style CSS, jak widać wygląd strony zmienia się zupełnie.