Warsztaty komputerowe – ćwiczenia 6: CSS.

Zasady działania CSS

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ć:

Informacja o stylu bezpośrednio w elementach

Przykład 1. Zemsta - wersja ze stylem w elementach

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ą?

Dziedziczenie

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.

  1. Telewizja Polska:
    1. TVP1
    2. TVP2
  2. Grupa ITI:
    1. TVN
    2. TVN 24

Grupowanie

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

Przykład 2. Zemsta - wersja z elementami 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.

Globalne definicje stylu

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

Przykład 3.

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;
}

Zadanie 1.

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

Klasy

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.

Przykład 4.

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;
}

Zadanie 2.

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.

Kolory

cechadopuszczalne wartościznaczenie
colorokreślenie kolorukolor czcionki
background-colorokreślenie kolorukolor 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.

Przykład 5.

div.papkin {
	color: green;
}

div.rejent {
	color: rgb(0,24,255);
}

body {
	background-color: rgb(220,220,230);
}

Pudełka

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.

cechadopuszczalne wartościznaczenie
marginokreślenie długościmargines zewnętrzny
paddingokreślenie długościmargines wewnętrzny
border-widthokreślenie długościgrubość obramowania
border-style none, solid, dotted, dashed, inset, outset i inne styl obramowania
border-colorokreślenie kolorukolor 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.

Przykład 6.

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;
}

Czcionka

cechadopuszczalne wartościznaczenie
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

Przepływ tekstu

cechadopuszczalne wartościznaczenie
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.


Valid XHTML 1.1Valid CSS