Wykład 3 - część I. I. TABELE 1
I. Tabele Struktura tabeli - HTML Najprostsza tabela składa się z elementu <table> oraz komórek <td> pogrupowanych w rzędy <tr>. Podstawowa struktura kodu tabeli 3x4 wygląda zatem następująco: <table> //TABELA// <tr> //RZĄD// <td> </td> //KOMÓRKA// <td> </td> <td> </td> </tr> <tr> <td> </td> <td> </td> <td> </td> </tr> <tr> <td> </td> <td> </td> <td> </td> </tr> <tr> <td> </td> <td> </td> <td> </td> </tr> </table> 2
I. Tabele Struktura tabeli - XHTML <table summary="opis"> //Opis - nie jest wyświetlany// <thead> //Nagłówek tabeli// <tr> //wiersz nagłówka (może ich być więcej niż 1)// <th>nagłowekl</th> //Komórka nagłówka// <th>nagłowek2</th> </tr> </thead> //koniec nagłówka// <tfoot> //stopka tabeli// <tr> //wiersz stopki// <td>stopkal</td> //komórka stopki// <td>stopka2</td> </tr> </tfoot> //koniec stopki// <tbody> // sekcja body tabeli// <tr> //wiersz// <td>a11</td> //komórka// <td>a12</td> </tr> <tr> <td>a21</td> <td>a22</td> </tr> <tr> <td>a31</td> <td>a32</td> </tr> </tbody> </table> 3
I. Tabele Szerokość tabeli i kolumn Jak zmienić szerokość i pozycję tabeli? <table style="width: 100%;"> - szerokośd może byd podana w procentach (np. 100% szerokości okna); pikselach (px) czy też w centymetrach (cm) 4
I. Tabele Obramowania tabeli <table border="3"> - wywodzi się z poprzednich wersji języka HTML i umożliwia sterowanie obramowaniem wszystkich komórek tabeli na raz. Szerokośd obramowania podaje się jako wartośd atrybutu border, podanie zera jako szerokości usuwa obramowanie. <table style="border: 1px solid blue;"> - wykorzystuje atrybuty stylu CSS (atrybut stylu border, którego pierwszy parametr określa szerokośd obramowania, drugi styl, a trzeci kolor). UWAGA: ta konstrukcja powoduje, że obramowaniem otaczana jest cała tabela, lecz nie poszczególne komórki. 5
I. Tabele Obramowanie tabeli PRZYKŁAD: <table style="border: 5px double red" summary="tabela testowa">... // tabela z poprzedniego przykładu//... </table> 6
I. Tabele Obramowanie komórek W CSS można przypisad atrybut stylu border każdej komórce tabeli z osobna. <td style="border: 1pt solid green;">...</td> <td style="border: 2pt dashed blue;">...</td> <td style="border: 3pt dotted red;">...</td> Dotyczy to także komórek nagłówka i stopki tabeli <th style="border: 2pt solid green"> Nagłowek</th> <td style= border: 3 double red>stopka</td> 7
I. Tabele Kolor tła i tekstu tabeli Aby zmienid kolor tła tabeli i jej komórek za pomocą stylów CSS, wykorzystuje się atrybuty z rodziny background (głównie background-color). Zmiana koloru tła tabeli automatycznie indukuje zmianę koloru tła wszystkich komórek, których barwy tła nie określiłeś. Upraszcza to kompozycję wielobarwnych tabel. <table style= background-color: red> <td style= background-color: blue>...</td> Aby zmienid rozmiar, kolor i krój czcionki używamy poznanych juz atrybutów CSS (color: font-family: font-size: itp). Można je stosowad do całej tabeli <table>, lub do pojedynczych komórek <td>. 8
I. Tabele Jak określić marginesy komórek tabeli? <table cellpadding="5" cellspacing="5"> całej tabeli - działa dla cellpadding -określa szerokośd marginesu wewnątrz komórki określa odsunięcie zawartości komórki (tekstu, obrazu) od krawędzi. cellspacing - określa szerokośd marginesu wokół komórki a więc rozsunięcie komórek. Nadanie mu wartości 0 spowoduje zlikwidowanie obramowania" powstałego z tła tabeli. W razie CSS można sterowad szerokością marginesów wewnętrznych pojedynczych komórek. <td style= padding: 10px >...</td> 9
I. Tabele Wyrównanie tekstu w tabeli Do wyrównywania zawartości komórki czyli elementu td lub th służy atrybut stylu text-align, który może przyjmowad następujące wartości: left wyrównanie do lewego marginesu, right wyrównanie do prawego marginesu, center wyśrodkowanie, justify wyrównanie do obu marginesów (justowanie). Za wyrównanie zawartości komórki w pionie odpowiada atrybut stylu vertical-align, któremu można przypisad jedną z następujących wartości: top wyrównanie do górnego marginesu, bottom wyrównanie do dolnego marginesu, middle wyśrodkowanie 10
I. Tabele Wyrównanie tekstu w tabeli Przykład: 11
I. Tabele Wyrównanie tekstu w tabeli Przykład - rozwiązanie <table cellpadding="3" cellspacing="0" border="l" style="width:100%;" sunrnary="scalanie"> <tr style="height: 1.5cm;"> <td style="width: 33%; text-align: left; vertical-align: top;">lewo, góra</td> <td style="width: 33%; text-align: center; vertical-align: top;">środek, góra</td> <td style="width: 33%; text-align: right; vertical-align: top;">prawo, góra</td> </tr> <tr style="height: 1.5cm;"> <td style="text-align: <td style="text-align: left; vertical-align: middle;">lewo, środek</td> center; vertical-align: middle;">środek, środek</td> <td style="text-align: right; vertical-align: middle;">prawo, środek</td> </tr> <tr style="height: 1.5cm;"> <td style="text-align: left; vertical-align: bottom;">lewo, dół</td> <td style="text-align: center; vertical-align: bottom;">środek, dół</td> <td style="text-align: right; vertical-align: bottom;">prawo, dół</td> </tr> </table> 12
I. Tabele Scalanie komórek tabeli 13
I. Tabele Scalanie komórek tabeli Jak scalić komórki w poziomie? Aby scalid sąsiadujące komórki tabeli, należy usunąd zbędne elementy <th> lub <td>, zaś dużą, scaloną komórkę uzupełnid atrybutem colspan informującym o liczbie komórek odpowiadających scalonej komórce. Na przykład, jeżeli chcesz scalid ze sobą trzy komórki: <td>...</td> <td>...</td> <td>...</td> wynikowy kod będzie miał następującą postad: <td colspan="3">...</td> 14
I. Tabele Scalanie komórek tabeli Jak scalić komórki w pionie? W podobny sposób można uzyskad efekt rozpięcia komórki na kilku wierszach. W tym przypadku skorzystamy z atrybutu rowspan elementu td z najwyższego wiersza oraz usuniemy elementy td z wierszy poniżej. 15
I. Tabele Scalanie komórek tabeli Jak scalić komórki w pionie - przykład <table summary="scalanie"> <tr> <td rowspan="2">nagłówek</td> <td>komórka 1.2</td> <td>komórka 1.3</td> <td>komórka 1.4</td> </tr> <tr> <td>komórka 2.2</td> //w drugiej kolumnie mamy już tylko 3 komórki (zamiast 4)// <td>komórka 2.3</td> <td>komórka 2.4</td> </tr> </table> 16
I. Tabele Tabela tworząca układ strony Jednym z najczęstszych zastosowao tabel jest wykorzystanie ich jako osnowy stron WWW. Typowy układ strony zawiera obszar nagłówka u góry strony, obszar menu z lewej strony i obszar treści (patrz rysunek). Nagłówek i menu zazwyczaj pozostają niezmienne na stronach serwisu, natomiast zmienia się zawartośd obszaru treści. 17
I. Tabele Tabela tworząca układ strony W sekcji <body> umieszczamy tabelę. <table summary="uklad strony WWW"> <tr> <td id="naglowek" colspan="2"> Nagłówek</td> </tr> <tr> <td id="menu"> Menu</td> <td id="zawartosc"> Zawartość</td> </tr> </table> Cała zawartośd strony umieszczona zostanie w komórkach tej tabeli 18
I. Tabele Tabela tworząca układ strony W sekcji <body> umieszczamy tabelę. <table summary="uklad strony WWW"> <tr> <td id="naglowek" colspan="2"> Nagłówek</td> </tr> <tr> <td id="menu"> Menu</td> <td id="zawartosc"> Zawartość</td> </tr> </table> Cała zawartośd strony umieszczona zostanie w komórkach tej tabeli 19
I. Tabele Tabela tworząca układ strony W arkuszu styli umieszczamy definicje: body {margin:0;} table {width:100%; height:100%;} table td {border: 1px dotted black; vertical-align:top;} table td#naglowek {height:50px;} table td#menu {width:150px} 20
I. Tabele Pozycjonowanie tabel na stronie Centrowanie tabeli: <div style="text-align: center"> <table style="border: 1px solid green; margin: auto;" summary= "Tabela testowa 2"> <tr> <td>komórka l</td> <td>komórka 2</td> </tr> </table> <div> Użyto tu dwu mechanizmów: <table style= margin: auto; > <div style= text-align: center >...</div> Ma to na celu zapewnienie poprawnego działania strony w różnych przeglądarkach. 21
I. Tabele Pozycjonowanie tabel na stronie Wyrównie do prawej: <table style= margin-left: auto; > <div style= text-align: right >...</div> Ma to na celu zapewnienie poprawnego działania strony w różnych przeglądarkach. 22
Wykład 3 - część II. I. KASKADOWOŚĆ I DZIEDZICZENIE 23
II. Kaskadowość i dziedziczenie Dziedziczenie Jak zapewne pamiętamy z poprzednich wykładów, znacznik body jest przodkiem wszystkich pozostałych znaczników wszystkie znaczniki formatowane za pomocą CSS są jego potomkami. Dlatego dzięki dziedziczeniu w CSS, jeśli w arkuszu stylów napiszemy poniższą regułę: body {font-family: verdana, helvetica, sans-serif; color:blue;) tekst we wszystkich elementach dokumentu oddziedziczy te style i będzie napisany niebieską czcionką kroju Verdana (lub inną z podanych, jeśli Verdana będzie niedostępna). Poziom hierarchii nie ma tu żadnego znaczenia. 24
II. Kaskadowość i dziedziczenie Dziedziczenie Wiele własności CSS podlega dziedziczeniu w ten sposób w szczególności style dotyczące tekstu. Istnieje jednak duża liczba własności CSS których dziedziczenie nie miałoby sensu. Są to przede wszystkim własności związane z pozycjonowaniem i wyświetlaniem elementów prostokątnych, jak obramowania, marginesy i dopełnienie. Dodatkowo należy zachowad ostrożnośd podczas używania względnych jednostek wielkości, jak procenty czy em. Jeśli rozmiar tekstu w znaczniku zostanie ustawiony na 80% i znacznik ten jest potomkiem innego znacznika, którego rozmiar tekstu również jest ustawiony na 80%, to w tym pierwszym rzeczywisty rozmiar tekstu wyniesie 64% (80% z 80%). 25
II. Kaskadowość i dziedziczenie Kaskadowość Jak sama nazwa wskazuje, kaskadowośd oznacza kaskadę arkuszy stylów związaną z hierarchią elementów w dokumencie. Jej celem jest pozwolenie przeglądarce na podjęcie decyzji, którego z wielu źródeł określonej własności dla określonego znacznika należy użyd. Kaskadowośd to potężny mechanizm. Dzięki jego zrozumieniu można pisad bardzo oszczędny i łatwy do edycji kod CSS. Pozwala na tworzenie dokumentów, które wyglądają tak, jak zostało to zaplanowane, jednocześnie pozostawiając niektóre aspekty kontroli wyglądu, jak rozmiary czcionek, w rękach użytkowników, którzy mogą mied nietypowe potrzeby. 26
II. Kaskadowość i dziedziczenie Źródła stylów Kolejnośd lokalizacji przeszukiwanych przez przeglądarkę w celu znalezienia arkuszy stylów (kaskada) przedstawia się następująco: Domyślny arkusz stylów przeglądarki. Arkusz stylów użytkownika. Autorski zewnętrzny arkusz stylów. Autorski osadzony arkusz stylów. Autorski lokalny arkusz stylów. 27
II. Kaskadowość i dziedziczenie Źródła stylów Arkusz stylów przeglądarki (domyślny) - ukryty głęboko w jej wnętrzu, ponieważ każdy znacznik ma jakiś określony styl. Na przykład znacznik <hi> jest powiększony i pogrubiony, zawartośd znacznika <em> jest pisana kursywą, a listy są wcięte i każdy ich element jest poprzedzony punktorem. Nie trzeba pisad żadnych arkuszy stylów, aby to formatowanie było zastosowane. Domyślny arkusz stylów przeglądarki Firefox ma nazwę html.css. Można go modyfikowad według własnych upodobao. 28
II. Kaskadowość i dziedziczenie Źródła stylów Kolejne źródło stylów to arkusz stylów użytkownika. Użytkownik także może utworzyd własny arkusz stylów, aczkolwiek niewielu to robi. Taka możliwośd jest pomocna dla osób z wadami wzroku, ponieważ umożliwia zwiększenie rozmiaru tekstu lub ustawienie takich kolorów tekstu i tła, które umożliwia im ich rozróżnienie. W przeglądarkach IE 6 i 7 arkusz stylów użytkownika można dodad, klikając przycisk Narzędzia/Opcje Internetowe/Dostępnośd i wskazując lokalizację wybranego pliku. Opcja ta umożliwia na przykład użytkownikom z wadami wzroku zastosowad regułę podobną jak: body {font-size:200%;} 29
II. Kaskadowość i dziedziczenie Źródła stylów Ostatnie źródło stylów to arkusze pisane przez programistę, tak zwane autorskie arkusze stylów. Wiemy już, że mogą byd one dołączane z zewnętrznych plików, osadzone w nagłówku strony lub wpisane bezpośrednio w kod XHTML, czyli lokalne. 30
II. Kaskadowość i dziedziczenie Zasady kaskadowości Zasada 1: Odszukanie wszystkich deklaracji mających zastosował nie do każdego elementu i każdej własności. Kiedy przeglądarka ładuje stronę, sprawdza każdy znacznik pod kątem tego czy nie ma pasującej do niego reguły. 31
II. Kaskadowość i dziedziczenie Zasady kaskadowości Zasada 2: Sortowanie według kolejności i wagi. Przeglądarka sprawdza po kolei wszystkie źródła stylów i ustawia w trakcie tego procesu wszystkie znalezione własności. Jeśli jakaś ustawiona własność jest zdefiniowana także na niższym poziomie, zostaje ustawiona ponownie według nowej wartości. Działanie to jest powtarzane w razie potrzeby tak długa aż przeglądarka przetworzy ostatni dostępny arkusz stylów. Styl zastosowany do formatowania każdego elementu to ostatni z napotkanych przez przeglądarkę. 32
II. Kaskadowość i dziedziczenie Zasady kaskadowości Zasada 2: Sortowanie według kolejności i wagi. Przykład: Tabela przedstawia ten proces dla strony zawierającej kilka znaczników p. Zakładamy, że dwa z tych znaczników posiadają style lokalne, które ustawiają kolor tekstu jako czerwony. Tekst wszystkich pozostałych akapitów będzie miał w tym przypadku kolor niebieski. 33
II. Kaskadowość i dziedziczenie Zasady kaskadowości Zasada 2: Sortowanie według kolejności i wagi. UWAGA: Oczywiście nie jest to takie proste. Istnieje jeszcze waga deklaracji. Reguła może być zdefiniowana jako ważna: Słowo limportant powinno być oddzielone od deklaracji, której dotyczy, tylko jedną spacją. Dopiero po nim należy postawić średnik. Niniejsza reguła informuje, że ważne jest, aby kolor tekstu był czerwony. Dzięki temu tekst będzie czerwony, nawet jeśli gdzieś na niższym poziomie kaskady znajduje się deklaracja mówiąca inaczej. Przed zastosowaniem deklaracji limportant należy się zawsze głęboko zastanowić 34
II. Kaskadowość i dziedziczenie Zasady kaskadowości Zasada 3: Sortowanie według precyzji. Precyzja (ang. specificity) określa, jak bardzo precyzyjny jest selektor. Jak wiemy jeśli arkusz stylów zawiera dwie reguły: p {font-size:12px;} i p.largetext (font-size:16px;} to tekst w poniższym fragmencie strony będzie miał wysokość 16 pikseli, ponieważ selektor drugiej z przedstawionych reguł jest bardziej precyzyjny niż pierwszego. <p class="largetext">fragment tekstu.</p> 35
II. Kaskadowość i dziedziczenie Zasady kaskadowości Zasada 3: Sortowanie według precyzji. Precyzja (ang. specificity) określa, jak bardzo precyzyjny jest selektor. Jak wiemy jeśli arkusz stylów zawiera dwie reguły: p {font-size:12px;} i p.largetext (font-size:16px;} to tekst w poniższym fragmencie strony będzie miał wysokość 16 pikseli, ponieważ selektor drugiej z przedstawionych reguł jest bardziej precyzyjny niż pierwszego. <p class="largetext">fragment tekstu.</p> 36
II. Kaskadowość i dziedziczenie Zasady kaskadowości Zasada 3: Sortowanie według precyzji. Może się to wydawać oczywiste, ale co się stanie z zaprezentowanym fragmentem kodu XHTML, jeśli zostaną użyte następujące reguły? p {font-size:12px;}.largetext {font-size:16px;} Obie pasują do naszego znacznika, ale klasa przesłania selektor znacznika i tekst będzie miał 16 pikseli wysokości. Oto dlaczego: precyzja selektora znacznika wyrażona liczbowo to w tym przypadku 1, natomiast klasy to 1-0. 37
II. Kaskadowość i dziedziczenie Zasady kaskadowości Zasady obliczania precyzji selektorów. Jest to trzycyfrowy system punktowania oparty na formacie trzech pól: a-b-c. Precyzję obliczamy następująco: 1. Policz, ile jest w selektorze identyfikatorów, i ich liczbę podstaw w miejsce a. 2. Policz, ile jest w selektorze klas, pseudoklas i innych atrybutów, a ich łączną liczbę podstaw w miejsce b 3. Policz, ile jest w selektorze nazw elementów, i ich liczbę podstaw w miejsce c. 4. Powstaje w ten sposób trzycyfrowa liczba (oczywiście jest to tylko umownie liczba, ponieważ ułatwia to odczyt wyników; nie należy zapominać, że można uzyskać wynik typu 0-1-12, od którego bardziej precyzyjny jest wynik 0-2-0). 38
II. Kaskadowość i dziedziczenie Zasady kaskadowości 39
II. Kaskadowość i dziedziczenie Zasady kaskadowości Zasada 4: Sortowanie według kolejności. Jeśli dwa selektory mają dokładnie taką samą wagę, górę bierze ten, który znajduje się na niższym poziomie kaskady. 40
II. Kaskadowość i dziedziczenie Kaskadowość w uproszczeniu 41
Literatura: W prezentacji wykorzystano fragmenty i przykłady z książek: Sokół M.; abc języka HTML i XHTML. Helion, Gliwice 2006. Wyke-Smitch Ch.; CSS Witryny szyte na miarę. Helion, Gliwice 2008. 42