HTML XHTML i CSS. Praktyczne projekty [2 ed.] [PDF]

Zostań świetnym webmasterem! Podstawy i rozróżnienia, czyli czym różni się HTML od XHTML i co to jest CSS Standardy i za

157 21 8MB

Polish Pages 509 Year 2011

Report DMCA / Copyright

DOWNLOAD PDF FILE

Table of contents :
Spis treści......Page 2
Część I Elementarz......Page 10
Dla kogo jest ta książka?......Page 12
Warsztat pracy......Page 13
Testowanie stron WWW......Page 15
Edycja kodu XHTML......Page 16
Znaczniki i elementy......Page 20
Elementy puste i niepuste......Page 21
Znaczniki wymagane i opcjonalne oraz elementy puste......Page 22
Białe znaki wewnątrz znaczników......Page 23
Zagnieżdżanie elementów......Page 24
Znaki specjalne......Page 25
Atrybuty znaczników......Page 27
Atrybuty logiczne, wyliczeniowe i inne......Page 29
Komentarze w XHTML......Page 31
Struktura dokumentu HTML......Page 32
Pierwsza strona WWW......Page 33
Metody kodowania polskich znaków diakrytycznych......Page 36
Fizyczne kodowanie pliku......Page 37
Element meta ustalający kodowanie dokumentu XHTML......Page 38
Pangramy......Page 39
Atrybuty lang oraz xml:lang......Page 40
Znaki diakrytyczne w postaci encji......Page 41
Kodowanie stron zawierających teksty w kilku językach......Page 42
Błędne wyświetlanie polskich znaków diakrytycznych......Page 46
Ćwiczenia......Page 47
Czy poprawność składniowa jest ważna?......Page 52
Metody sprawdzania poprawności składniowej......Page 53
Quirks mode i standard mode — dwa tryby pracy przeglądarek internetowych......Page 60
Które przeglądarki mają tryb standardów?......Page 61
Jak sprawdzić tryb pracy przeglądarki?......Page 62
W jaki sposób przeglądarka wybiera tryb pracy?......Page 64
Błędne wyświetlanie witryny wynikające z przełączenia trybu pracy przeglądarki......Page 65
Stosuj DOCTYPE języka XHTML 1.0 strict......Page 68
Akapit......Page 70
Dzielenie wyrazów......Page 75
Zakaz łamania wiersza......Page 76
Złamanie wiersza......Page 77
Nagłówki......Page 79
Wyróżnianie tekstu......Page 82
Tekst preformatowany......Page 84
Indeksy dolny i górny......Page 85
Linia pozioma......Page 86
Zestawienie......Page 87
Style zewnętrzne......Page 90
Style wewnętrzne......Page 91
Atrybut style......Page 92
Domyślny język stylów......Page 93
Ujmowanie stylów wewnętrznych w komentarz......Page 94
Terminologia......Page 96
Wielkość liter w selektorach......Page 97
Białe znaki......Page 98
Formatowanie kodu CSS......Page 99
Czcionki......Page 102
Wysokość wiersza tekstu......Page 103
Marginesy......Page 104
Kolory......Page 105
Obramowanie......Page 107
Zestawienie sumaryczne......Page 108
Atrybut class......Page 110
Stosowanie klas......Page 111
Selektory dotyczące identyfikatorów......Page 112
Stosowanie identyfikatorów......Page 113
Walka z classitis: selektory potomne......Page 114
Rozdział 11. Projekty......Page 118
Część II Czcionki na stronach WWW......Page 126
Czcionki szeryfowe i bezszeryfowe......Page 128
Czcionki proporcjonalne i nieproporcjonalne......Page 129
Inne podziały czcionek......Page 130
Testowanie czcionek......Page 132
Rozdział 13. Czcionki dla webmastera......Page 134
Czcionki dostępne na różnych platformach......Page 137
Definiowanie kroju czcionki......Page 138
Osadzanie czcionek na stronach WWW......Page 140
Google Fonts......Page 142
font-family......Page 144
font-size......Page 145
font......Page 147
text-indent......Page 148
white-space......Page 149
line-height......Page 150
Rozdział 15. Projekty......Page 152
Część III Układ strony......Page 158
Elementy blokowe i liniowe — definicja składniowa......Page 160
Elementy blokowe i liniowe — definicja prezentacyjna......Page 164
Który ze sposobów definiowania elementów blokowych i liniowych jest lepszy i dlaczego?......Page 166
Elementy ogólne div i span......Page 167
Używanie elementów div i span w połączeniu z klasami i identyfikatorami......Page 168
Typowy przykład użycia elementów div......Page 169
Domyślny format wizualny elementów blokowych i liniowych......Page 170
Rozdział 17. Obszar zajmowany przez element......Page 174
Właściwość display......Page 178
Wyśrodkowanie elementu blokowego......Page 179
Łączenie marginesów pionowych......Page 182
Wymiary minimalne i maksymalne......Page 183
Właściwość float......Page 186
Układy kolumnowe......Page 189
Znikające tło pojemnika......Page 191
Czyszczenie elementów pływających......Page 192
Właściwość position......Page 194
Pozycjonowanie statyczne......Page 196
Pozycjonowanie względne......Page 197
Pozycjonowanie bezwzględne......Page 199
Pozycjonowanie trwałe......Page 200
Pozycjonowanie kontekstowe......Page 201
Właściwości left, right, top oraz bottom......Page 204
Warstwy i ich kolejność......Page 209
Przycinanie......Page 211
Dobieranie szerokości układu......Page 214
Układy przylegające do okna przeglądarki......Page 216
Rozdział 21. Układy płynne......Page 226
Układy dwukolumnowe......Page 230
Układ trójkolumnowy......Page 234
Rozdział 23. Projekty......Page 238
Część IV Elementy XHTML......Page 246
Elementy frazowe......Page 248
Trudne wybory......Page 250
Cytaty......Page 251
Tekst na stronach WWW — podsumowanie......Page 252
Wypunktowanie......Page 254
Lista definicji......Page 255
Zagnieżdżanie list......Page 256
Właściwości CSS list......Page 258
Rozdział 26. Element img......Page 262
Składnia elementu img......Page 263
Wymiary obrazów......Page 264
Obrazy nieprostokątne......Page 267
Animacje......Page 269
Opływanie......Page 270
Dlaczego elementy pływające nie generują wysokości?......Page 272
Osadzanie obrazów w kodzie XHTML......Page 274
Rozdział 27. Tabele......Page 278
Obramowanie i łączenie obramowania......Page 279
Podstawowe formatowanie komórek i całych tabel......Page 280
Nagłówki kolumn i nagłówki wierszy......Page 282
Podpis i opis tabeli......Page 284
Tabele regularne i nieregularne......Page 285
Nagłówek, stopka i treść tabeli......Page 287
Kolumny tabeli......Page 289
Tabele XHTML — podsumowanie......Page 293
Rozdział 28. Odsyłacze......Page 296
Spis treści w postaci listy numerowanej bądź wypunktowanej......Page 297
Style CSS witryny z hiperłączami......Page 298
Odsyłacze do różnych typów plików......Page 299
Odsyłacze wewnętrzne......Page 300
Obrazy jako odsyłacze......Page 302
Style CSS odsyłaczy......Page 303
Otwieranie nowych okien......Page 304
Mapa odsyłaczy......Page 305
Oznaczanie zmian w dokumencie......Page 308
Element object......Page 309
Osadzanie na stronie WWW filmów z serwisu YouTube......Page 310
Osadzanie na stronie WWW apletów pisanych w języku Java......Page 312
Bazowy adres URL......Page 313
Rozdział 30. Projekty......Page 316
Część V Tła......Page 338
Rozdział 31. Właściwości CSS dotyczące tła......Page 340
Rozdział 32. FIR — wymiana obrazów na teksty......Page 350
Efekt FIR wykonany przy użyciu text-indent......Page 352
Efekt FIR wykorzystujący kolejność warstw......Page 353
Rozdział 33. Udawane kolumny......Page 358
Wymiana obrazu tła......Page 366
Przycisk z etykietą tekstową......Page 367
Przyciski pozycjonowane kontekstowo......Page 368
Rozdział 35. Kafelkowanie......Page 380
Etap pierwszy: pokrojenie szablonu na oddzielne pliki......Page 387
Etap drugi: sklejenie oddzielnych plików w jeden plik sprite.png......Page 388
Rozdział 36. Projekty......Page 392
Część VI Zagadnienia zaawansowane......Page 404
Rozdział 37. Struktura funkcjonalna witryny......Page 406
Selektory......Page 410
Pseudoklasy......Page 413
Importowanie stylów......Page 417
Style do druku......Page 418
Style alternatywne......Page 421
Rozdział 39. Kolejność elementów w kodzie XHTML......Page 422
Zmiana kolejności kolumn pionowych......Page 423
Zmiana kolejności poziomych pasów......Page 426
Zmiana kolejności kolumn oraz poziomych pasów......Page 427
Atrybuty językowe......Page 430
Zdarzenia......Page 431
Atrybuty dotyczące aktywnego punktu......Page 432
Rozdział 41. Formularze......Page 434
Atrybuty formularza......Page 435
Kontrolki formularza......Page 436
Atrybuty ogólne kontrolek formularza......Page 437
Elementy input......Page 438
Przyciski zatwierdzające i resetujące formularz......Page 439
Pola wyboru......Page 440
Wykluczające pola wyboru......Page 441
Kontrolka wyboru pliku......Page 442
Element button......Page 443
Listy......Page 444
Grupowanie i podpisywanie kontrolek formularza......Page 446
Podsumowanie......Page 447
Element link......Page 448
Kanały RSS i Atom......Page 450
Następny, poprzedni oraz spis treści......Page 454
Ikona witryny WWW......Page 456
Plik robots.txt......Page 459
Plik sitemap.xml......Page 460
Rozdział 43. Element meta — dodatkowe informacje na temat strony WWW......Page 462
Dwa rodzaje elementów meta......Page 463
Języki, w jakich przygotowano dokument......Page 464
Słowa kluczowe i opis......Page 465
Data powstania i ważności dokumentu......Page 466
Metainformacje w kilku językach......Page 467
Różności......Page 468
Treść umieszczaj jako pierwszą......Page 470
Twórz czytelne tabele......Page 471
Definiuj skróty i skrótowce......Page 472
Wielkość liter......Page 474
Elementy puste i niepuste......Page 475
Cudzysłów otaczający wartości atrybutów......Page 476
Style i skrypty......Page 477
Content-type......Page 478
Jak przeglądarka traktuje dokument HTML, a jak XHTML?......Page 480
Problemy z Internet Explorerem......Page 481
Cztery proste zasady......Page 482
HTML czy XHTML?......Page 483
Witryna WWW widziana oczami człowieka i robota......Page 484
Semantyka kodu XHTML......Page 485
Semantyka przez małe s......Page 486
Nawigacja: jesteś tutaj......Page 487
Złożenia......Page 488
Bibliografia......Page 489
Problemy semantyczne XHTML i CSS......Page 490
Czy strong jest bardziej semantyczny niż b?......Page 493
Elementy em oraz span......Page 494
Drzewo elementów......Page 495
Czy wszystkie elementy tekstowe są równoważne?......Page 496
Czy klasa wzbogaca semantykę elementu?......Page 497
Praktyczne porady dotyczące semantyki......Page 498
Skorowidz......Page 500
Papiere empfehlen

HTML XHTML i CSS. Praktyczne projekty [2 ed.] [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

Spis treści Część I Elementarz ...................................................................... 11 Rozdział 1. Wprowadzenie ................................................................................................13 Dla kogo jest ta książka? ................................................................................................................... 13 Jak czytać tę książkę? ........................................................................................................................ 14 Warsztat pracy ................................................................................................................................... 14 Firefox ............................................................................................................................................... 16 Testowanie stron WWW ................................................................................................................... 16 Edycja kodu XHTML ....................................................................................................................... 17 Rozdział 2. Składnia języka XHTML ...................................................................................21 Znaczniki i elementy ......................................................................................................................... 21 Wszystkie elementy języka XHTML ................................................................................................ 22 Elementy puste i niepuste .................................................................................................................. 22 Znaczniki wymagane i opcjonalne oraz elementy puste .................................................................... 23 Wielkość liter w nazwach znaczników .............................................................................................. 24 Białe znaki wewnątrz znaczników .................................................................................................... 24 Białe znaki w treści elementów ......................................................................................................... 25 Zagnieżdżanie elementów ................................................................................................................. 25 Znaki specjalne ................................................................................................................................. 26 Atrybuty znaczników ........................................................................................................................ 28 Białe znaki w wartościach atrybutów ................................................................................................ 30 Atrybuty logiczne, wyliczeniowe i inne ............................................................................................ 30 Komentarze w XHTML .................................................................................................................... 32 Struktura dokumentu HTML ............................................................................................................. 33 Pierwsza strona WWW ..................................................................................................................... 34 Rozdział 3. Znaki diakrytyczne i oznaczanie języka dokumentu ..........................................37 Polskie znaki diakrytyczne ................................................................................................................ 37 Metody kodowania polskich znaków diakrytycznych ....................................................................... 37 Fizyczne kodowanie pliku ................................................................................................................. 38 Element meta ustalający kodowanie dokumentu XHTML ................................................................ 39 Pangramy .......................................................................................................................................... 40 Atrybuty lang oraz xml:lang .............................................................................................................. 41 Szablony pustych polskich stron WWW ........................................................................................... 42 Znaki diakrytyczne w postaci encji ................................................................................................... 42 Kodowanie stron zawierających teksty w kilku językach ................................................................. 43 Jakiego kodowania używać? ............................................................................................................. 47 Błędne wyświetlanie polskich znaków diakrytycznych .................................................................... 47 Ćwiczenia .......................................................................................................................................... 48

4

Spis treści

Rozdział 4. XHTML poprawny składniowo ..........................................................................53 Czy poprawność składniowa jest ważna? .......................................................................................... 53 Obecny stan internetu ........................................................................................................................ 54 Metody sprawdzania poprawności składniowej ................................................................................ 54 Rozdział 5. Praca w trybie standardów ..............................................................................61 Quirks mode i standard mode — dwa tryby pracy przeglądarek internetowych ............................... 61 Problemy z trybami pracy ................................................................................................................. 62 Które przeglądarki mają tryb standardów? ........................................................................................ 62 Jak sprawdzić tryb pracy przeglądarki? ............................................................................................. 63 W jaki sposób przeglądarka wybiera tryb pracy? .............................................................................. 65 Błędne wyświetlanie witryny wynikające z przełączenia trybu pracy przeglądarki .......................... 66 Stosuj DOCTYPE języka XHTML 1.0 strict .................................................................................... 69 Rozdział 6. Podstawowe elementy XHTML ........................................................................71 Akapit ................................................................................................................................................ 71 Dzielenie wyrazów ............................................................................................................................ 76 Zakaz łamania wiersza ...................................................................................................................... 77 Złamanie wiersza .............................................................................................................................. 78 Znaki interpunkcyjne ........................................................................................................................ 80 Nagłówki ........................................................................................................................................... 80 Wyróżnianie tekstu ............................................................................................................................ 83 Tekst preformatowany ...................................................................................................................... 85 Indeksy dolny i górny ........................................................................................................................ 86 Linia pozioma ................................................................................................................................... 87 Popularne znaki specjalne ................................................................................................................. 88 Zestawienie ....................................................................................................................................... 88 Rozdział 7. Kaskadowe arkusze stylów .............................................................................91 Struktura a wygląd dokumentów HTML ........................................................................................... 91 Dołączanie stylów do dokumentu ..................................................................................................... 91 Style zewnętrzne ......................................................................................................................... 91 Style wewnętrzne ........................................................................................................................ 92 Atrybut style ............................................................................................................................... 93 Domyślny język stylów ..................................................................................................................... 94 Ujmowanie stylów wewnętrznych w komentarz ............................................................................... 95 Rozdział 8. Składnia kaskadowych arkuszy stylów ............................................................97 Terminologia ..................................................................................................................................... 97 Wielkość liter w selektorach ............................................................................................................. 98 Wielkość liter w nazwach i wartościach właściwości ....................................................................... 99 Białe znaki ........................................................................................................................................ 99 Komentarze ..................................................................................................................................... 100 Formatowanie kodu CSS ................................................................................................................. 100 Rozdział 9. Przykładowe właściwości CSS .......................................................................103 Czcionki .......................................................................................................................................... 103 Wysokość wiersza tekstu ................................................................................................................ 104 Wyrównanie poziome tekstu ........................................................................................................... 105 Marginesy ....................................................................................................................................... 105 Kolory ............................................................................................................................................. 106 Obramowanie .................................................................................................................................. 108 XHTML — struktura, CSS — wygląd ............................................................................................ 109 Zestawienie sumaryczne ................................................................................................................. 109 Rozdział 10. Klasy i identyfikatory ..................................................................................111 Atrybut class ................................................................................................................................... 111 Selektory dotyczące klas ................................................................................................................. 112

Spis treści

5

Stosowanie klas ............................................................................................................................... 112 Atrybut id ........................................................................................................................................ 113 Selektory dotyczące identyfikatorów .............................................................................................. 113 Stosowanie identyfikatorów ............................................................................................................ 114 Walka z classitis: selektory potomne .............................................................................................. 115 Rozdział 11. Projekty .....................................................................................................119

Część II Czcionki na stronach WWW ........................................... 127 Rozdział 12. Rodzaje czcionek ........................................................................................129 Czcionki szeryfowe i bezszeryfowe ................................................................................................ 129 Czcionki proporcjonalne i nieproporcjonalne ................................................................................. 130 Inne podziały czcionek .................................................................................................................... 131 Testowanie czcionek ....................................................................................................................... 133 Rozdział 13. Czcionki dla webmastera ............................................................................135 Core fonts for the Web .................................................................................................................... 138 Czcionki dostępne na różnych platformach ..................................................................................... 138 Definiowanie kroju czcionki ........................................................................................................... 139 Osadzanie czcionek na stronach WWW .......................................................................................... 141 Google Fonts ................................................................................................................................... 143 Rozdział 14. Wszystkie właściwości CSS 2.1 dotyczące czcionek i tekstu .......................145 font-family ...................................................................................................................................... 145 font-size ........................................................................................................................................... 146 font-style ......................................................................................................................................... 148 font-weight ...................................................................................................................................... 148 font-variant ...................................................................................................................................... 148 font .................................................................................................................................................. 148 text-align ......................................................................................................................................... 149 text-decoration ................................................................................................................................ 149 text-indent ....................................................................................................................................... 149 text-transform .................................................................................................................................. 150 word-spacing ................................................................................................................................... 150 letter-spacing ................................................................................................................................... 150 white-space ..................................................................................................................................... 150 line-height ....................................................................................................................................... 151 Rozdział 15. Projekty .....................................................................................................153

Część III Układ strony ................................................................ 159 Rozdział 16. Elementy blokowe i liniowe .........................................................................161 Elementy blokowe i liniowe — definicja składniowa ..................................................................... 161 Elementy blokowe i liniowe — definicja prezentacyjna ................................................................. 165 Który ze sposobów definiowania elementów blokowych i liniowych jest lepszy i dlaczego? ........ 167 Elementy ogólne div i span ............................................................................................................. 168 Używanie elementów div i span w połączeniu z klasami i identyfikatorami .................................. 169 Typowy przykład użycia elementów div ......................................................................................... 170 Domyślny format wizualny elementów blokowych i liniowych ..................................................... 171 Rozdział 17. Obszar zajmowany przez element .................................................................175 Właściwość display ......................................................................................................................... 179 Wyśrodkowanie elementu blokowego ............................................................................................ 180 Łączenie marginesów pionowych ................................................................................................... 183 Wymiary minimalne i maksymalne ................................................................................................. 184

6

Spis treści

Rozdział 18. Elementy pływające ....................................................................................187 Właściwość float ............................................................................................................................. 187 Układy kolumnowe ......................................................................................................................... 190 Znikające tło pojemnika .................................................................................................................. 192 Czyszczenie elementów pływających ............................................................................................. 193 Rozdział 19. Zaawansowane metody pozycjonowania elementów blokowych ....................195 Właściwość position ........................................................................................................................ 195 Pozycjonowanie statyczne ............................................................................................................... 197 Pozycjonowanie względne .............................................................................................................. 198 Pozycjonowanie bezwzględne ......................................................................................................... 200 Pozycjonowanie trwałe ................................................................................................................... 201 Pozycjonowanie kontekstowe ......................................................................................................... 202 Właściwości left, right, top oraz bottom .......................................................................................... 205 Warstwy i ich kolejność .................................................................................................................. 210 Przycinanie ...................................................................................................................................... 212 Rozdział 20. Układy o stałej szerokości ..........................................................................215 Dobieranie szerokości układu ......................................................................................................... 215 Układy przylegające do okna przeglądarki ..................................................................................... 217 Rozdział 21. Układy płynne .............................................................................................227 Rozdział 22. Układy hybrydowe .......................................................................................231 Układy dwukolumnowe .................................................................................................................. 231 Układ trójkolumnowy ..................................................................................................................... 235 Rozdział 23. Projekty .....................................................................................................239

Część IV Elementy XHTML ......................................................... 247 Rozdział 24. Tekst .........................................................................................................249 Elementy frazowe ............................................................................................................................ 249 Trudne wybory ................................................................................................................................ 251 Cytaty .............................................................................................................................................. 252 Tekst na stronach WWW — podsumowanie ................................................................................... 253 Rozdział 25. Listy ...........................................................................................................255 Wypunktowanie .............................................................................................................................. 255 Numerowanie .................................................................................................................................. 256 Lista definicji .................................................................................................................................. 256 Zagnieżdżanie list ............................................................................................................................ 257 Właściwości CSS list ...................................................................................................................... 259 Rozdział 26. Element img ...............................................................................................263 Pliki graficzne ................................................................................................................................. 264 Składnia elementu img .................................................................................................................... 264 Wymiary obrazów ........................................................................................................................... 265 Obrazy nieprostokątne ..................................................................................................................... 268 Animacje ......................................................................................................................................... 270 Opływanie ....................................................................................................................................... 271 Dlaczego elementy pływające nie generują wysokości? ................................................................. 273 Osadzanie obrazów w kodzie XHTML ........................................................................................... 275 Rozdział 27. Tabele ........................................................................................................279 Obramowanie i łączenie obramowania ............................................................................................ 280 Podstawowe formatowanie komórek i całych tabel ........................................................................ 281 Nagłówki kolumn i nagłówki wierszy ............................................................................................. 283 Podpis i opis tabeli .......................................................................................................................... 285

Spis treści

7

Tabele regularne i nieregularne ....................................................................................................... 286 Nagłówek, stopka i treść tabeli ........................................................................................................ 288 Kolumny tabeli ................................................................................................................................ 290 Tabele XHTML — podsumowanie ................................................................................................. 294 Rozdział 28. Odsyłacze ...................................................................................................297 Spis treści w postaci listy numerowanej bądź wypunktowanej ....................................................... 298 Style CSS witryny z hiperłączami ................................................................................................... 299 Atrybut title ..................................................................................................................................... 300 Odsyłacze do różnych typów plików .............................................................................................. 300 Odsyłacze wskazujące strony w internecie ..................................................................................... 301 Odsyłacze wewnętrzne .................................................................................................................... 301 Obrazy jako odsyłacze .................................................................................................................... 303 Style CSS odsyłaczy ....................................................................................................................... 304 Otwieranie nowych okien ................................................................................................................ 305 Mapa odsyłaczy ............................................................................................................................... 306 Rozdział 29. Pozostałe elementy XHTML .........................................................................309 Oznaczanie zmian w dokumencie ................................................................................................... 309 Element object ................................................................................................................................. 310 Osadzanie na stronie WWW filmów z serwisu YouTube ......................................................... 311 Osadzanie na stronie WWW apletów pisanych w języku Java ................................................. 313 Bazowy adres URL ......................................................................................................................... 314 Rozdział 30. Projekty .....................................................................................................317

Część V Tła ................................................................................ 339 Rozdział 31. Właściwości CSS dotyczące tła ...................................................................341 Rozdział 32. FIR — wymiana obrazów na teksty ..............................................................351 Efekt FIR wykonany przy użyciu display: none .............................................................................. 353 Efekt FIR wykonany przy użyciu text-indent .................................................................................. 353 Efekt FIR wykorzystujący kolejność warstw .................................................................................. 354 Rozdział 33. Udawane kolumny ......................................................................................359 Rozdział 34. Przyciski rollover w CSS .............................................................................367 Wymiana obrazu tła ........................................................................................................................ 367 Przycisk z etykietą tekstową ............................................................................................................ 368 Przyciski pozycjonowane kontekstowo ........................................................................................... 369 Rozdział 35. Kafelkowanie ..............................................................................................381 Etap pierwszy: pokrojenie szablonu na oddzielne pliki ............................................................ 388 Etap drugi: sklejenie oddzielnych plików w jeden plik sprite.png ............................................ 389 Rozdział 36. Projekty .....................................................................................................393

Część VI Zagadnienia zaawansowane ......................................... 405 Rozdział 37. Struktura funkcjonalna witryny ....................................................................407 Rozdział 38. Uzupełnienie wiadomości na temat CSS ......................................................411 Selektory ......................................................................................................................................... 411 Pseudoklasy ..................................................................................................................................... 414 Importowanie stylów ....................................................................................................................... 418 Dziedziczenie .................................................................................................................................. 419 Style do druku ................................................................................................................................. 419 Style alternatywne ........................................................................................................................... 422

8

Spis treści

Rozdział 39. Kolejność elementów w kodzie XHTML ........................................................423 Zmiana kolejności kolumn pionowych ........................................................................................... 424 Zmiana kolejności poziomych pasów ............................................................................................. 427 Zmiana kolejności kolumn oraz poziomych pasów ......................................................................... 428 Rozdział 40. Atrybuty XHTML .........................................................................................431 Atrybuty zasadnicze ........................................................................................................................ 431 Atrybuty językowe .......................................................................................................................... 431 Zdarzenia ......................................................................................................................................... 432 Atrybuty ogólne .............................................................................................................................. 433 Atrybuty dotyczące aktywnego punktu ........................................................................................... 433 Rozdział 41. Formularze .................................................................................................435 Atrybuty formularza ........................................................................................................................ 436 Kontrolki formularza ....................................................................................................................... 437 Atrybuty ogólne kontrolek formularza ............................................................................................ 438 Zdarzenia dotyczące kontrolek ........................................................................................................ 439 Elementy input ................................................................................................................................ 439 Przyciski zatwierdzające i resetujące formularz .............................................................................. 440 Wiersz wprowadzania danych ......................................................................................................... 441 Pole hasła ........................................................................................................................................ 441 Pola wyboru .................................................................................................................................... 441 Wykluczające pola wyboru ............................................................................................................. 442 Kontrolki ukryte .............................................................................................................................. 443 Przyciski .......................................................................................................................................... 443 Kontrolka wyboru pliku .................................................................................................................. 443 Obraz ............................................................................................................................................... 444 Element button ................................................................................................................................ 444 Listy ................................................................................................................................................ 445 Pole tekstowe .................................................................................................................................. 447 Grupowanie i podpisywanie kontrolek formularza ......................................................................... 447 Podsumowanie ................................................................................................................................ 448 Rozdział 42. Powiązania dokumentów .............................................................................449 Element link .................................................................................................................................... 449 Kanały RSS i Atom ......................................................................................................................... 451 Następny, poprzedni oraz spis treści ............................................................................................... 455 Ikona witryny WWW ...................................................................................................................... 457 Twórcy witryny WWW ................................................................................................................... 460 Plik robots.txt .................................................................................................................................. 460 Plik sitemap.xml .............................................................................................................................. 461 Rozdział 43. Element meta — dodatkowe informacje na temat strony WWW ...................463 Składnia elementu meta .................................................................................................................. 464 Znaczenie elementu meta ................................................................................................................ 464 Dwa rodzaje elementów meta ......................................................................................................... 464 Jakie metainformacje umieszczać w witrynach? ............................................................................. 465 Kodowanie znaków ................................................................................................................... 465 Języki, w jakich przygotowano dokument ................................................................................ 465 Autor, prawa autorskie i firma .................................................................................................. 466 Słowa kluczowe i opis ............................................................................................................... 466 Roboty ....................................................................................................................................... 467 Data powstania i ważności dokumentu ..................................................................................... 467 Przechowywanie stron WWW przez pośredników ................................................................... 468 Skrypty i style — domyślny język ............................................................................................ 468 Metainformacje w kilku językach ............................................................................................. 468 Przekierowania .......................................................................................................................... 469 Różności ................................................................................................................................... 469

Spis treści

9

Rozdział 44. Dostępność strony WWW ............................................................................471 Kilka prostych zasad ....................................................................................................................... 471 Treść umieszczaj jako pierwszą ................................................................................................ 471 Etykietuj kontrolki formularzy .................................................................................................. 472 Pamiętaj o atrybutach alt ........................................................................................................... 472 Definiuj tytuły hiperłączy ......................................................................................................... 472 Twórz czytelne tabele ............................................................................................................... 472 Nie otwieraj nowych okien ....................................................................................................... 473 Nie używaj przekierowań meta refresh ..................................................................................... 473 Definiuj powiązania między poszczególnymi podstronami witryny ......................................... 473 Stosuj atrybut lang .................................................................................................................... 473 Definiuj skróty i skrótowce ....................................................................................................... 473 Rozdział 45. HTML czy XHTML? ......................................................................................475 XHTML zgodny z HTML ............................................................................................................... 475 Wielkość liter ............................................................................................................................ 475 Elementy puste i niepuste ......................................................................................................... 476 Znaczniki opcjonalne ................................................................................................................ 477 Cudzysłów otaczający wartości atrybutów ............................................................................... 477 Minimalizacja atrybutów logicznych ........................................................................................ 478 Identyfikator fragmentu ............................................................................................................ 478 Style i skrypty ........................................................................................................................... 478 Encje ......................................................................................................................................... 479 Dokumenty HTML/XHTML w sieci WWW .................................................................................. 479 Content-type .............................................................................................................................. 479 Czy to HTML, czy XHTML? ................................................................................................... 481 Jak przeglądarka traktuje dokument HTML, a jak XHTML? ................................................... 481 Po czym przeglądarka rozpoznaje język dokumentu? ............................................................... 482 Nagłówek Content-type dokumentu HTML oraz XHTML ....................................................... 482 Problemy z Internet Explorerem ............................................................................................... 482 Strona XHTML wysyłana jako application/xhtml+xml .................................................................. 483 Zmiana nagłówków wysyłanych przez serwer Apache ............................................................. 483 Wysyłanie nagłówka HTTP w PHP .......................................................................................... 483 Cztery proste zasady ....................................................................................................................... 483 HTML czy XHTML? ...................................................................................................................... 484 Rozdział 46. Semantyczny XHTML ..................................................................................485 Witryna WWW widziana oczami człowieka i robota ..................................................................... 485 Semantyczna sieć ............................................................................................................................ 486 Semantyka kodu XHTML ............................................................................................................... 486 Semantyka przez małe s .................................................................................................................. 487 Kto ma rację, czyli o braku specyfikacji semantyki XHTML ......................................................... 488 Praktyczne rozwiązania popularnych problemów ........................................................................... 488 Menu witryny ............................................................................................................................ 488 Nawigacja: jesteś tutaj .............................................................................................................. 488 Ilustracja ................................................................................................................................... 489 Listing ....................................................................................................................................... 489 Złożenia ........................................................................................................................................... 489 Złożenie: dialog ........................................................................................................................ 490 Bibliografia ............................................................................................................................... 490 Problemy semantyczne XHTML i CSS ........................................................................................... 491 Czy strong jest bardziej semantyczny niż b? ................................................................................... 494 Elementy em oraz span ................................................................................................................... 495 Drzewo elementów .......................................................................................................................... 496 Element czysto prezentacyjny ......................................................................................................... 497

10

Spis treści

Czy wszystkie elementy tekstowe są równoważne? ........................................................................ 497 Czy klasa wzbogaca semantykę elementu? ..................................................................................... 498 Czy XHTML jest bardziej semantyczny niż HTML? ..................................................................... 499 Praktyczne porady dotyczące semantyki ......................................................................................... 499 Skorowidz ......................................................................................................................501

Część I

Elementarz

12

Część I ♦ Elementarz

Rozdział 1. ♦

13

Rozdział 1.

Wprowadzenie Współczesny webmastering to dziedzina złożona. Tworząc strony WWW, trzeba znać podstawy grafiki komputerowej i typografii oraz ogólne zasady składu komputerowego. Niezbędna jest biegła znajomość języków XHTML, CSS, a nierzadko również JavaScript. Trzeba także znać ograniczenia, które uniemożliwiają dostęp do informacji zawartych na stronach WWW osobom niepełnosprawnym. Funkcjonalny i łatwy w obsłudze interfejs witryny należy wykonać w taki sposób, by roboty i wyszukiwarki internetowe mogły bez problemu przeanalizować i sklasyfikować zawartość serwisu. Wszystko to sprawia, że nauka tworzenia stron WWW jest czymś więcej niż poznawaniem podstaw języka XHTML. Książka HTML, XHTML i CSS. Praktyczne projekty stanowi kompendium wiedzy na temat języków HTML, XHTML oraz CSS, w którym szczególny nacisk położono na:  poprawność składniową XHTML oraz CSS,  pracę w trybie standardów,  zgodność tworzonych stron ze standardami,  semantykę kodu XHTML,  dostępność.

Dla kogo jest ta książka? Książka jest skierowana do początkujących oraz średniozaawansowanych twórców witryn internetowych, którzy chcą poznać języki XHTML oraz CSS lub pogłębić swoją wiedzę o nich. Oprócz szczegółowego omówienia niemal całego języka XHTML oraz dużej części CSS znajdziesz w niej wyjaśnienie:  jak sprawnie edytować kod XHTML,  na czym polega różnica między HTML a XHTML,  jak pracować w trybie standardów,  jakich czcionek używać na stronach WWW,  w jaki sposób tworzyć układy stron przy użyciu stylów CSS w połączeniu z elementami div,  jak wykorzystywać tła na stronach WWW (w szczególności poznasz efekty FIR, udawane kolumny oraz kafelkowanie),  jakimi cechami wyróżnia się semantyczny kod XHTML,  jak projektować szablony stron WWW.

Część I ♦ Elementarz

14

Jeśli tworzysz witryny za pomocą wizualnych edytorów WYSIWYG (ang. What You See Is What You Get — otrzymujesz to, co widzisz) i nie chcesz poznawać zawartości plików XHTML i CSS, to książka ta zdecydowanie nie jest dla Ciebie.

Jak czytać tę książkę? Książka jest zorganizowana w dwa rodzaje zadań praktycznych: ćwiczenia oraz projekty. Ćwiczenia są zadaniami krótszymi: demonstrują użycie poszczególnych elementów XHTML czy właściwości CSS. Projekty podsumowują większe partie materiału. Czytając książkę, należy samodzielnie wykonywać wszystkie ćwiczenia i projekty. Ułatwia to materiał zawarty na płycie. Na stronie każdego ćwiczenia i projektu można pobrać komplet danych niezbędnych do wykonania zadania. Czasami są to pliki tekstowe, kiedy indziej pliki graficzne. Wykonanie ćwiczeń i projektów opisanych w książce nie wymaga przepisywania żadnych tekstów: gotowe teksty są dostępne w formacie TXT. Aby wykonać zadanie, należy przygotować odpowiedni kod XHTML oraz CSS, wykorzystując gotowe teksty oraz obrazy.

Warsztat pracy Zanim rozpoczniesz naukę tworzenia stron WWW, musisz zadbać o przygotowanie stanowiska pracy. Ponieważ każdy użytkownik wędrujący po internecie może używać innego oprogramowania, musisz zastanowić się, w jaki sposób przygotowywać witryny WWW, które będą dostępne dla jak najszerszego grona odbiorców. Najprostszą metodą upewnienia się, że Twoje witryny są poprawnie wyświetlane, jest przetestowanie ich w różnych przeglądarkach. Dlatego na komputerze, na którym tworzę strony WWW, zazwyczaj instaluję wszystkie najpopularniejsze przeglądarki. Jakie przeglądarki należy zainstalować? Odpowiedź na to pytanie znajdziesz, odwiedzając serwis ranking.pl. Pod adresem http://ranking.pl/pl/rankings/web-browsers.html dostępne jest zestawienie przeglądarek, z których korzystają polscy internauci. Wykres prezentujący popularność przeglądarek jest przedstawiony na rysunku 1.1. Zwróć uwagę, że popularność przeglądarek podlega ciągłym zmianom. Po odwiedzeniu witryny http:// ranking.pl odszukaj zestawienie najpopularniejszych przeglądarek za okres od 1 stycznia 2009 r. do 31 grudnia 2010 r. Jeszcze kilka lat temu prym wiodły produkty firmy Microsoft. Obecnie najpopularniejsza jest przeglądarka Firefox. Niektóre przeglądarki, jak na przykład Netscape, zniknęły z rynku. Ich miejsce zajęły nowe produkty — Chrome oraz Safari. Z zestawienia widocznego na rysunku 1.1 wynika, że pod koniec roku 2010 najpopularniejszymi przeglądarkami były:  Firefox 3.x 47,9%  MSIE 8.x 15,4%  MSIE 7.x 10,4%  Opera 10.x 9,3%  Chrome 7.x 9,2%  MSIE 6.x 3,0%  Opera 9.x 0,9%  Firefox 2.x 0,6%  Safari 5.x 0,4%

Rozdział 1. ♦ Wprowadzenie

15

Rysunek 1.1. Statystyki popularności przeglądarek dostępne w witrynie ranking.pl

Biorąc pod uwagę trendy zmian, można prognozować, że około połowy roku 2011, czyli w momencie, w którym drugie wydanie książki HTML, XHTML i CSS. Praktyczne projekty pojawi się w sklepach, najważniejszymi przeglądarkami będą:  Firefox,  MSIE,  Opera,  Chrome,  Safari. Zatem przygotowanie warsztatu pracy rozpoczynamy od zainstalowania najnowszych wersji pięciu przeglądarek: Firefoksa, Internet Explorera, Opery, Chrome’a oraz Safari. Przeglądarki te znajdziesz na stronach: Firefox: IE 8: Opera: Chrome: Safari:

http://www.mozilla-europe.org/pl/ http://www.microsoft.com/poland/windows/internet-explorer/ http://www.opera.com http://www.google.com/chrome?hl=pl http://www.apple.com/pl/safari/

Wszystkie opisane w książce ćwiczenia i projekty będziemy wykonywali w taki sposób, by wyglądały one poprawnie we wszystkich pięciu przeglądarkach.

16

Część I ♦ Elementarz

W okresie, w którym przygotowywałem książkę, czyli pod koniec 2010 roku, aktualnymi wersjami przeglądarek były:  Firefox 3.6.13,  Internet Explorer 8.0,  Opera 10.63,  Chrome 8.0,  Safari 5.0.2. Wszystkie wystąpienia nazw przeglądarek pozbawione numeru odnoszą się do podanych wyżej wersji.

Firefox Szczególną rolę będzie odgrywała przeglądarka Firefox. Ze względu na liczne dodatki1 oraz rozszerzenia jest ona bardzo wygodna do testowania witryn internetowych. Po zainstalowaniu przeglądarki Firefox zainstaluj także następujące dodatki:  Web Developer Toolbar https://addons.mozilla.org/en-US/firefox/addon/60/  HTML Validator https://addons.mozilla.org/pl/firefox/addon/249/  Firebug https://addons.mozilla.org/en-US/firefox/addon/1843/  Live HTTP Headers https://addons.mozilla.org/en-US/firefox/addon/3829/  Site navigation bar https://addons.mozilla.org/pl/firefox/addon/1949/

Testowanie stron WWW Każda wykonana strona WWW powinna zostać sprawdzona pod kilkoma względami:  poprawności składniowej XHTML i CSS,  wyglądu w pięciu wymienionych przeglądarkach,  wpływu rozdzielczości monitora na wygląd witryny,  wyglądu przy wyłączonych stylach CSS. Pierwszym rodzajem testu jest sprawdzenie poprawności kodu XHTML oraz CSS. Służą do tego:  wtyczka HTML Validator przeglądarki Firefox,  serwis http://validator.w3.org  oraz walidator http://jigsaw.w3.org/css-validator/.

1

Obecnie wszystkie przeglądarki zawierają ułatwienia dla twórców witryn. W Internet Explorerze występuje panel Narzędzia/ Narzędzia deweloperskie. W Operze należy zainstalować dodatek Dragonfly (http://www.opera.com/ dragonfly/). W Safari włączenie opcji Edycja/Preferencje/Zaawansowane/Pokazuj menu Programowanie w pasku menu spowoduje pojawienie się w menu głównym pozycji Programowanie. Natomiast w przeglądarce Chrome występuje opcja Narzędzia/Narzędzia dla programistów. Dostępna jest także wtyczka Chrome Web Developer Tools.

Rozdział 1. ♦ Wprowadzenie

17

Drugi test polega na sprawdzeniu wyglądu strony WWW w kilku przeglądarkach. Ćwiczenia i projekty omówione w książce zostały sprawdzone w przeglądarkach:  Firefox 3.6,  Internet Explorer 8.0,  Opera 10.63,  Chrome 8.0,  Safari 5.0. Jeśli pracujesz na monitorze o dużej rozdzielczości (np. 1680×1050), to test witryny w różnych rozdzielczościach możesz przeprowadzić, zmniejszając okno przeglądarki. Ostatni test, użycie arkuszy stylów, możesz wykonać, wykorzystując wbudowane możliwości przeglądarek. W przeglądarce Firefox style wyłącza opcja Widok/Styl strony/ Ignoruj style, a w przeglądarce Internet Explorer — Widok/Styl/Brak stylu. W Firefoksie możesz także skorzystać z wtyczki Web Developer Toolbar. Po zainstalowaniu wtyczki do wyłączenia stylów CSS służy skrót klawiszowy Ctrl+Shift+S. Wyłączanie stylów CSS ♦ Firefox: Widok/Styl strony/Ignoruj style lub (po zainstalowaniu wtyczki Web Developer Toolbar) skrót klawiszowy Ctrl+Shift+S. ♦ Internet Explorer: Widok/Styl/Brak stylu. ♦ Opera: Strona/Styl/Tryb użytkownika (należy jeszcze w konfiguracji trybu użytkownika wyłączyć wszystkie style: Strona/Styl/Zarządzaj trybami). ♦ Chrome: po zainstalowaniu rozszerzenia Web Developer opcja Disable/Disable site CSS. ♦ Safari: Programowanie/Wyłącz style (najpierw Edycja/Preferencje/Zaawansowane/Pokazuj menu Programowanie w pasku menu)

Edycja kodu XHTML Edycja kodu XHTML jest zadaniem żmudnym. Ręczne przygotowanie kodu XHTML (tj. bez wykorzystywania techniki kopiuj-wklej czy innych udogodnień) nawet pustej strony WWW widocznej na listingu 2.1 może odstraszyć każdego. Wprowadzenie z klawiatury nagłówka DOCTYPE, znacznika otwierającego czy elementu meta odpowiedzialnego za kodowanie znaków po pierwsze zajmie dużo czasu, a po drugie otrzymany kod zazwyczaj będzie błędny. Te dwa problemy powodują, że tworzenie stron WWW w zwykłym notatniku jest rozwiązaniem złym. Wielokrotnie w ramach prowadzonych zajęć natrafiałem na literówki, których poprawienie wymagało stosunkowo wiele czasu. Przykładami są brak znaku / w znaczniku zamykającym oraz zamiana atrybutu src elementu img na scr. Błędy te dość trudno zlokalizować wzrokowo w kodzie strony. Bez użycia walidatora, pracując w notatniku, w swojej codziennej pracy napotkasz mnóstwo tego typu trudności. Rozwiązaniem części problemów jest walidator sprawdzający poprawność kodu XHTML. Wszelkie błędy składniowe zostaną przez niego wychwycone. Drugi problem, ilość czasu potrzebnego na wprowadzenie podstawowych elementów XHTML, rozwiązałem poprzez opracowanie edytora NotH. W programie tym większa część elementów XHTML jest dostępna w postaci predefiniowanych komend aktywowanych skrótami klawiszowymi lub podwójnym kliknięciem w oknie szablonów. W ten sposób realizuję główny cel, którym jest nauczanie języka XHTML, bez tracenia czasu na zadania czysto edycyjne. Główne okno programu NotH jest widoczne na rysunku 1.2. Instrukcja obsługi NotH-a jest dołączona do programu. Po zainstalowaniu NotH-a uruchom go, a następnie naciśnij przycisk F1. Poznasz wówczas szczegóły pracy w programie.

Część I ♦ Elementarz

18

Rysunek 1.2. Edytor NotH Książka jest podręcznikiem języków XHTML i CSS, a nie programu NotH. Wszystkie omówione przykłady, ćwiczenia i projekty mogą być wykonane w dowolnym innym edytorze plików tekstowych.

Innym bardzo ciekawym rozwiązaniem, jeśli chodzi o edycję kodu XHTML, jest technika nazywana Zen Coding. Znaczniki XHTML są generowane na podstawie zapisu zbliżonego do selektora CSS. Po wpisaniu w edytorze tekstu: div#pojemnik>div.lewa+ul.menu>li*3>a[href="#"]

oraz wykonaniu konwersji otrzymamy kod:



Technika Zen Coding jest zaimplementowana w postaci wtyczek, które są dostępne dla wielu różnych edytorów i środowisk programistycznych, m.in. NetBeans. Strona domowa projektu Zen Coding znajduje się pod adresem http://code.google.com/p/zen-coding/.

Rozdział 1. ♦ Wprowadzenie

19

W celu zainstalowania obsługi Zen Coding w środowisku NetBeans odwiedź adres https:// github.com/lorenzos/ZenCodingNetBeansPlugin i pobierz plik org-lorenzos--zencoding-0.7.nbm. Następnie uruchom środowisko NetBeans i przejdź do okna dialogowego Narzędzia/ Wtyczki/ Pobrano. Po naciśnięciu przycisku Dodaj wtyczki wskaż pobrany plik org-lorenzos-zencoding-0.7.nbm. Po zrestartowaniu środowiska NetBeans w menu głównym pojawi się grupa opcji Edytuj/Zen coding. Jeśli teraz w edytorze wpiszesz: div.tresc>p*3

i naciśniesz skrót Alt+Insert, wówczas ujrzysz opcję Expand Zen Code, która spowoduje konwersję powyższego napisu w następujący kod XHTML:



NAJLEPSZE OBECNIE ROZWIĄZANIE Wygląd każdej nowej strony WWW sprawdzaj w pięciu przeglądarkach: Firefoksie, Internet Explorerze, Operze, Chromie i Safari.

20

Część I ♦ Elementarz

Rozdział 2. ♦ Składnia języka XHTML

21

Rozdział 2.

Składnia języka XHTML Znaczniki i elementy Znacznik (ang. tag) to napis otoczony znakami < oraz >. Bezpośrednio po znaku < występuje nazwa znacznika:

Przedstawiony znacznik nazywa się i jest to znacznik otwierający elementu strong. Duża część znaczników otwierających, choć nie wszystkie, ma odpowiadające im znaczniki zamykające. Znacznik zamykający różni się od znacznika otwierającego znakiem /, nazywanym ukośnikiem (ang. slash):

Znaczniki otwierający i zamykający otaczają pewien fragment, nadając mu odpowiednie znaczenie. Na przykład znaczniki i uwypuklają fragment tekstu: Nie czyń drugiemu, co tobie niemiłe.

W powyższym przykładzie znaczniki otwierający oraz zamykający otaczają wyraz niemiłe. W ten sposób określamy, że słowo to powinno zostać wyróżnione. Para znaczników, znacznik otwierający oraz znacznik zamykający, tworzy element. Przedstawiony przykład zawierał element strong. Innym przykładem jest: Jak Kuba Bogu, tak Bóg Kubie.

Mówimy, że w powyższym tekście występuje element em o zawartości Kuba. Zasięg elementu em określają znaczniki: otwierający oraz zamykający . Zwróć uwagę, że element to nie to samo co znacznik1. W kodzie: E = mc2

występuje element sup o zawartości 2 zdefiniowany przez znacznik otwierający oraz znacznik zamykający . Pisząc „element sup”, nie używam znaków < ani >. Wówczas mam na myśli fragment: 2

Jeśli natomiast piszę „znacznik ”, wówczas wskazuję, że chodzi jedynie o:

Analogicznie stwierdzenie „znacznik ” dotyczy wyłącznie:

1

Specyfikacja HTML 4.01, punkt 3.2.1.

Część I ♦ Elementarz

22

Wszystkie elementy języka XHTML Lista znaczników w języku XHTML jest ściśle określona. Język nie umożliwia dodawania nowych znaczników. Nie możesz więc pisać:

PRZYKŁAD NIEPOPRAWNY ... ... ...

Tabela 2.1 zawiera sumaryczne zestawienie wszystkich elementów języka XHTML 1.0 strict. Tabela 2.1. Zestawienie wszystkich poprawnych elementów języka XHTML 1.0 strict lp.

Funkcja

Elementy

liczba

1.

Definicja struktury dokumentu

html, head, title, body, address

4

2.

Dodatkowe dane o dokumencie

meta

1

3.

Elementy ogólne

div, span

2

4.

Nagłówki

h1, h2, h3, h4, h5, h6

5.

Tekst

p, br, pre, q, blockquote, sub, sup, em, strong, dfn, code, samp, kbd, var, cite, abbr, acronym

5.

Zmiany w dokumencie

ins, del

6.

Listy

ul, ol, li, dl, dt, dd

7.

Tabele

table, tr, td, th, caption, thead, tfoot, tbody, col, colgroup

8.

Hiperłącza

a, link, base

3

9.

Obrazy i obiekty

img, object, param, map, area

5

10.

Style

style

1

11.

Formularze

form, input, button, select, option, optgroup, textarea, label, fieldset, legend

12.

Skrypty

script, noscript

2

13.

Inne

hr, bdo

2

6 17 2 6

RAZEM

10

10

72

Tabela 2.1 nie zawiera żadnych elementów, które zostały wycofane z języka HTML (ang. deprecated). Przestarzałymi elementami są: applet, basefont, center, dir, font, isindex, menu, s, strike oraz u. Pominięte zostały również elementy niezalecane2: b, i, tt, big, small oraz elementy dotyczące ramek: frameset, frame, noframes i iframe.

Elementy puste i niepuste Część elementów języka XHTML ma dwa znaczniki: otwierający i zamykający. Przykładami takich elementów są em, span czy p. Korzystając z dowolnego z tych elementów, musisz zawsze użyć znacznika otwierającego i zamykającego:

Wlazł kotek na płotek



2

Specyfikacja HTML 4.01, rozdział 15.2.

Rozdział 2. ♦ Składnia języka XHTML

23

Pominięcie znacznika zamykającego jest niedozwolone:

PRZYKŁAD NIEPOPRAWNY

Wlazł kotek na płotek

Niektóre elementy nie mają znaczników zamykających. Elementy takie nazywamy pustymi. Przykładami elementów pustych są br oraz hr. Elementy puste zapisuje się w postaci jednego znacznika o nieco innym zakończeniu:


Elementami pustymi są: area, base, br, button, col, hr, img, input, link, meta i param. Wszystkie pozostałe elementy są niepuste, a więc mają obowiązkowe znaczniki zamykające. Zwróć uwagę, że element niepusty nie może być zapisywany tak jak elementy puste, nawet gdy nie zawiera treści:

PRZYKŁAD NIEPOPRAWNY

Poprawnym zapisem jest:

Podobnie element pusty nie może być zapisywany przy użyciu znacznika otwierającego i zamykającego:

PRZYKŁAD NIEPOPRAWNY



Jedynym poprawnym rozwiązaniem jest:


Spacja przed znakiem / nie jest wymagana i może być pominięta3:


Znaczniki wymagane i opcjonalne oraz elementy puste W języku XHTML nie występują znaczniki opcjonalne. Oznacza to, że każdy znacznik otwierający musi mieć znacznik zamykający. Odstępstwem od tej reguły są wyłącznie wymienione już elementy puste. One jako jedyne nie mają znaczników zamykających. Nie możesz więc pisać:

3

Specyfikacja języka XHTML 1.0 w punkcie C.2 zaleca stosowanie spacji, gdyż jej brak może powodować błędy w przypadku starszych przeglądarek. Uwaga ta była pisana dziesięć lat temu i już się zdezaktualizowała. Już od dawna wszystkie przeglądarki rozumieją zapis
i żadna z nich nie ma z tym kłopotu. Powodem, dla którego go nie używam, jest tak naprawdę przyzwyczajenie! W dalszej części książki będę konsekwentnie stosował notację ze spacją, czyli
.

Część I ♦ Elementarz

24

PRZYKŁAD NIEPOPRAWNY

  • Kto?
  • Gdzie?
  • Kiedy?

    Musisz używać znaczników zamykających
  • :
  • Kto?
  • Gdzie?
  • Kiedy?


  • Błędnym przykładem jest również:

    PRZYKŁAD NIEPOPRAWNY pszenica owies żyto jęczmień

    Kod ten należy zapisać jako: pszenica owies żyto jęczmień

    Wielkość liter w nazwach znaczników Nazwy znaczników możesz zapisywać wyłącznie małymi literami. Wszystkie poniższe przykłady są niepoprawne:

    PRZYKŁAD NIEPOPRAWNY

    Poprawnym zapisem jest jedynie:

    Białe znaki wewnątrz znaczników Wewnątrz znaczników mogą pojawić się białe znaki. Zarówno:

    jak i:



    jest poprawnym znacznikiem otwierającym elementu p. Pamiętaj jednak, że białe znaki poprzedzające nazwę znacznika są niedozwolone. Żaden z poniższych trzech znaczników nie jest poprawny:

    PRZYKŁAD NIEPOPRAWNY <
    p>

    Najlepiej nie umieszczać białych znaków wewnątrz znaczników (o ile nie jest to konieczne). Nie stanowi to żadnego istotnego ograniczenia, a uchroni Cię przed trudnymi do odnalezienia błędami. Zamiast:

    >lew służą do zapisu znaczników, wprowadzenie nierówności:

    PRZYKŁAD NIEPOPRAWNY x7

    w tekście strony WWW będzie prowadziło do dwuznaczności. Napis zostanie zinterpretowany jako znacznik. W jaki zatem sposób wprowadzić znak mniejszości tak, by został on potraktowany jako fragment tekstu? Służą do tego znaki specjalne6 (ang. character references). Zamiast znaku < należy użyć napisu — napisu >. Poprzedni przykład po zastosowaniu znaków specjalnych ma postać: x7

    Dziesiętnym kodem ASCII znaku < jest liczba 60, która wyrażona w systemie szesnastkowym ma wartość 3c. Ten sam znak < możesz zapisać w dokumencie XHTML na trzy sposoby: stosując encję nazwaną ( F

    Selektor dziecka

    Pasuje do elementu F zawartego bezpośrednio w E.

    E + F

    Selektor następnego brata

    Pasuje do elementu F bezpośrednio poprzedzonego przez E.

    E[foo]

    Selektor atrybutu

    Pasuje do elementów, które mają atrybut foo (o dowolnej wartości).

    E[foo="bar"]

    Selektor atrybutu o podanej dokładnej wartości

    Pasuje do elementów, które mają atrybut foo o wartości bar.

    E[foo~="bar"]

    Selektor atrybutu o zadanej wartości

    Pasuje do elementu E z atrybutem foo, którego jedną z wartości jest bar.

    E[lang|="en"]

    Selektor języka

    Pasuje do elementów, których atrybut lang jako jedną z wartości zawiera język en. Języki należy oddzielić dywizami, np. lang="en-de-fr".

    *

    Selektor uniwersalny

    Pasuje do każdego elementu.

    S1, S2, S3

    Selektor grupowy

    S1, S2 i S3 są dowolnymi selektorami. Selektor grupowy pasuje

    Pasuje do elementu F zawartego (dowolnie głęboko) wewnątrz E.

    do każdego z nich. Liczba selektorów w grupie może być dowolna.

    Selektor klasy wykorzystuje znak kropki. Może być zapisywany bez nazwy elementu: .zaznaczenie { }

    lub z nazwą elementu: p.zaznaczenie { }

    W pierwszym przypadku selektor dotyczy wszystkich elementów klasy zaznaczenie, a w drugim tylko elementów p klasy zaznaczenie. Co ciekawe, ponieważ atrybut class może przyjmować kilka wartości oddzielonych spacjami:



    selektor klasy może składać się z kilku członów. Selektor: p.zaznaczenie.specjalny { }

    dotyczy tych elementów p, które w atrybucie class mają wymienione co najmniej dwie klasy: zaznaczenie oraz specjalny. Natomiast selektor:

    Rozdział 38. ♦ Uzupełnienie wiadomości na temat CSS

    413

    .inny.zaznaczenie.tekst { }

    dotyczy wszystkich elementów, które mają co najmniej trzy klasy: inny, zaznaczenie i tekst. Obejmie więc między innymi element:

    Selektor: .lorem { }

    dotyczy każdego elementu, który jako jedną z wartości atrybutu class ma lorem, a więc między innymi elementów:

    Selektor potomka składa się z dwóch członów oddzielonych spacją, np. h1 em { } #naglowek em { } .menu .tytul { } #stopka .nazwa { }

    Członami mogą być elementy, klasy lub dowolne inne selektory. Pierwszy z podanych selektorów dotyczy elementu em zawartego dowolnie głęboko wewnątrz h1. Swoim działaniem obejmie więc między innymi napisy lorem, ipsum oraz dolor: lorem ipsum dolor

    Selektor dziecka różni się od selektora potomka separatorem członów: h1 > em { } #naglowek > em { } .menu > .tytul { } #stopka > .nazwa { }

    Drugi z podanych elementów musi być zawarty bezpośrednio (a nie głębiej) w pierwszym. Pierwszy z przykładowych selektorów dotyczy elementu em zawartego wewnątrz h1. Swoim działaniem obejmie napis dolor, a nie obejmie napisów lorem oraz ipsum: lorem ipsum dolor

    Selektor następnego brata: em + span { }

    wskazuje elementy span, które występują bezpośrednio po elemencie em. Obejmuje więc napis ipsum:

    lorem ipsum



    414

    Część VI ♦ Zagadnienia zaawansowane

    Selektor ten wybiera zawsze tylko jeden element. Spośród czterech poniższych elementów span selektor em + span obejmie tylko element zawierający literę c:

    a b lorem c d



    Selektor atrybutu powoduje zastosowanie podanej reguły do elementów mających konkretny atrybut o zadanej wartości. Selektor: th[scope="col"] { }

    dotyczy tych komórek th, które mają atrybut scope o wartości col, np.:

    Selektor ten można stosować bez podawania wartości: th[scope] { }

    wówczas dotyczy on wszystkich elementów th mających atrybut scope o dowolnej wartości. Inną metodą stosowania tego atrybutu jest podawanie jednej z dopuszczalnych wartości: em[lang~="en"] { }

    Selektor ten dotyczy elementu em, którego atrybut lang ma jako jedną z wartości en. Ostatnim selektorem w tabeli 38.1 jest selektor grupowy. Przyjmuje on postać dowolnej liczby selektorów oddzielonych przecinkami, np.: h1, h2, h3 { }

    Powyższa reguła CSS zostanie zastosowana zarówno do h1 i h2, jak i h3. Natomiast reguła: .nazwapliku, .naglowek h3 { }

    zostanie zastosowana do elementów klasy nazwapliku oraz do elementów h3 zawartych w elemencie klasy naglowek.

    Ćwiczenie 38.1 Wykonaj witrynę sprawdzającą działanie wszystkich selektorów.

    Pseudoklasy W języku CSS 2.1 dostępnych jest jedenaście pseudoklas zawartych w tabeli 38.2. Wszystkie przeglądarki wymienione w rozdziale 1. obsługują pełny zestaw pseudoklas z tabeli 38.2. Pseudoklasa :first-child wybiera elementy, które są pierwszymi dziećmi swoich rodziców. Selektor: p:first-child { }

    będzie dotyczył akapitów zawierających litery a oraz d:

    a

    b

    c



    Rozdział 38. ♦ Uzupełnienie wiadomości na temat CSS

    415

    Tabela 38.2. Pseudoklasy języka CSS 2.1 Selektor

    Nazwa

    Znaczenie

    E:first-child

    Pseudoklasa :first-child

    Pasuje do elementów E, które są pierwszym dzieckiem swojego rodzica.

    E:first-line

    Pseudoklasa :first-line

    Pasuje do pierwszego wiersza tekstu elementu E.

    E:first-letter

    Pseudoklasa :first-letter

    Pasuje do pierwszej litery elementu E.

    E:before

    Pseudoklasa :before

    Umożliwia wstawianie zawartości przed podanym elementem.

    E:after

    Pseudoklasa :after

    Umożliwia wstawianie zawartości za podanym elementem.

    E:link

    Pseudoklasa :link

    Pasuje do hiperłączy, które nie były jeszcze odwiedzone.

    E:visited

    Pseudoklasa :visited

    Pasuje do hiperłączy, które były odwiedzone.

    E:hover

    Pseudoklasa :hover

    Pasuje do hiperłącza, które jest wskazane kursorem myszy.

    E:active

    Pseudoklasa :active

    Pasuje do hiperłącza, które jest właśnie aktywowane (np. po naciśnięciu i przytrzymaniu przycisku myszki na hiperłączu).

    E:focus

    Pseudoklasa :focus

    Pasuje do elementu E, który jest aktywny, tzn. w którym jest umiejscowiony kursor wprowadzania danych (dotyczy głównie kontrolek formularzy).

    E:lang(c)

    Pseudoklasa :lang

    Pasuje do elementu E, który jest w języku c.

    d

    e

    f



    Selektory :first-line oraz :first-letter obejmują pierwszy wiersz oraz pierwszą literę wewnątrz elementu. Pseudoklasy :before oraz :after służą do wstawiania dodatkowej zawartości wewnątrz elementów. Można je wykorzystywać m.in. do umieszczania w tekście cudzysłowów, dodawania etykiet oraz automatycznego numerowania rozdziałów. Listing 24.1 przedstawia style CSS, które wykorzystując pseudoklasy :before oraz :after, umieszczają w dokumencie cudzysłowy zależne od języka. Reguła: q[lang="pl"]:before { content: "„"; } q[lang="pl"]:after { content: "”"; }

    wstawia przed każdym elementem q, którego treść jest oznaczona językiem pl, polski cudzysłów. Wartością właściwości content jest wstawiany napis. Reguła: p:before { content: "XXX"; } p:after { content: "YYY"; }

    powoduje wstawienie na początku i na końcu każdego akapitu tekstów XXX oraz YYY. Powyższa reguła zmienia akapit:

    lorem ipsum



    Część VI ♦ Zagadnienia zaawansowane

    416

    tak, że będzie w przeglądarce wyglądał tak samo jak:

    XXXlorem ipsumYYY



    W ten sposób możemy we wszystkich akapitach klasy .uwaga dodać na początku tekst UWAGA: .uwaga:before { content: "UWAGA: "; }

    Lorem ipsum dolor sit amet...



    Pamiętaj jednak, że tekst podany jako wartość właściwości content nie może zawierać kodu XHTML:

    PRZYKŁAD NIEPOPRAWNY .uwaga:before { content: "UWAGA"; }

    Łącząc selektory :before i:after z licznikami i właściwościami counter-reset, counter--increment i content oraz funkcją counter(), możemy w dokumentach zdefiniować automatyczną numerację elementów. W projekcie 30.5 wewnątrz elementów h4 umieściliśmy numery rozdziałów, np.: 1. The Cyclone 2. The Council with the Munchkins 3. How Dorothy Saved the Scarecrow ...

    Numerację taką możemy wykonać w sposób automatyczny, wykorzystując style z listingu 38.1. Listing 38.1. Automatyczna numeracja rozdziałów oznaczonych nagłówkami h4 body { }

    counter-reset: rozdzial;

    h4:before { content: counter(rozdzial) ". "; counter-increment: rozdzial; } The Cyclone The Council with the Munchkins How Dorothy Saved the Scarecrow ...

    Właściwość counter-reset resetuje licznik o nazwie rozdzial. Można powiedzieć, że w ten sposób definiujemy zmienną o nazwie rozdzial. Wykorzystując pseudoklasę :before, wartość zmiennej rozdzial wstawiamy w tytułach podrozdziałów. Po numerze rozdziału dodajemy kropkę oraz spację. W deklaracji: content: counter(rozdzial) ". ";

    funkcja counter() zwraca bieżącą wartość licznika o nazwie rozdzial. Do zwróconej wartości dołączany jest napis ujęty w cudzysłów, czyli kropka oraz spacja. Po wstawieniu wartości zmiennej rozdzial do dokumentu zwiększamy jej wartość: counter-increment: rozdzial;

    Automatyczna numeracja może być wielopoziomowa. Takie rozwiązanie prezentuje listing 38.2. Listing 38.2. Wielopoziomowa automatyczna numeracja body { counter-reset: h1; } h1 { counter-reset: h2;

    Rozdział 38. ♦ Uzupełnienie wiadomości na temat CSS

    417

    } h1:before { content: counter(h1) ". "; counter-increment: h1; } h2 { counter-reset: h3; } h2:before { content: counter(h1) "." counter(h2) ". "; counter-increment: h2; } h3 { counter-reset: h4; } h3:before { content: counter(h1) "." counter(h2) "." counter(h3) ". "; counter-increment: h3; } Lorem ipsum Dolor sit amet Duis sapien Pellentesque viverra Curabitur non turpis Lorem Ipsum Dolor Sit Amet

    W stylach z listingu 38.2 definiujemy cztery liczniki: h1, h2, h3 oraz h4. Licznik h1 jest resetowany na początku dokumentu. Licznik h2 resetujemy po wystąpieniu każdego nagłówka h1. Dzięki temu numeracja nagłówków h2 po wystąpieniu nagłówka h1 będzie rozpoczynała się od 1. W podobny sposób resetujemy liczniki h3 oraz h4. Kolejnymi pseudoklasami z tabeli 38.2 są :link, :visited, :hover oraz :active. Służą one do formatowania odsyłaczy. Ich działanie szczegółowo omówiliśmy w rozdziałach 28. oraz 34. Pseudoklasa :focus dotyczy kontrolek formularzy. Selektor: input:focus { }

    dotyczy tego elementu input, w którym obecnie jest wprowadzany tekst. Ostatnia pseudoklasa z tabeli 38.2 służy do różnicowania formatu elementów na podstawie języka. Selektor: :lang(fr) { }

    obejmuje wszystkie elementy w języku francuskim (tj. te, których atrybut lang jako jedną z wartości przyjmuje fr).

    Ćwiczenie 38.2 Wykonaj witrynę sprawdzającą działanie wszystkich pseudoklas.

    Ćwiczenie 38.3 Wykonaj projekt 30.5, wykorzystując automatyczną numerację przedstawioną na listingu 38.1.

    418

    Część VI ♦ Zagadnienia zaawansowane

    Ćwiczenie 38.4 Wykonaj witrynę sprawdzającą działanie wielopoziomowej automatycznej numeracji z listingu 38.2.

    Importowanie stylów W arkuszach stylów możemy osadzać zawartość zewnętrznych plików2 CSS. Służy do tego reguła @import. Jeśli w stylach CSS umieścisz instrukcję: @import "uklad.css";

    to spowoduje ona dołączenie zawartości pliku uklad.css. Dzięki regule @import plik CSS może zostać podzielony na kilka fragmentów. Na przykład w dokumencie XHTML dołączamy style zewnętrzne z pliku style.css:

    Natomiast w pliku style.css umieszczamy dwie reguły: @import "uklad.css"; @import "szczegoly.css";

    Tak wykonana witryna będzie się składała z czterech plików:  index.html,  style.css,  uklad.css,  szczegoly.css. Wykorzystując to, można na przykład przyznać uprawnienia do modyfikowania wyglądu dokumentu bez możliwości modyfikacji kodu XHTML. Jeśli masz uprawnienia do modyfikacji plików uklad.css oraz szczegoly.css, to możesz zmieniać wygląd witryny. Nie są Ci potrzebne żadne uprawnienia do kodu XHTML. Importowanie stylów możesz wykonać bezpośrednio w kodzie XHTML. Reguła @import może wystąpić w stylach wewnętrznych:

    W takiej sytuacji witryna będzie składała się z dwóch plików:  index.html,  uklad.css. Importowanie stylów CSS bywa wykorzystywane do ominięcia różnic w interpretacji CSS przez przeglądarkę Internet Explorer. W dokumencie XHTML umieszczamy specjalne komentarze, a w nich instrukcję @import:

    Komentarze tego typu są ignorowane przez wszystkie przeglądarki oprócz Internet Explorera. Internet Explorer interpretuje je natomiast jako instrukcję warunkową if dołączającą podany plik ie5.css tylko wówczas, gdy witryna jest przeglądana przy użyciu przeglądarki IE w wersji niższej niż 6 (skrót lt pochodzi

    2

    Osadzanie kodu XHTML umożliwia opisany w rozdziale 29. element object.

    Rozdział 38. ♦ Uzupełnienie wiadomości na temat CSS

    419

    od słów less than — mniejszy niż). W ten sposób style przeznaczone dla konkretnej wersji przeglądarki IE są zawarte w zewnętrznym pliku. Szczegółowa dokumentacja komentarzy dla przeglądarki IE jest dostępna na stronie: http://msdn. microsoft.com/en-us/library/ms537512%28v=vs.85%29.aspx. Komentarze warunkowe if/endif Internet Explorera mogą się okazać przydatne, gdy zechcesz poddać walidacji kod CSS zawierający właściwości niewystępujące w specyfikacji CSS. Style przeznaczone wyłącznie dla IE i niezgodne ze specyfikacją CSS przenosimy do osobnego pliku i dołączamy do dokumentu, stosując komentarze warunkowe if/endif. W ten sposób wynik automatycznej walidacji dokumentu w serwisie http://jigsaw.w3.org/css-validator/ nie będzie zawierał informacji o błędnych właściwościach.

    Ćwiczenie 38.5 Przekształć projekt 36.5 tak, by style były zawarte w trzech plikach: style.css, uklad.css oraz szczegoly.css. W pliku style.css umieść tylko reguły @import. W pliku uklad.css umieść style odpowiedzialne za układ witryny, a w pliku szczegoly.css — pozostałe style. Wykonując ćwiczenie, nie powinieneś dokonywać żadnych modyfikacji w żadnym z plików XHTML.

    Dziedziczenie Kaskadowe arkusze stylów umożliwiają dziedziczenie wartości. Dzięki temu nie musisz przypisywać wartości do wszystkich elementów, a jedynie do jednego elementu nadrzędnego. Jeśli w stylach umieścisz regułę: body { text-align: center; }

    to wartość center zostanie zastosowana do wszystkich elementów zawartych wewnątrz body, między innymi do div, blockquote oraz obu akapitów:

    lorem ipsum

    dolor



    sit amet





    Dzieje się tak dlatego, że właściwość text-align podlega dziedziczeniu. Niektóre właściwości CSS, jak na przykład font-family, font-size oraz font-style, podlegają dziedziczeniu. Inne, m.in. border, margin, padding, width, height — nie podlegają. Dziedziczenie możesz wymusić, stosując wartość inherit, np.: width: inherit; padding: inherit;

    Style do druku W wykonywanych do tej pory ćwiczeniach i projektach style CSS służyły do formatowania wyglądu witryny WWW na monitorze. Wykorzystując język CSS, możemy także sformatować witrynę WWW tak, by dobrze prezentowała się na wydruku. Umożliwia to atrybut media elementu link. Jeśli wartością elementu media jest screen, to style są przeznaczone do formatowania dokumentu wyświetlanego na ekranie:

    420

    Część VI ♦ Zagadnienia zaawansowane

    Jeśli wartością atrybutu media jest print, to style są przeznaczone do formatowania wydruku:

    Style, które są dołączone do strony WWW elementem link zawierającym atrybut media= "print ", będą używane, gdy użytkownik wykona w przeglądarce operację Plik/Drukuj. Style wydruku często sprowadzają się do:  usunięcia elementów dekoracyjnych, menu, nagłówka, stopki;  dodania informacji o pochodzeniu wydrukowanych treści. Usuwanie elementów strony WWW wykonujemy, wykorzystując właściwość display wartości none. Reguła: #menu { display: none; }

    zawarta w stylach print.css wyłącza widoczność menu na wydruku. Natomiast w celu dodania tekstu w drukowanym dokumencie należy właściwość display zastosować do dokumentu wyświetlanego na ekranie. W kodzie XHTML umieszczamy element:

    Style przeznaczone na ekran będą zawierały regułę, która sprawi, że powyższy element będzie niewidoczny: #copyright { display: none; }

    Natomiast w stylach przeznaczonych do wydruku nadpisujemy podaną wartość, podając: #copyright { display: block; }

    Wtedy witryna wyświetlana na ekranie będzie pozbawiona elementu o identyfikatorze #copyright, a wydruk będzie ten element zawierał. Często stosowanym trikiem jest połączenie stylów do wydruku z pseudoklasą :after. Dzięki takiemu połączeniu możesz wykonywać odsyłacze, które na wydruku zawierają adres URL. Jeśli w dokumencie umieścisz odsyłacz i sformatujesz go stylami widocznymi na listingu 38.3, wówczas wydruk będzie zawierał pełny adres URL odsyłacza. Listing 38.3. Połączenie stylów do druku i pseudoklasy :after

    ... Opis kafelkowania znajdziesz w artykule

    CSS Sprites: Image Slicing's Kiss of Death , którego autorem jest Dave Shea.

    Rozdział 38. ♦ Uzupełnienie wiadomości na temat CSS

    421

    Jeśli chcesz, by aktywacja hiperłącza powodowała wyświetlenie okna dialogowego Drukuj, to użyj specjalnego adresu URL, który zawiera kod JavaScript: ...

    Skrypt ten możesz również umieścić w nagłówku strony WWW:

    ...

    wówczas otworzenie witryny w przeglądarce będzie automatycznie powodowało wyświetlenie okna dialogowego wydruku strony. NOTH Style do druku — Ctrl+B+P

    Style formatujące wydruk dokumentu możemy dołączyć na dwa sposoby. Pierwszą metodą jest zastosowanie opisanego powyżej elementu link zawierającego atrybut media o wartości print. Drugą metodą jest osadzenie stylów wydruku w stylach CSS. Jeśli do dokumentu XHTML dołączamy style zawarte w pliku style.css, to bez względu na wartość atrybutu media dołączającego plik możemy wewnątrz dokumentu style.css umieścić regułę: @media print { h1 { } P { } }

    Reguła @media print powoduje, że style podane w nawiasach klamrowych będą stosowane wyłącznie do formatowania wydruku.

    Ćwiczenie 38.6 Wykonaj witrynę WWW prezentującą teksty i nuty trzech kolęd. Format witryny ustal plikami style.css oraz print.css. Pierwszy z plików CSS ma definiować wygląd witryny w przeglądarkach graficznych, a drugi — na wydruku. Style do druku przygotuj w taki sposób, by wydruki wykonywane opcją Plik/Drukuj nie zawierały menu, a tylko tekst kolędy oraz nuty. Dodatkowo wzbogać wydruki o informację na temat pochodzenia dokumentów. Informacje te mają być niewidoczne w oknie przeglądarki. Na każdej ze stron umieść odsyłacz z ikoną drukarki. Ma on powodować uruchomienie okna dialogowego Plik/Drukuj.

    Ćwiczenie 38.7 Wykonaj stronę WWW przedstawioną na listingu 38.3. W treści witryny dodaj przycisk:

    drukuj dokument



    Regułą: .przycisk { display: none; }

    wyłącz widoczność przycisku na wydruku. Po wykonaniu witryny sprawdź jej wygląd po wykonaniu opcji Plik/Podgląd wydruku.

    Część VI ♦ Zagadnienia zaawansowane

    422

    Style alternatywne Style formatujące wygląd witryny możemy wykonać w kilku wersjach. Przełączanie stosowanych stylów wykonujemy, wybierając odpowiednią opcję w menu przeglądarki Widok/Styl strony. Jeśli dokument XHTML zawiera trzy elementy link:



    domyślnie zastosowane zostaną style z pliku style.css. Style z plików duzy-kontrast.css oraz jasne.css będziemy mogli zastosować, wybierając opcje Widok/Styl strony/Style o wysokim kontraście oraz Widok/ Styl strony/Style jasne. Style domyślne mają atrybut: rel="stylesheet"

    Wartością atrybutu rel dla stylów alternatywnych jest: rel="alternate stylesheet"

    Tytuły ustalone atrybutem title nadają nazwy opcjom w menu przeglądarki Widok/Styl strony. Działanie stylów alternatywnych możesz sprawdzić, odwiedzając witrynę http://www.w3.org/Style/ Examples/007/alternatives. Po odwiedzeniu podanego adresu z menu Widok/Styl strony wybierz kilka różnych formatów witryny.

    Ćwiczenie 38.8 Do rozwiązania ćwiczenia 34.6 dołącz style alternatywne menu-z-prawej.css oraz menu-na-gorze.css. Pierwszy plik ma formatować dokument tak, by kolumna menu była tekstowa, nie zawierała żadnych obrazów tła i pojawiała się z prawej strony. Style menu-na-gorze.css mają sformatować witrynę tak, by style CSS pojawiły się w postaci poziomego paska w górnej części strony.

    Rozdział 39. ♦ Kolejność elementów w kodzie XHTML

    423

    Rozdział 39.

    Kolejność elementów w kodzie XHTML Kolejność elementów w kodzie XHTML ma istotny wpływ na wygląd witryny. Strona: Lorem ipsum

    Dolor sit amet...



    będzie wyglądała inaczej niż strona:

    Dolor sit amet...

    Lorem ipsum

    Mając na uwadze dostępność stron WWW, kod XHTML należy organizować w taki sposób, by treść występowała w kodzie XHTML przed menu i przed stopką1. Zatem zamiast w ten sposób:

    PRZYKŁAD NIEZALECANY

    ...

    ...

    stronę WWW tworzymy tak:

    PRZYKŁAD ZALECANY

    ...

    ...

    1

    Mark Pilgrim, W głąb dostępności, Dzień 10.

    424

    Część VI ♦ Zagadnienia zaawansowane

    Jeśli jest to trudne do wykonania, to należy przynajmniej na początku strony umieścić odsyłacz wewnętrzny umożliwiający szybkie przejście do treści:

    PRZYKŁAD DOPUSZCZALNY #przejdz-do-tresci { display: none; } ...

    przejdź do treści



    ...

    ...

    Widoczność odnośnika przejdź do treści w przeglądarkach graficznych wyłączamy stylami display: none.

    Zmiana kolejności kolumn pionowych W rozdziale 20. przygotowaliśmy wielokolumnowe układy o stałej szerokości. W szablonach dwukolumnowych numer 3 oraz 4 możemy modyfikować kolejność elementów div#menu oraz div#tresc, nie zmieniając stylów CSS. Jeśli w kodzie z listingu 20.6 kolumnę div#tresc umieścimy w pojemniku jako pierwszą, wówczas otrzymamy kod przedstawiony na listingu 39.1. Kod z listingu 39.1 sformatowany stylami z listingu 20.5 będzie wyglądał tak jak na rysunku 20.4. Listing 39.1. Układ nr 3 z rozdziału 20 po zmianie kolejności kolumn w kodzie XHTML






    W przypadku układów trójkolumnowych sytuacja jest trochę bardziej skomplikowana, gdyż kolumna z treścią ma wystąpić jako pierwsza w kodzie. Nie możemy jej jednak dosunąć ani do lewej, ani do prawej strony, gdyż ma ona znaleźć się wizualnie na środku. Możemy zastosować dwa rozwiązania: dodać dodatkowy element div lub użyć ujemnych marginesów. Pierwsze rozwiązanie polega na tym, by układ podzielić na dwa układy dwukolumnowe. Do układu z listingu 20.10 dodajmy dodatkowy element div#tmp oraz zmieńmy kolejność kolumn tak, by treść występowała jako pierwsza. Otrzymamy kod przedstawiony na listingu 39.2. Listing 39.2. XHTML układu nr 5 z rozdziału 20. po dodaniu dodatkowego elementu div i zmianie kolejności kolumn






    Rozdział 39. ♦ Kolejność elementów w kodzie XHTML

    425




    Style CSS z listingu 39.3 sformatują kod XHTML z listingu 39.2 tak, że będzie on wyglądał identycznie jak układ przedstawiony na rysunku 20.6. Listing 39.3. Style CSS formatujące kod z listingu 39.2 do postaci z rysunku 20.6 #pojemnik { width: 980px; margin: 0 auto; } #tmp { float: left; width: 730px; } #menulewe { float: left; width: 200px; } #tresc { float: right; width: 526px; border-left: 2px solid black; border-right: 2px solid black; } #menuprawe { float: right; width: 250px; } br.czyszczenie { clear: both; }

    Szerokość kolumny div#tmp jest równa sumie szerokości kolumn div#menulewe oraz div#tresc. Element div#tmp dosuwamy do lewej strony, a element div#menuprawe — do prawej. Wewnątrz elementu div#tmp element div#tresc dosuwamy do prawej strony, a element div#menulewe — do lewej. Druga metoda modyfikacji kolejności kolumn układu 5. z rozdziału 20. wykorzystuje ujemne marginesy. Gotowe rozwiązanie jest przedstawione na listingu 39.4. Listing 39.4. Modyfikacja kolejności elementów div w układzie 5. przy użyciu ujemnych marginesów #pojemnik { width: 980px; margin: 0 auto; } #menulewe { float: left; width: 200px; margin-left: -730px; } #tresc { float: left; width: 526px; border-left: 2px solid black; border-right: 2px solid black; margin-left: 200px; } #menuprawe { float: left; width: 250px;

    426

    Część VI ♦ Zagadnienia zaawansowane

    } ...

    ... ... ...

    W kodzie XHTML pierwszym elementem jest div#tresc. Element ten jest dosunięty do lewej krawędzi (float: left). Należy go odsunąć od lewej krawędzi o szerokość kolumny div#menulewe. Dlatego w regule o selektorze #tresc pojawia się wpis: margin-left: 200px;

    Po sformatowaniu elementu div#tresc przechodzimy do elementu div#menulewe. Ustalamy jego szerokość, i podając ujemną wartość marginesu, przesuwamy na lewo od elementu div#tresc: #menulewe { float: left; width: 200px; margin-left: -730px; }

    Podana wartość –730 jest równa sumie szerokości elementów div#tresc (530 pikseli) oraz div#menulewe (200 pikseli). Style elementu p nie ulegają zmianie. Układ 5. z rozdziału 20. składa się z trzech pionowych kolumn: ... ... ...

    Kolumny te oznaczmy literami L, T oraz P od pierwszych liter słów: lewa, treść, prawa. Oryginalny układ numer 5 z rozdziału 20. stosuje kolejność LTP. Listing 39.2 przedstawia rozwiązanie, w którym elementy są uporządkowane TLP. Stosując ujemne marginesy oraz dosuwanie do lewej i do prawej krawędzi, elementy L, T oraz P można uporządkować w dowolny inny sposób. Wszystkich kombinacji jest sześć: 1. LTP, 2. TLP, 3. LPT, 4. PTL, 5. TPL, 6. PLT. Kombinację LTP wykorzystaliśmy w układzie nr 5 z rozdziału 20., a porządek TLP omówiliśmy w dwóch wersjach:  rozwiązanie z dodatkowym elementem div#tmp — listing 39.2,  rozwiązanie bazujące na ujemnych marginesach — listing 39.4.

    Ćwiczenie 39.1 Wykonaj dwukolumnowy układ nr 3 z rozdziału 20. Kolumny umieść w kodzie XHTML w porządku przedstawionym na listingu 39.1: najpierw treść, potem menu.

    Ćwiczenie 39.2 Wykonaj dwukolumnowy układ nr 4 z rozdziału 20. Kolumny umieść w kodzie XHTML w porządku przedstawionym na listingu 39.1: najpierw treść, potem menu.

    Rozdział 39. ♦ Kolejność elementów w kodzie XHTML

    427

    Ćwiczenie 39.3 Wykonaj trójkolumnowy układ nr 5 z rozdziału 20. Kolumny umieść w kodzie XHTML w porządku TLP. Wykorzystaj technikę dosuwania dodatkowego elementu div#tmp przedstawioną na listingach 39.2 oraz 39.3.

    Ćwiczenie 39.4 Wykonaj trójkolumnowy układ nr 5 z rozdziału 20. Kolumny umieść w kodzie XHTML w porządku TLP. Wykorzystaj przedstawioną na listingu 39.4 technikę ujemnych marginesów.

    Ćwiczenie 39.5 Wykonaj układ nr 5 z rozdziału 20. Kolumny umieść w kodzie XHTML w porządku LPT.

    Ćwiczenie 39.6 Wykonaj układ nr 5 z rozdziału 20. Kolumny umieść w kodzie XHTML w porządku PTL.

    Ćwiczenie 39.7 Wykonaj układ nr 5 z rozdziału 20. Kolumny umieść w kodzie XHTML w porządku TPL.

    Ćwiczenie 39.8 Wykonaj układ nr 5 z rozdziału 20. Kolumny umieść w kodzie XHTML w porządku PLT.

    Zmiana kolejności poziomych pasów Układ 2. z rozdziału 20. prezentował podział na trzy poziome pasy. Kolejność elementów w kodzie XHTML jest przedstawiona na listingu 39.5. Elementy te w skrócie oznaczymy jako N, T oraz S (od słów: nagłówek, treść, stopka). Listing 39.5. Kolejność elementów XHTML w układzie 2. z rozdziału 20.

    ... ... ...

    Witryna zoptymalizowana pod względem dostępności powinna mieć kod XHTML przedstawiony na listingu 39.6. Pierwszym elementem jest treść, po niej następują nagłówek i stopka. Listing 39.6. Kolejność elementów XHTML w układzie 2. z rozdziału 20 #pojemnik { width: 760px; margin: 0 auto; position: relative; } #naglowek { height: 100px; position: absolute; top: 0; width: 760px; } #tresc { padding-top: 100px; }

    428

    Część VI ♦ Zagadnienia zaawansowane

    ...

    ... ... ...

    W celu zmiany kolejności elementów w kodzie XHTML wykorzystujemy pozycjonowanie kontekstowe omówione w rozdziale 19. Pojemnik otrzymuje wpis position: relative, zaś nagłówek i treść są wzbogacone o position: absolute. Treść przesuwamy o wysokość nagłówka do dołu, podając dopełnienie górne równe 100px. Następnie ustalamy wysokość nagłówka (height: 100px) oraz przesuwamy go do góry (top: 0). Konieczne jest również ustalenie szerokości nagłówka (width: 760px). Style stopki nie wymagają modyfikacji. Podział na pasy NTS również może być wykonany w sześciu wariantach: 1. NTS (układ 2. z rozdziału 20.), 2. TNS (listing 39.3), 3. NST, 4. STN, 5. TSN, 6. SNT.

    Ćwiczenie 39.9 Wykonaj układ nr 2 z rozdziału 20. Kolumny umieść w kodzie XHTML w porządku: TNS.

    Ćwiczenie 39.10 Wykonaj układ nr 2 z rozdziału 20. Kolumny umieść w kodzie XHTML w porządku: NST.

    Ćwiczenie 39.11 Wykonaj układ nr 2 z rozdziału 20. Kolumny umieść w kodzie XHTML w porządku: STN.

    Ćwiczenie 39.12 Wykonaj układ nr 2 z rozdziału 20. Kolumny umieść w kodzie XHTML w porządku: TSN.

    Ćwiczenie 39.13 Wykonaj układ nr 2 z rozdziału 20. Kolumny umieść w kodzie XHTML w porządku: SNT.

    Zmiana kolejności kolumn oraz poziomych pasów Oczywiście opisane techniki modyfikacji kolejności pionowych kolumn oraz poziomych pasów możemy połączyć. Układ nr 8 z rozdziału 20. należy wykonać tak, by element div#tresc wystąpił w kodzie XHTML jako pierwszy. Rozwiązanie takie jest przedstawione na listingu 39.7. Listing 39.7. Układ nr 8 z rozdziału 20. po ustaleniu kolejności elementów TLPNS #pojemnik { width: 980px; margin: 0 auto; position: relative;

    Rozdział 39. ♦ Kolejność elementów w kodzie XHTML } #srodek { padding-top: 100px; padding-bottom: 100px; } #tmp { float: left; width: 730px; } #menulewe { float: left; width: 200px; } #tresc { float: right; width: 526px; border-left: 2px solid black; border-right: 2px solid black; } #menuprawe { float: right; width: 250px; } #naglowek { border-bottom: 2px solid black; position: absolute; top: 0; left: 0; width: 980px; height: 100px; } #stopka { border-top: 2px solid black; position: absolute; bottom: 0; left: 0; width: 980px; height: 100px; } .czyszczenie { clear: both; }











    Ćwiczenie 39.14 Wykonaj układ nr 8 z rozdziału 20. Kolumny umieść w kodzie XHTML w porządku: TLPNS.

    429

    Część VI ♦ Zagadnienia zaawansowane

    430

    Ćwiczenie 39.15 Wykonaj układ nr 8 z rozdziału 20. Kolumny umieść w kodzie XHTML w porządku: TNLPS. Ponieważ nagłówek jest pozycjonowany bezwzględnie, możesz go umieścić w kodzie XHTML w dowolnym miejscu.

    Rozdział 40. ♦ Atrybuty XHTML

    431

    Rozdział 40.

    Atrybuty XHTML Specyfikacja języka XHTML wyróżnia cztery ważne grupy atrybutów1:  atrybuty zasadnicze (ang. core attributes),  atrybuty językowe (ang. internationalization attributes, I18N3),  zdarzenia (ang. events),  atrybuty dotyczące aktywnego punktu (ang. focus attributes).

    Atrybuty zasadnicze Atrybutami zasadniczymi są:  id — identyfikator elementu;  class — klasa elementu;  style — style CSS elementu,;  title — tytuł elementu. Atrybut id może być stosowany dla każdego elementu XHTML. Atrybuty class, style oraz title mogą być stosowane dla każdego elementu XHTML z wyjątkiem: html, head, title, base, meta, style, script i param. Oczywiście jeden element może mieć kilka atrybutów zasadniczych. Poprawnym przykładem jest: ...

    Atrybuty językowe Do grupy tej należą atrybuty:  lang — określenie języka elementu;  xml:lang — określenie języka elementu (składnia XML);  dir — kierunek przetwarzania tekstu. 1

    3

    Podział taki można znaleźć w pliku xhtml1-strict.dtd dołączonym do specyfikacji XHTML 1.0. Specyfikacja XHTML Modularization 1.1, Second Edition, W3C Recommendation 29 July 2010 przedstawia na stronie 32 trochę inny podział atrybutów. Symbol I18N jest specyficznym rodzajem skrótowca. Słowo internationalization ma 18 liter. Pierwsza litera to I, a ostatnia to N.

    432

    Część VI ♦ Zagadnienia zaawansowane

    Atrybuty te mogą towarzyszyć wszystkim elementom XHTML z wyjątkiem: base, script, br i param. Atrybuty lang oraz xml:lang należy stosować razem4, podając tę samą wartość: ...

    Wartością atrybutu dir może być ltr (ang. left to right — od lewej do prawej) lub rtl (ang. right to left — od prawej do lewej).

    Zdarzenia Do grupy zdarzeń należą:  onclick — kliknięcie;  ondblclick — podwójne kliknięcie;  onmousedown — naciśnięcie przycisku myszy;  onmouseup — zwolnienie przycisku myszy;  onmousemove — przesunięcie wskaźnika myszy nad element;  onmouseout — przesunięcie wskaźnika myszy poza element;  onkeypress — naciśnięcie i zwolnienie przycisku na klawiaturze;  onkeydown — naciśnięcie przycisku na klawiaturze;  onkeyup — zwolnienie przycisku na klawiaturze. Atrybuty te mogą być stosowane w odniesieniu do wszystkich elementów oprócz: html, head, title, base, meta, style, script, br i param. Wartością powyższych atrybutów jest kod JavaScript, który zostanie wykonany po wystąpieniu zdarzenia. Na przykład kliknięcie napisu lorem w elemencie span: lorem

    spowoduje wyświetlenie okna z tekstem ipsum. Wygląd elementu możemy zmienić, stosując style: span { color: blue; cursor: pointer; text-decoration: underline; }

    Ćwiczenie 40.1 Przygotuj stronę WWW, która będzie zawierała jeden element span , reagujący na kliknięcie. Rozwiązanie ćwiczenia jest przedstawione na listingu 40.1. Listing 40.1. Rozwiązanie ćwiczenia 40.1 span { color: blue; cursor: pointer; text-decoration: underline; } ...

    lorem



    4

    Specyfikacja XHTML 1.0, punkt C.7.

    Rozdział 40. ♦ Atrybuty XHTML

    433

    Ćwiczenie 40.2 Wykorzystując ćwiczenie 5.1, przygotuj stronę WWW, która po kliknięciu w dowolnym miejscu będzie wyświetlała informacje o trybie pracy przeglądarki. Rozwiązanie ćwiczenia jest przedstawione na listingu 40.2. Listing 40.2. Rozwiązanie ćwiczenia 40.2

    Lorem ipsum dolor sit amet...



    Atrybuty ogólne Wymienione trzy grupy, czyli atrybuty zasadnicze, atrybuty językowe oraz zdarzenia, są określane wspólnym mianem atrybutów ogólnych (ang. generic attributes). W specyfikacji języka stosowane jest oznaczenie %attrs;. Atrybuty te mogą być stosowane w odniesieniu do każdego elementu XHTML z wyjątkiem: html, head, title, meta, br, base, param, style i script. Oznacza to, że każdy spośród elementów:  body, address;  div, span;  h1, h2, h3, h4, h5, h6;  p, pre, q, blockquote, sub, sup, em, strong, dfn, code, samp, kbd, var, cite, abbr, acronym;  ins, del;  ul, ol, li, dl, dt, dd;  table, tr, td, th, thead, tfoot, tbody, caption, col, colgroup;  a, link;  img, object, map, area;  form, input, button, select, option, optgroup, textarea, label, fieldset, legend;  noscript;  hr, bdo może mieć dowolne spośród atrybutów:  id, class, style, title;  lang, xml:lang, dir;  onclick, ondblclick, onmousedown, onmouseup, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup.

    Atrybuty dotyczące aktywnego punktu Ostatnią grupą atrybutów są atrybuty dotyczące zmiany aktywnego elementu na stronie WWW. Atrybutami tymi są:  accesskey — definicja skrótu klawiszowego;  tabindex — kolejność elementów wyróżnianych przyciskiem tabulacji;

    Część VI ♦ Zagadnienia zaawansowane

    434

     onfocus — zdarzenie występujące wówczas, gdy element zostaje aktywny;  onblur — zdarzenie występujące wówczas, gdy element przestaje być aktywny. Atrybuty tej grupy mogą towarzyszyć elementom: a, area, input, textarea i button. Dodatkowo:  Atrybut accesskey może być użyty dla elementów label oraz legend.  Atrybut tabindex może towarzyszyć elementom object i select.  Zdarzenia onfocus i onblur są generowane również dla elementów label i select.

    Ćwiczenie 40.3 Przygotuj stronę WWW z czterema odsyłaczami do stron: http://www.google.com, http://www.onet.pl, http://www.allegro.pl i http://www.e-bay.com występującymi na stronie w dokładnie takiej kolejności. Witrynę wykonaj w taki sposób, by tabulator przechodził po odsyłaczach w kolejności: Allegro, Google, eBay, Onet. Dodatkowo zdefiniuj skróty klawiszowe: A (Allegro), G (Google), E (eBay) oraz O (Onet). Rozwiązanie ćwiczenia jest przedstawione na listingu 40.3. Listing 40.3. Rozwiązanie ćwiczenia 40.3
  • eBay


  • Wykonaną stronę otwórz w przeglądarce. Naciskaj przycisk tabulacji i obserwuj kolejność, w jakiej będą wyróżniane odsyłacze. Następnie naciśnij w Firefoksie skróty klawiszowe: Lewy Alt+Shift+G, Lewy Alt+Shift+O, Lewy Alt+Shift+A, Lewy Alt+Shift+E. Powrót do poprzedniej strony realizuje przycisk backspace. W przeglądarce Chrome skróty klawiszowe aktywujemy identycznie jak w Firefoksie. W przeglądarce IE należy najpierw nacisnąć kombinację Lewy Alt + litera (np. Lewy Alt+G), a następnie wybór potwierdzić Enterem. Przeglądarka Safari aktywuje skróty po naciśnięciu kombinacji Lewy Alt + litera, bez konieczności naciskania Entera. W celu aktywacji skrótów klawiszowych w Operze należy nacisnąć kombinację przycisków Shift+Esc. Wówczas na ekranie zostanie wyświetlona lista dostępnych skrótów wraz z informacją o tym, jak uaktywnić każdy z nich. Etykietami prezentowanych skrótów są napisy zawarte w hiperłączach, wartości atrybutów title lub — w przypadku kontrolek formularzy — wartości atrybutu value.

    Rozdział 41. ♦ Formularze

    435

    Rozdział 41.

    Formularze Przetwarzanie formularza oprogramowujemy w języku takim jak na przykład PHP, Python lub PERL. Formularza nie da się przetworzyć w języku XHTML. Kod XHTML w połączeniu z CSS ustala jedynie, jakie kontrolki są zawarte w formularzu i jak całość ma wyglądać.

    Formularz w języku XHTML definiujemy elementem form. Element ten należy do grupy elementów blokowych. Pomiędzy znacznikami oraz umieszczamy zawartość formularza, na którą składają się elementy input, button, select, optgroup, option, textarea, label, fieldset oraz legend. Kontrolki te układamy, stosując akapity oraz elementy div. Zwróć uwagę na fakt, że kontrolki formularza są elementami liniowymi i nie mogą znajdować się bezpośrednio w elemencie form. Poprawną zawartością formularza jest co najmniej jeden element blokowy z wykluczeniem samego formularza (formularzy nie można zagnieżdżać). Zatem pomiędzy znacznikami oraz umieszczamy elementy p lub div, zaś dopiero wewnątrz elementów blokowych właściwe kontrolki formularza. Pamiętaj także, że kontrolki formularza należy podpisywać przy użyciu elementu label. Kod widoczny na listingu 41.1 jest niepoprawny. Brakuje w nim elementu blokowego oraz etykiet. Poprawna wersja formularza z listingu 41.1 jest widoczna na listingu 41.2. Listing 41.1. Błędny formularz, w którym brakuje elementu blokowego oraz etykiet

    PRZYKŁAD NIEPOPRAWNY

    Login: Hasło:

    Listing 41.2. Przykładowy formularz

    Login: Hasło:



    Ćwiczenie 41.1 Przygotuj stronę zawierającą formularz przedstawiony na listingu 41.2. Tabela 41.1 zawiera zestawienie wszystkich elementów języka XHTML dotyczących formularzy.

    Część VI ♦ Zagadnienia zaawansowane

    436 Tabela 41.1. Wszystkie elementy języka XHTML dotyczące formularzy Element

    Znaczenie

    Poprawna zawartość

    form

    Formularz

    Elementy blokowe z wykluczeniem elementu form

    input

    Wiersz wprowadzania danych, przycisk, pole wyboru, wykluczające pole wyboru

    Element pusty

    button

    Przycisk

    Element blokowy lub liniowy z wyjątkiem: a, form, fieldset oraz kontrolek formularzy input, select, textarea, label i button

    select

    Lista opcji

    Wyłącznie elementy optgroup oraz option

    optgroup

    Grupa opcji

    Element option

    option

    Pojedyncza opcja

    Tekst pozbawiony znaczników

    textarea

    Pole tekstowe

    Tekst pozbawiony znaczników

    label

    Etykieta kontrolki formularza

    Elementy liniowe

    fieldset

    Grupa kontrolek formularza

    Tekst pozbawiony znaczników, legend oraz elementy blokowe lub liniowe

    legend

    Etykieta grupy kontrolek

    Elementy liniowe (w tym kontrolki formularzy input, select, textarea, label oraz button)

    Atrybuty formularza Element form ma — oprócz atrybutów ogólnych %attrs; — własne atrybuty charakterystyczne: action, method, enctype, accept, name, onsubmit, onreset oraz accept-charset. NOTH ... — Ctrl+G+F

    Najważniejszym z nich jest obowiązkowy atrybut action. Ustala on adres URL skryptu, który będzie wywołany po zatwierdzeniu formularza przyciskiem Wyślij. Dane wprowadzone do formularza zostaną przekazane do podanego skryptu. Drugim ważnym atrybutem formularza jest atrybut method. Jego wartością jest nazwa metody protokołu HTTP. Dwoma dopuszczalnymi wartościami są get oraz post. Wprawdzie wartością domyślną jest get, jednakże zaleca się — głównie z powodów bezpieczeństwa — stosowanie metody post. Atrybut enctype ustala sposób kodowania danych dołączonych do zapytania. Ma on znaczenie jedynie, gdy formularz przekazujemy metodą post (w przypadku metody get zawsze stosowane jest kodowanie application/x-www-form-urlencoded ). Domyślnie wartością tego atrybutu jest typ application/ x-www-form-urlencoded. W przypadku przekazywania pliku na serwer należy ustalić wartość tego atrybutu na multipart/form-data. Z atrybutu enctype korzystamy na dwa sposoby. Jeśli formularz służy do przekazywania pliku na serwer, wówczas należy nadać atrybutowi enctype wartość enctype="multipart/form-data". W przeciwnym razie (czyli w przypadku zwykłego formularza zawierającego kilka kontrolek) atrybut enctype pomijamy. Przyjmie on wówczas wartość domyślną. Atrybut accept nie jest wykorzystywany. Miał on umożliwiać wskazywanie typów plików, jakie mogą być wysyłane formularzem na serwer, jednakże współczesne przeglądarki ignorują jego wartość. Żadna przeglądarka nie filtruje plików na podstawie atrybutu accept elementu form:

    Rozdział 41. ♦ Formularze

    437

    KOD NIEOBSŁUGIWANY PRZEZ ŻADNĄ PRZEGLĄDARKĘ

    Wreszcie zdarzenia onsubmit oraz onreset umożliwiają wykonywanie skryptów po zatwierdzeniu oraz zresetowaniu formularza. Tabela 41.2 zawiera sumaryczne zestawienie wszystkich specyficznych atrybutów formularza. Tabela 41.2. Atrybuty specyficzne elementu form Wartość domyślna

    Uwagi

    Adres URL skryptu przetwarzającego formularz

    Brak

    Wymagany.

    method

    get lub post: metoda protokołu HTTP używana do przekazywania wprowadzonych danych

    get

    Zalecane jest stosowanie metody post.

    enctype

    Sposób kodowania danych zawartych w formularzu

    application/ ´x-www-form´urlencoded

    W przypadku zwykłego formularza należy stosować metodę post i domyślną wartość atrybutu enctype (pomijamy atrybut enctype w znaczniku ). W przypadku formularza, który przesyła na serwer plik, stosujemy metodę post i enctype="multipart/form-data".

    accept

    Typ plików, jakie mają być zawarte w oknie dialogowym do wyboru nazwy pliku

    -

    Atrybut ignorowany przez przeglądarki.

    name

    Nazwa identyfikująca formularz

    -

    Użycie tego atrybutu jest odradzane. W jego miejsce należy stosować atrybut id.

    onsubmit

    Skrypt JavaScript wykonywany po zatwierdzeniu formularza, przed wysłaniem zapytania HTTP

    -

    Obsługa zdarzenia może być wykorzystywana do walidacji formularza. Jeśli skrypt zwraca wartość false, wówczas formularz nie zostaje wysłany.

    onreset

    Skrypt JavaScript wykonywany po zresetowaniu formularza

    -

    Umożliwia inicjalizację pól formularza wartościami domyślnymi.

    accept-charset

    Kodowanie znaków

    -

    Kodowanie znaków stosowane w formularzu.

    Atrybut

    Znaczenie

    action

    Kontrolki formularza Formularz może zawierać kilka rodzajów kontrolek. Należą do nich:  wiersze wprowadzania tekstu,  wiersze wprowadzania haseł,  przyciski,  przyciski wyboru (ang. checkbox),  wzajemnie wykluczając się przyciski wyboru (ang. radio buttons),  listy rozwijane,

    Część VI ♦ Zagadnienia zaawansowane

    438

       

    listy wyboru, pola tekstowe, pola ukryte, przyciski do wyboru pliku.

    Kontrolki te umieszczamy wewnątrz formularza, stosując elementy input, button, select, optgroup, option i textarea. Dodatkowo elementy label, fieldset i legend umożliwiają grupowanie i podpisywanie kontrolek.

    Atrybuty ogólne kontrolek formularza Większość kontrolek zawartych w formularzu ma atrybut name (wyjątkami są przyciski zatwierdzające i resetujące formularz, opcje i grupy opcji option oraz optgroup, a także elementy fieldset, legend i label). Atrybut ten ustala nazwę kontrolki, jaka będzie przekazana do skryptu. Jeśli wewnątrz następującej kontrolki input:

    wprowadzimy napis [email protected], wówczas do skryptu przetwarzanego po stronie serwera zostanie przekazana zmienna: [email protected]

    W języku PHP powyższa zmienna będzie dostępna (w zależności od atrybutu method elementu form) w jednej z tablic $_POST lub $_GET, np.: $_GET['email'] === '[email protected]' $_POST['email'] === '[email protected]'

    Następnym atrybutem, który będziemy dołączać do większości kontrolek, jest atrybut value. W zależności od kontrolki atrybut ten ustala bieżącą wartość zmiennej lub etykietę kontrolki. Również atrybuty readonly, disabled, accesskey oraz tabindex znajdują zastosowanie w odniesieniu do wielu kontrolek formularza. Atrybuty readonly oraz disabled są atrybutami logicznymi, których wartość ustalamy następująco:

    Atrybut readonly uniemożliwia modyfikację wartości kontrolki. Kontrolka taka jest widoczna i może stać się aktywna (tj. możemy, korzystając na przykład z tabulatora, umieścić kursor wewnątrz kontrolki). Nie możemy jednak zmieniać jej wartości. Po zatwierdzeniu formularza kontrolka taka jest przesyłana do skryptu przetwarzającego formularz. Natomiast kontrolki mające atrybut disabled są niedostępne. Nie możemy zmieniać ich wartości ani ich uaktywniać. Co więcej, po przesłaniu formularza wartości kontrolek oznaczonych atrybutem disabled nie są przesyłane do skryptu. Jedynym sposobem na odblokowanie kontrolek readonly oraz disabled jest odpowiednie oprogramowanie zdarzeń formularza lub kontrolek w JavaScript. W przeciwnym razie kontrolki takie będą przez cały czas niedostępne. Atrybut accesskey ustala skrót klawiszowy dla danej kontrolki. Skróty klawiszowe formularzy aktywujemy identycznie jak skróty klawiszowe opisane w ćwiczeniu 40.3. Ostatni z atrybutów ogólnych, tabindex, umożliwia ustalenie kolejności, w jakiej kontrolki formularza będą aktywowane tabulatorem. Wartością atrybutu jest liczba całkowita ustalająca pozycję kontrolki na liście.

    Rozdział 41. ♦ Formularze

    439

    Ćwiczenie 41.2 Przygotuj formularz zawierający jedną kontrolkę tylko do odczytu i jedną kontrolkę niedostępną.

    Ćwiczenie 41.3 Przygotuj formularz umożliwiający przechodzenie do pól wprowadzania danych przy użyciu skrótów klawiszowych.

    Ćwiczenie 41.4 Przygotuj formularz, który stosuje atrybut tabindex do ustalenia kolejności aktywacji pól.

    Zdarzenia dotyczące kontrolek Kontrolkom formularza możemy oprogramować kilka zdarzeń, które występują podczas wypełniania formularza. Zdarzeniami tymi są onfocus (występuje ono wtedy, gdy kontrolka staje się aktywna, tj. gdy kursor zostaje umieszczony wewnątrz niej), onblur (występuje ono wtedy, gdy kursor opuszcza kontrolkę), onselect (występuje wówczas, gdy w polu tekstowym zostaje zaznaczony pewien tekst; dotyczy ono tylko pól tekstowych) oraz onchange (występuje wówczas, gdy kontrolka zmienia wartość). Zdarzenia oprogramowujemy w języku JavaScript.

    Elementy input Element input służy do umieszczania w formularzu kilku różnych rodzajów kontrolek, m.in. wierszy wprowadzania danych, pól wyboru oraz wykluczających pól wyboru. O rodzaju kontrolki decyduje atrybut type. Wartością domyślną atrybutu type jest text. Kontrolka input typu text służy do wprowadzania jednego wiersza tekstu. Wartości atrybutu type są zawarte w tabeli 41.3. Tabela 41.3. Typy elementu input Typ kontrolki

    Zastosowanie

    submit

    Przycisk do wysyłania formularza

    reset

    Przycisk do resetowania wprowadzonych danych

    text

    Pojedynczy wiersz do wprowadzania tekstu

    password

    Pojedynczy wiersz do wprowadzania tekstu; wprowadzane znaki nie są widoczne

    checkbox

    Pole wyboru

    radio

    Wykluczające pole wyboru

    hidden

    Przycisk niewidoczny służący do dołączania dodatkowych zmiennych do formularza

    button

    Przycisk

    file

    Przycisk umożliwiający wybranie pliku

    image

    Obraz; po jego kliknięciu do skryptu zostają przesłane współrzędne klikniętego piksela

    NOTH — Ctrl+G+I

    Lista atrybutów elementu input jest dość pokaźna. Pełne zestawienie jest zawarte w tabeli 41.4. Atrybuty elementu input mają różne znaczenie w zależności od typu kontrolki (czyli wartości atrybutu type).

    Część VI ♦ Zagadnienia zaawansowane

    440 Tabela 41.4. Atrybuty kontrolki input Atrybut

    Znaczenie

    type

    Typ kontrolki

    name

    Nazwa kontrolki

    value

    Etykieta lub wartość

    checked

    Wybrana/niewybrana

    disabled

    Dostępna/niedostępna

    readonly

    Tylko do odczytu

    size

    Rozmiar kontrolki mierzony liczbą znaków

    maxlength

    Maksymalna liczba znaków mieszczących się w kontrolce

    src

    Adres URL obrazu

    alt

    Objaśnienie obrazu

    usemap

    Mapa

    ismap

    Czy kontrolka jest mapą?

    tabindex

    Kolejność wędrówki po kontrolkach formularza tabulatorem

    accesskey

    Skrót klawiszowy

    onfocus

    Obsługa zdarzenia uaktywnienia kontrolki

    onblur

    Obsługa zdarzenia deaktywacji kontrolki

    onselect

    Obsługa zdarzenia zaznaczania tekstu

    onchange

    Obsługa zdarzenia modyfikacji kontrolki

    accept

    Rodzaj plików, jakie mogą być wybrane przy przesyłaniu pliku na serwer

    Przyciski zatwierdzające i resetujące formularz W niemal każdym formularzu znajduje się przycisk zatwierdzający. Przycisk taki tworzymy za pomocą kontrolki input typu submit:

    Atrybut value ustala etykietę przycisku. Etykietą może być dowolny napis, na przykład OK, Szukaj lub Zaloguj. Jeden formularz może mieć kilka przycisków zatwierdzających wysłanie. Wówczas przyciski powinny mieć atrybut name, umożliwiający stwierdzenie, który z nich został naciśnięty:



    Po naciśnięciu dowolnego z trzech podanych wyżej przycisków formularz zostanie wysłany na serwer.

    Ćwiczenie 41.5 Przygotuj formularz, który zawiera trzy przyciski do wysyłania. Przycisk do resetowania formularza ma typ reset. Podobnie jak w przypadku przycisku wysyłającego formularz, atrybut value stanowi etykietę przycisku:

    Rozdział 41. ♦ Formularze

    441

    Wiersz wprowadzania danych Najczęściej stosowaną kontrolką formularzy jest wiersz wprowadzania danych. Kontrolkę taką tworzymy elementem input typu text:

    Ponieważ wartość text jest wartością domyślną, powyższą kontrolkę można w równoważny sposób zapisać jako:

    W stosunku do wiersza wprowadzania danych zastosowanie znajdują wymienione już atrybuty ogólne name, value, readonly, disabled, accesskey oraz tabindex, jak również size i maxlength. Atrybut size ustala szerokość pola mierzoną liczbą znaków. Natomiast wartość maxlength ogranicza liczbę znaków, jaką kontrolka może pomieścić.

    Ćwiczenie 41.6 Przygotuj formularz prezentujący wszystkie atrybuty wiersza wprowadzania danych.

    Pole hasła Pole input typu password służy do wprowadzania hasła. Napis wprowadzany do kontrolki nie jest widoczny na ekranie. Kontrolka taka ma postać:

    Należy pamiętać, że hasło wprowadzone do formularza nie podlega żadnej ochronie. Jest ono przekazywane w zapytaniu HTTP jako zwykły, niezaszyfrowany tekst. Jedyną ochroną, jaką zapewnia pole typu password, jest uniemożliwienie podejrzenia hasła na ekranie, co ilustruje rysunek 41.1. Rysunek 41.1. Standardowy wiersz wprowadzania danych oraz pole typu password

    Dla pola tekstowego typu password znaczenie atrybutów jest identyczne jak w przypadku zwykłego pola tekstowego. Ustalanie szerokości kontrolek input możemy zrealizować, stosując atrybut size lub wykorzystując arkusze stylów. W formularzu z rysunku 41.1 kontrolki input mają szerokość 100 pikseli ustaloną stylem: input { width: 100px; }

    Ćwiczenie 41.7 Przygotuj formularz zawierający pole do wprowadzania hasła.

    Pola wyboru Element input typu checkbox stanowi pole wyboru, które możemy zaznaczyć lub odznaczyć. W najprostszej postaci pole wygląda następująco:

    442

    Część VI ♦ Zagadnienia zaawansowane

    Po przesłaniu formularza zawierającego powyższe pole dostępna będzie w skrypcie PHP zmienna $_POST['win95'] o wartości on. Jeśli pole ma atrybut value, np.:

    to zmienna dostępna w skrypcie PHP przyjmie wartość ustaloną atrybutem value, czyli $_POST['dos'] będzie równe 'MSDOS'. Dodatkowo logiczny atrybut checked może być wykorzystany do inicjalizacji pól wyboru. Pola niemające atrybutu checked są domyślnie odznaczone, zaś pola z podanym atrybutem checked są zaznaczone. Dowolna liczba pól wyboru może być równocześnie zaznaczona:

    co ilustruje rysunek 41.2. Rysunek 41.2. Pola wyboru

    Ćwiczenie 41.8 Przygotuj formularz zawierający pola wyboru widoczne na rysunku 41.2.

    Wykluczające pola wyboru Drugim rodzajem pól wyboru są pola wzajemnie się wykluczające. W odróżnieniu od pól wyboru typu checkbox, spośród kilku pól input typu radio tylko jedno może być zaznaczone: POLSKA: NIEMCY:

    Wszystkie powiązane ze sobą pola muszą mieć identyczną wartość atrybutu name. W powyższym przykładzie wartością tą jest napis kraj. Ponadto każde pole wyboru musi mieć wartość ustaloną atrybutem value. Kontrolki możemy inicjować, stosując — podobnie jak w przypadku pól typu checkbox — atrybut checked. Tym razem jednak zaznaczyć możemy co najwyżej jedno pole. Formularz może zawierać kilka niezależnych grup kontrolek radio. Przykładem może być wybór kraju oraz dyscypliny sportu — oba wybory są niezależne. W ramach każdej kategorii możemy zaznaczyć jedynie jeden element. W takim przypadku obie grupy kontrolek są odróżniane na podstawie atrybutu name. Kontrolki z każdej grupy współdzielą unikalną nazwę. Wygląd wykluczających się przycisków jest przedstawiony na rysunku 41.3. Rysunek 41.3. Wykluczające się wzajemnie pola wyboru

    Rozdział 41. ♦ Formularze

    443

    Ćwiczenie 41.9 Przygotuj formularz zawierający wzajemnie wykluczające się pola wyboru z rysunku 41.3.

    Ćwiczenie 41.10 Przygotuj formularz zawierający dwie niezależne grupy wzajemnie wykluczających się pól wyboru.

    Kontrolki ukryte Kolejnym typem kontrolek input są kontrolki ukryte. Kontrolki takie są niewidoczne i służą do przekazywania dodatkowych zmiennych w zapytaniach HTTP. Ponieważ nie są one widoczne, nie można zmieniać ich wartości za pomocą myszy czy klawiatury. Oto przykładowe kontrolki ukryte:

    Możemy je wykorzystać na przykład do podpisywania formularza. Umieszczając w formularzu pole ukryte zawierające pewną wygenerowaną przez skrypt i trudną do odgadnięcia wartość, możemy upewnić się, że dane przesłane po zatwierdzeniu skryptu faktycznie pochodzą z formularza. Należy mieć świadomość, że kontrolki ukryte nie są w żaden sposób zaszyfrowane. Zaglądając do źródła strony, ujrzymy wszystkie ukryte kontrolki zawarte w formularzu. Ponieważ kontrolki te nie są w ogóle wyświetlane przez przeglądarkę, w odniesieniu do nich nie ma sensu stosowanie dodatkowych atrybutów.

    Ćwiczenie 41.11 Przygotuj formularz zawierający kilka kontrolek ukrytych.

    Przyciski Kontrolka input typu button jest przyciskiem. Przyciski takie po naciśnięciu nie wywołują żadnej predefiniowanej akcji ze strony przeglądarki. Ani nie resetują zawartości, ani nie wysyłają formularza. W celu wykorzystania takiego przycisku należy oprogramować obsługę zdarzeń JavaScript. Oto przykładowe przyciski:

    Ćwiczenie 41.12 Przygotuj formularz zawierający przyciski input typu button.

    Kontrolka wyboru pliku Pole input typu file służy do przekazywania plików za pomocą formularza. Kontrolka taka jest przedstawiana w formularzu w postaci przycisku z napisem Przeglądaj…. Po naciśnięciu przycisku przeglądarka wyświetla okno dialogowe, które umożliwia wybór pliku. Po dokonaniu wyboru i zatwierdzeniu formularza wybrany plik zostaje przekazany na serwer. Kontrolka do wyboru pliku ma dwa istotne atrybuty: type oraz name. Atrybut name ustala nazwę zmiennej przekazywanej do skryptu:

    444

    Część VI ♦ Zagadnienia zaawansowane

    Formularz zawierający kontrolki typu file musi być przekazywany metodą post. Ponadto należy ustalić sposób kodowania danych pochodzących z formularza jako enctype="multipart/form-data". W formularzu warto umieścić (przed kontrolką typu file) ukryte pole ustalające wartość zmiennej MAX_FILE_SIZE. Wartość taka ogranicza wielkość pliku, jaki możemy przekazać za pomocą formularza. Nie jest to skuteczne zabezpieczenie przed złośliwymi użytkownikami, gdyż łatwo je ominąć (na przykład przygotowując własny formularz). Dzięki zawarciu w formularzu informacji o maksymalnym rozmiarze pliku unikniemy jednak sytuacji, w której użytkownik czeka dłuższy odcinek czasu tylko po to, by zobaczyć komunikat (pochodzący z serwera) informujący o tym, że wybrany plik jest zbyt duży. Jeśli informacja o maksymalnym rozmiarze jest zawarta w formularzu, to przeglądarka nie wysyła na serwer zbyt dużych plików. Podana wielkość jest mierzona w bajtach. Kod:

    ogranicza wielkość pliku do 3000 bajtów. Atrybut accept ustala maskę nazwy plików dla okna dialogowego:

    Jest on obsługiwany wyłącznie przez Operę.

    Ćwiczenie 41.13 Przygotuj formularz zawierający kontrolkę do przekazywania plików na serwer.

    Obraz Ostatnim typem kontrolki input jest image. Kontrolka taka służy do umieszczania w formularzu obrazów. Po kliknięciu obrazu formularz zostaje przesłany, zaś do skryptu przekazywane są współrzędne klikniętego piksela. Obowiązkowymi atrybutami są type, name, src oraz alt. Atrybut src ustala adres URL wyświetlanego obrazu, natomiast alt zawiera tekst alternatywny. (Rola obydwu atrybutów jest analogiczna jak w przypadku elementu img). Oto kod przykładowej kontrolki tego typu:

    Ćwiczenie 41.14 Przygotuj formularz zawierający kontrolkę input typu image.

    Element button Kolejnym elementem służącym do tworzenia kontrolek formularzy jest element button. Element ten służy do tworzenia przycisków. Atrybut type, o poprawnych wartościach submit, reset oraz button, ustala rodzaj przycisku. NOTH ... — Ctrl+G+B

    Przycisk wykonany z wykorzystaniem elementu button ma następujący kod:

    Wyślij

    Rozdział 41. ♦ Formularze

    445

    Jego działanie jest identyczne jak przycisku:

    Podobnie przycisk button typu reset odpowiada przyciskowi input typu reset, zaś button typu button — przyciskowi input typu button. Jedyna różnica pomiędzy przyciskami tworzonymi elementami button i input polega na tym, że przyciski button mają znaczniki otwierający i zamykający. Dzięki temu mogą zawierać inne znaczniki. Jako zawartość przycisku możemy podać tekst lub element img. Podany obraz zostanie umieszczony na przycisku. Kod:



    tworzy przycisk przedstawiony na rysunku 41.4. Rysunek 41.4. Przycisk z ikoną

    Ćwiczenie 41.15 Przygotuj formularz zawierający przycisk button z ikoną widoczną na rysunku 41.4.

    Listy Elementy select, option oraz optgroup służą do tworzenia list. Wewnątrz elementu select umieszczamy poszczególne elementy listy definiowane elementem option. Dodatkowo opcje listy mogą być pogrupowane elementami optgroup. Poprawną zawartością elementu select są wyłącznie elementy option oraz optgroup. NOTH ... — Ctrl+G+S ... — Ctrl+G+O ... — Ctrl+G+O

    W najprostszym przypadku lista składa się z elementu select zawierającego kilka opcji option:

    Poniedziałek Wtorek Środa ...

    Opcje option mogą mieć atrybuty value oraz selected. Atrybut value ustala wartość zmiennej przekazywanej do skryptu. Natomiast atrybut selected służy do wskazania elementu listy, który powinien być początkowo wybrany. Domyślnie listy wyboru są wyświetlane w postaci list rozwijanych, które umożliwiają wybranie tylko jednego elementu. Właściwości listy możemy zmienić, stosując atrybuty size oraz multiple elementu select.

    446

    Część VI ♦ Zagadnienia zaawansowane

    Atrybut size ustala liczbę elementów listy, które będą widoczne na ekranie (wartością domyślną jest 1 — lista rozwijana). Lista:

    Poniedziałek Wtorek Środa Czwartek ...

    będzie wyświetlana w postaci prostokąta zawierającego trzy wiersze i wyposażonego w suwak. Natomiast atrybut multiple jest atrybutem logicznym, który umożliwia zaznaczanie na liście kilku elementów. Rysunek 41.5 przedstawia trzy przykładowe listy wyboru.

    Rysunek 41.5. Listy wyboru

    Stosując element optgroup, mamy możliwość nadania liście struktury. Opcje ograniczone znacznikami optgroup stanowią podmenu niższego poziomu. Atrybut label elementu optgroup ustala etykietę grupy opcji:

    Albea Multipla ...

    Escort Fiesta ...

    ...

    Etykieta taka jest wytłuszczona na liście i nie można jej zaznaczyć. Lista stosująca elementy optgroup została przedstawiona na rysunku 41.6. Rysunek 41.6. Lista z opcjami pogrupowanymi elementami optgroup

    Rozdział 41. ♦ Formularze

    447

    Ćwiczenie 41.16 Przygotuj formularz zawierający trzy rodzaje list widoczne na rysunku 41.5.

    Ćwiczenie 41.17 Przygotuj formularz zawierający listę przedstawioną na rysunku 41.6.

    Pole tekstowe Ostatnim rodzajem kontrolek dostępnych w języku XHTML, które umożliwiają wprowadzanie danych, są pola tekstowe. Pole takie definiujemy elementem textarea. Atrybuty rows oraz cols ustalają wymiar pola tekstowego mierzony liczbą wierszy i kolumn tekstu. Poniższe pole tekstowe liczy pięć wierszy tekstu. W każdym wierszu możemy umieścić 10 znaków:

    Kto? Gdzie? Kiedy?

    Po wprowadzeniu większej liczby wierszy tekstu suwak pionowy kontrolki staje się aktywny. Natomiast szerokość kontrolki nie ulega zmianie nawet po wprowadzeniu długiego tekstu. Suwak poziomy również się nie pojawia — zbyt długi tekst zostaje zawinięty. Początkowa zawartość kontrolki jest umieszczana pomiędzy znacznikami elementu textarea. NOTH ... — Ctrl+G+T

    Ćwiczenie 41.18 Przygotuj formularz zawierający pole tekstowe textarea.

    Grupowanie i podpisywanie kontrolek formularza Dodatkowymi elementami, które możemy umieścić w formularzu, są etykiety label, elementy grupujące fieldset oraz podpisy grup legend. Elementy te nie umożliwiają wprowadzania danych do formularza. Modyfikują jedynie wygląd oraz strukturę formularza, dzięki czemu staje się on bardziej czytelny i dostępny. NOTH ... — Ctrl+G+L ... — Ctrl+G+L ... — Ctrl+G+F

    Etykiety label służą do podpisywania kontrolek. Umieszczamy je w formularzu na dwa sposoby. Po pierwsze, możemy podpisywaną kontrolkę umieścić wewnątrz etykiety:





    Imię:

    Część VI ♦ Zagadnienia zaawansowane

    448

    W powyższym przykładzie tekst Imię jest podpisem pola input (pamiętajmy, że element label nie może występować bezpośrednio w formularzu; konieczne jest użycie elementu blokowego, na przykład akapitu). Po drugie, możemy wykorzystać atrybut for elementu label. Atrybut ten zawiera identyfikator kontrolki, z którą związana jest etykieta: Imię:

    Etykiety, podobnie jak i inne kontrolki formularzy, mogą mieć skrót klawiszowy. W przypadku przeniesienia kursora do etykiety (poprzez aktywację skrótu klawiszowego lub kliknięcie w etykietę) kursor zostanie faktycznie umieszczony w kontrolce skojarzonej z etykietą. Kontrolki dotyczące podobnej tematyki możemy zgrupować, stosując element fieldset. Element ten należy do grupy elementów blokowych i może występować bezpośrednio pomiędzy znacznikami formularza. Kontrolki umieszczone wewnątrz elementu fieldset zostaną otoczone obramowaniem. Ramkę możemy wzbogacić o podpis, stosując element legend. Jedynymi atrybutami elementu fieldset są atrybuty grupy %attrs;, natomiast element legend ma ponadto atrybut accesskey. Rysunek 41.7 przedstawia formularz zawierający dwie grupy kontrolek podpisane Kto wygra mistrzostwa świata w piłce nożnej w 2006 roku? oraz Którzy polscy zawodnicy zostaną powołani do kadry?. Pierwsza z grup jest zdefiniowana następującym kodem XHTML:

    Kto wygra

    Niemcy Polska Francja Włochy

    Rysunek 41.7. Pola wyboru pogrupowane elementami fieldset. Obie grupy podpisano, stosując element legend

    Ćwiczenie 41.19 Przygotuj formularz przedstawiony na rysunku 41.7. Wykorzystaj w nim elementy fieldset oraz legend.

    Podsumowanie Pamiętaj, że formularze stanowią pomost łączący trzy rodzaje języków: język znaczników, język przetwarzania po stronie serwera (ang. server-side) i język przetwarzania po stronie klienta (ang. client-side). Sam formularz jest przygotowywany w języku XHTML (język znacznikowy), kod przetwarzający dane wprowadzane w formularzu piszemy np. w języku PHP (język przetwarzany po stronie serwera), a obsługę zdarzeń dotyczących formularza i jego kontrolek oprogramowujemy w języku JavaScript (przetwarzanie po stronie klienta). Wykorzystywanie formularzy w sposób pełny wymaga zatem znajomości aż trzech języków.

    Rozdział 42. ♦

    449

    Rozdział 42.

    Powiązania dokumentów Witryna WWW zazwyczaj składa się z wielu różnych plików. W omówionych dotychczas ćwiczeniach treść dostępna na stronach była zapisana w plikach XHTML, a ich format wizualny w pliku CSS. Znacznikiem:

    ustalaliśmy powiązanie pomiędzy plikami XHTML i CSS. Strona WWW zawierająca powyższy element link będzie sformatowana zgodnie ze stylami zawartymi w pliku przyklad.css. Informacja o tym, że plik przyklad.css zawiera arkusze stylów, jest zawarta w atrybucie rel. Atrybut ten ustala typ relacji łączącej plik XHTML, w którym występuje element link, z plikiem, którego nazwa jest zawarta w atrybucie href. Powiązanie dokumentów .html oraz .css jest więc wykonywane w sposób jawny elementem link zawartym w nagłówku. Innymi typami powiązań, z którymi zetkniesz się, tworząc strony WWW, są:  wskazanie kanału RSS/Atom dla witryny,  wskazanie na spis treści, indeks, następną i poprzednią stronę witryny,  dołączenie do strony WWW ikony,  ustalenie listy osób tworzących witrynę. Jako dokumenty połączone z witryną WWW możemy także traktować pliki robots.txt oraz sitemap.xml. Są one powiązane w sposób niejawny. Powiązanie takie występuje zawsze, bez konieczności podawania w kodzie XHTML jakichkolwiek znaczników. Sumaryczne zestawienie wszystkich rodzajów powiązań jest zawarte w tabeli 42.1. Jawność powiązania oznacza, że w kodzie XHTML musimy umieścić odpowiedni znacznik XHTML. Powiązania niejawne są zdefiniowane zawsze, bez konieczności umieszczania jakichkolwiek znaczników w kodzie XHTML.

    Element link Element link jest elementem pustym, który umieszczamy w nagłówku strony WWW. Najważniejszym jego atrybutem jest rel, który definiuje typ powiązania między dokumentami. Poprawne wartości1 atrybutu rel są zawarte w tabeli 42.2.

    1

    Pełna lista poprawnych wartości atrybutu rel jest podana w specyfikacji XHTML Modularization 1.1, Second Edition, W3C Recommendation 29 July 2010, na stronie 26.

    Część VI ♦ Zagadnienia zaawansowane

    450 Tabela 42.1. Rodzaje powiązań plików tworzących witrynę WWW Rodzaj powiązania

    Sposób definicji powiązania

    Typy dołączanych zasobów

    Rozszerzenia nazw plików

    Style CSS witryny

    Jawny, elementem link

    text/css

    .css

    Alternatywne style witryny

    Jawny, elementem link

    text/css

    .css

    Struktura nawigacyjna witryny

    Jawny, elementem link

    text/html

    .html, .htm

    Kanał RSS/Atom dla witryny

    Jawny, elementem link

    application/rss+xml

    .xml

    Ikona strony WWW

    Jawny, elementem link, lub niejawny (wówczas plik musi się nazywać Favicon.ico)

    application/atom+xml image/vnd.microsoft.icon

    .ico

    image/png

    .png

    image/gif

    .gif

    Lista twórców witryny

    Jawny, elementem link

    text/plain

    .txt

    Plik z instrukcjami dla robotów

    Niejawny, plik zawsze musi się nazywać robots.txt

    text/plain

    .txt

    Plik z mapą witryny

    Jawny, zawarty w pliku robots.txt

    application/xml

    .xml

    Tabela 42.2. Wartości atrybutu rel Wartość atrybutu rel

    Opis

    stylesheet

    Style CSS dokumentu

    alternate

    Alternatywna wersja dokumentu (np. kanał RSS, Atom lub dodatkowe arkusze stylów)

    start

    Strona główna witryny

    next

    Następna strona witryny

    prev

    Poprzednia strona witryny

    contents

    Spis treści witryny

    index

    Indeks zawartości witryny

    glossary

    Słownik pojęć występujących w treści witryny

    copyright

    Prawa autorskie do witryny

    chapter

    Rozdział

    section

    Punkt

    subsection

    Podpunkt

    appendix

    Dodatek

    help

    Pomoc

    bookmark

    Odsyłacz do dokumentu związanego z treścią dostępną na danej stronie i zawierającego obszerniejszy opis

    NOTH Wszystkie rodzaje elementów link — Ctrl+B+L

    Pierwsza z wartości zawartych w tabeli 42.2 definiuje powiązanie dokumentów XHTML oraz CSS. Druga dostępna wartość pozwala na dołączenie do dokumentu alternatywnych arkuszy stylów2: 2

    Alternatywne arkusze stylów omówiliśmy w rozdziale 38.

    Rozdział 42. ♦ Powiązania dokumentów

    451

    lub kanałów RSS/Atom. Pozostałe wartości definiują wzajemne powiązania pomiędzy poszczególnymi plikami .html. Ułatwiają one nawigację oraz indeksację witryny. Specyfikacja XHTML 2.0 oprócz wartości podanych w tabeli 42.2 zawiera także: ♦ up — dokument nadrzędny w hierarchii; ♦ first — pierwszy dokument w kolekcji; ♦ last — ostatni dokument w kolekcji.

    Kanały RSS i Atom Kanały RSS oraz Atom służą do informowania czytelników witryny o nowych artykułach i stronach dostępnych w serwisie. Odwiedź witrynę http://helion.pl i kliknij hiperłącze, które na rysunku 42.1 zostało wskazane strzałką. Ujrzysz wówczas stronę z rysunku 42.2. Jest to lista nowości, jakie oferuje serwis helion.pl.

    Rysunek 42.1. Ikona kanału RSS wyświetlana przez przeglądarkę Firefox dla witryny helion.pl

    Treść kanału zapisujemy w pliku XML i dołączamy do dokumentu XHTML znacznikiem link. W celu dodania do strony WWW kanału RSS zapisanego w pliku rss.xml stosujemy znacznik:

    452

    Część VI ♦ Zagadnienia zaawansowane

    Rysunek 42.2. Wygląd kanału RSS witryny helion.pl

    Element dołączający kanał Atom różni się wartością atrybutu type oraz nazwą pliku:

    Jeśli stronę WWW zawierającą jeden z powyższych elementów link udostępnisz w sieci, to przeglądarki Firefox i Opera wyświetlą w wierszu adresu ikonę RSS. Wiele osób umieszcza jednak w treści witryny dodatkowe hiperłącze ułatwiające dotarcie do kanału. Na rysunku 42.3 wskazane są dwie ikony RSS. Górna ikona jest wyświetlana przez przeglądarkę, dolna jest umieszczona w dokumencie XHTML jako zwykłe hiperłącze.

    Ćwiczenie 42.1 Dana jest witryna WWW składająca się z czterech stron: lorem.html, ipsum.html, dolor.html oraz sit-amet.html. Wzbogać ją o kanał RSS. Wykonanie ćwiczenia rozpocznijmy od przygotowania pliku rss.xml. Struktura dokumentów RSS jest opisana w specyfikacji dostępnej pod adresem http://cyber.law.harvard.edu/rss/rss.html oraz w Wikipedii: http://pl.wikipedia.org/wiki/RSS. Kanał RSS jest zapisany w języku XML. W wersji 2.0 zawiera on następujące elementy:  rss — główny element pliku RSS;  channel — element definiujący jeden kanał wiadomości;  title — tytuł kanału wiadomości;  link — adres strony, dla której kanał jest zdefiniowany;  description — opis kanału;

    Rozdział 42. ♦ Powiązania dokumentów

    Rysunek 42.3. Ikony ułatwiające dotarcie do kanału RSS

     language — język;  copyright — prawa autorskie do dokumentu,  elementy item. Każdy z elementów item opisuje jedną nową informację na stronie, podając:  title — tytuł informacji;  link — adres strony zawierającej pełną informację (wszystkie adresy zawarte w dokumencie RSS muszą być bezwzględne);  pubDate — datę publikacji informacji;  description — krótki opis informacji. Przykładowy plik rss.xml jest przedstawiony na listingu 42.1. Listing 42.1. Plik rss.xml z ćwiczenia 42.1

    Lorem ipsum dolor sit amet http://www.example.net www.example.net - lorem ipsum dolor sit amet pl Jan Kowalski

    Lorem http://example.net/lorem.html Mon, 3 January 2010 8:00:00 +0100

    453

    Część VI ♦ Zagadnienia zaawansowane

    454 Opis strony lorem...

    Ipsum http://example.net/ipsum.html Mon, 10 January 2010 18:30:00 +0100 Opis strony ipsum...

    ...

    Plik rss.xml z listingu 42.1 dołączamy do każdej z czterech stron, umieszczając w nich identyczny element link:

    W treści każdej ze stron dodajemy hiperłącze: RSS 

    Identyfikator jest wykorzystywany do pozycjonowania przycisku, a element span służy do wykonania warstwowego efektu FIR. Hiperłącza zawarte w pliku rss.xml muszą być bezwzględne. W celu uruchomienia przykładu trzeba go zatem opublikować w internecie. Podane adresy http://example.net/ zastąp poprawnymi adresami stosowanymi na Twoim serwerze.

    Ćwiczenie 42.2 Zmodyfikuj ćwiczenie 42.1. Informacje o nowościach na stronie opublikuj w formacie Atom. Struktura formatu Atom jest opisana w Wikipedii: http://pl.wikipedia.org/wiki/Atom_%28standard%29. Pliki Atom, podobnie jak RSS, są dokumentami XML. Dokument z listingu 42.1 przekonwertowany do formatu Atom jest przedstawiony na listingu 42.2. Listing 42.2. Plik atom.xml z ćwiczenia 42.2

    Lorem ipsum Dolor sit amet! http://example.net/atom/

    2008-01-02T10:15:00Z

    Jan Kowalski

    Copyright (c) 2003 Jan Kowalski

    Lorem

    2007-12-18T8:10:00Z Opis strony lorem...

    Ipsum

    2007-12-19T9:15:00Z

    Rozdział 42. ♦ Powiązania dokumentów

    455

    Opis strony ipsum...

    ...

    Plik atom.xml z listingu 42.2 należy dołączyć do każdej ze stron, stosując element link:

    oraz hiperłącze: ATOM 

    Następny, poprzedni oraz spis treści Element link o atrybucie rel przyjmującym jedną z wartości: start, next, prev, contents, index, glossary, copyright, chapter, section, subsection, appendix, help, bookmark, first, last lub up definiuje powiązanie pomiędzy kilkoma dokumentami XHTML. Przykładowe użycie może mieć postać:

    Powiązania takie są przez niektóre przeglądarki wyświetlane w postaci osobnego paska narzędzi. Na rysunku 42.4 widoczny jest pasek narzędzi udostępniany przez przeglądarkę Firefox po zainstalowaniu wtyczki Site Navigation Toolbar3.

    Ćwiczenie 42.3 Przygotuj witrynę przedstawiającą szesnaście zdjęć kapsli piwnych. Zadanie wykonaj w taki sposób, by każde zdjęcie było prezentowane na osobnej stronie WWW. W każdym pliku XHTML umieść odsyłacze pozwalające na przejście do następnej, poprzedniej, pierwszej i ostatniej strony, a także do strony zawierającej indeks wszystkich fotografii. Na stronie prezentującej indeks umieść szesnaście miniaturowych zdjęć będących odsyłaczami do stron z poszczególnymi zdjęciami. Każde hiperłącze wykonaj podwójnie: stosując element a oraz element link. Witryna ma prezentować 16 zdjęć kapsli i ma zawierać indeks. Będzie ją zatem tworzyło siedemnaście plików XHTML: plik z indeksem (index.html) oraz szesnaście plików kapsle-1.html, kapsle-2.html, …, kapsle-16.html. Każde ze zdjęć jest dostępne w czterech rozdzielczościach: 200×150, 400×300, 800×600 i 3264×2448. Do wykonania witryny wykorzystamy więc 16·4 = 64 pliki ze zdjęciami kapsli. Zdjęcia o wymiarach 200×150 są zapisane w folderze img/200×150 i nazywają się: kapsle-01.jpg, kapsle-02.jpg, ... kapsle-16.jpg

    Zdjęcia o wymiarach 400×300 są zapisane w folderze img/400×300 w plikach: kapsle-01.jpg, kapsle-02.jpg, ... kapsle-16.jpg 3

    Wtyczka ta jest dostępna na stronie http://www.bolwin.com/software/snb.shtml.

    456

    Część VI ♦ Zagadnienia zaawansowane

    Rysunek 42.4. Pasek narzędzi Następny/Poprzedni widoczny na stronie http://gimp.gajdaw.pl

    Podobnie jest w przypadku zdjęć o rozdzielczości 800×600 (folder img/800×600) oraz 3264×2448 (folder img/3264×2448). Ostatnie dziewięć obrazów to strzałki: first.png, first-brak.png next.png, next-brak.png index.png last.png, last-brak.png prev.png, prev-brak.png

    Zawarte w folderze img/. Struktura folderów i pliki tworzące rozwiązanie ćwiczenia są przedstawione na rysunku 42.5. Wstawiając do strony WWW obraz zawarty w folderze, musisz pamiętać o podaniu ścieżki dostępu, np.:

    Listing 42.3 ilustruje powiązania wykonane w postaci zwykłych hiperłączy na stronie numer 6. Powrót do strony poprzedniej jest hiperłączem do strony 5, przejście do strony następnej jest odsyłaczem do strony 7. Pierwsza strona ma numer 1, a ostatnia — 16. Na listingu 42.4 przedstawione zostały te same powiązania wykonane elementem link.

    Rozdział 42. ♦ Powiązania dokumentów

    457

    Rysunek 42.5. Struktura folderów i pliki tworzące rozwiązanie ćwiczenia 42.3

    Listing 42.3. Powiązania pomiędzy dokumentami wykonane przy użyciu odsyłaczy

    Listing 42.4. Powiązania pomiędzy dokumentami wykonane przy użyciu elementu link

    ...

    Oba rodzaje powiązań są przedstawione na rysunku 42.6.

    Ikona witryny WWW Element:

    dołącza do witryny ikonę zapisaną w pliku ikona.ico. Ikona witryny jest wyświetlana przez przeglądarki w polu adresu oraz na przyciskach kart, co ilustruje rysunek 42.7.

    Część VI ♦ Zagadnienia zaawansowane

    458

    Rysunek 42.6. Przyciski następny/poprzedni wiążące strony witryny z ćwiczenia 42.3 Rysunek 42.7. Ikony witryn w przeglądarce Firefox

    W specyfikacji języka XHTML lista poprawnych wartości atrybutu rel nie zawiera shortcut icon. Mimo to podany powyżej znacznik link z atrybutem rel="shortcut icon" działa poprawnie we wszystkich przeglądarkach.

    Rozdział 42. ♦ Powiązania dokumentów

    459

    Współczesne przeglądarki rozpoznają ikony w formatach ICO, PNG oraz GIF. Starsze wersje Internet Explorera obsługiwały wyłącznie format ICO. Pliki ICO oznaczamy typem: image/vnd.microsoft.icon

    Element link wzbogacony o typ przyjmuje postać:

    Ikonę możesz narysować w dowolnym programie graficznym umożliwiającym zapis obrazu w formacie ICO, PNG lub GIF, na przykład w GIMP-ie. Pamiętaj o tym, że:  Ikona powinna mieć wymiary 16×16 pikseli.  Obraz może być wielowarstwowy, lecz przed zapisaniem wszystkie warstwy należy połączyć w jedną (tj. obraz należy spłaszczyć).  Obraz może zawierać obszary przezroczyste.  Podczas zapisywania należy podać rozszerzenie ICO. Rysunek 42.8 przedstawia rysunek ikony w programie GIMP. Ikona ta umieszczona na białym tle będzie wyglądała tak jak na rysunku 42.9. Rysunek 42.8. Ikona narysowana w programie GIMP

    Rysunek 42.9. Ikona ikona.ico umieszczona na białym tle

    Część VI ♦ Zagadnienia zaawansowane

    460

    Część przeglądarek wyświetla ikonę, nawet jeśli kod XHTML nie zawiera elementu link. Dzieje się tak wtedy, gdy na serwerze WWW w folderze głównym zostanie umieszczony plik favicon.ico. Powiązanie witryny z plikiem ikony możemy zatem traktować zarówno jako jawne (w kodzie XHTML umieszczamy element link, plik z ikoną nazywa się dowolnie), jak i niejawne (w kodzie XHTML nie ma elementu link wskazującego ikonę, plik z ikoną nazywa się favicon.ico).

    Ćwiczenie 42.4 W dowolnym programie graficznym narysuj ikonę o wymiarach 16×16 pikseli. Wykonany obraz wykorzystaj jako ikonę witryny z tekstem Lorem ipsum.

    Twórcy witryny WWW Element:

    wiąże stronę z plikiem tekstowym humans.txt, który zawiera listę nazwisk twórców witryny. Przykładowy plik humans.txt jest przedstawiony na listingu 42.5. Listing 42.5. Fragment pliku http://humanstxt.org/humans.txt Chef:Juanjo Bernabeu Contact: hello [at] humanstxt.org Twitter: @cssbarcelona From:Barcelona, Catalonia, Spain CSS3 and HTML5 Girl: Maria Macias Twitter: @lafabricaverde From:Barcelona, Catalonia, Spain

    Więcej informacji na temat plików humans.txt jest dostępnych na stronie http://humanstxt.org. Specyfikacja języka XHTML nie zawiera informacji o atrybucie rel="author". Jest to nowość, którą na razie należy traktować wyłącznie jako ciekawostkę.

    Plik robots.txt Plik robots.txt jest powiązany z witryną WWW w sposób niejawny. Roboty internetowe rozpoczynają pobieranie stron z wybranej domeny od pobrania pliku robots.txt zawartego w folderze głównym. Dla księgarni internetowej Helion pobierany plik ma adres http://helion.pl/robots.txt. Plik robots.txt może zawierać reguły Disallow zakazujące automatycznego wędrowania po zasobach oraz regułę Sitemap, która wskazuje mapę witryny WWW. Zawartość przykładowego pliku robots.txt jest przedstawiona na listingu 42.6. Listing 42.6. Przykładowy plik robots.txt User-agent: * Disallow: /cgi/ Disallow: /private/ Disallow: /tmp/ Sitemap: http://gajdaw.pl/sitemap.xml

    Rozdział 42. ♦ Powiązania dokumentów

    461

    Więcej informacji na temat plików robots.txt znajdziesz w Wikipedii: http://pl.wikipedia.org/wiki/Robots_ Exclusion_Protocol oraz pod adresem http://www.robotstxt.org/wc/robots.html.

    Plik sitemap.xml Plik sitemap.xml zawiera zestawienie wszystkich adresów URL tworzących witrynę wraz z informacjami o częstotliwości zmian plików. Rola pliku sitemap.xml polega na ułatwieniu indeksacji całej witryny WWW przez wyszukiwarkę. Listing 42.7 przedstawia fragment pliku sitemap.xml witryny http://gajdaw.pl. Listing 42.7. Fragment pliku sitemap.xml witryny http://gajdaw.pl

    http://www.gajdaw.pl/php/pear-auth/index.html 2007-11-02 monthly 0.6

    http://www.gajdaw.pl/gimp/gimp-kurs-3/index.html 2007-10-31 monthly 0.6

    ...

    Więcej informacji o plikach sitemap.xml znajdziesz w Wikipedii: http://pl.wikipedia.org/wiki/Sitemap oraz na stronie http://sitemaps.org.

    Ćwiczenie 42.5 Witrynę omówioną w ćwiczeniu 42.1 wzbogać o wszystkie rodzaje powiązań omówionych w tym rozdziale. Rozwiązanie ćwiczenia składa się z:  czterech plików XHTML (lorem.html, ipsum.html, dolor.html, sit-amet.html);  dwóch plików CSS (style główne — style.css, style alternatywne — inne.css);  ikony (plik favicon.ico);  kanału RSS (plik rss.xml);  pliku humans.txt;  plików robots.txt oraz sitemap.xml. Foldery i pliki rozwiązania ćwiczenia 42.5 są widoczne na rysunku 42.10. Rysunek 42.10. Foldery i pliki rozwiązania ćwiczenia 42.5

    462

    Część VI ♦ Zagadnienia zaawansowane

    Nagłówek head z pliku lorem.html jest przedstawiony na listingu 42.8. Listing 42.8. Nagłówek head z pliku lorem.html

    Lorem







    Rozdział 43. ♦ Rozdział 43. Element meta — dodatkowe informacje na temat strony WWW

    463

    Rozdział 43.Elementmeta—dodatkoweinformacje na temat strony WWW

    Rozdział 43.

    Element meta — dodatkowe informacje na temat strony WWW Element meta — dodatkowe informacje na temat strony WWW

    Elementy meta występują w nagłówkach stron WWW, czyli pomiędzy znacznikami oraz . Ich zadaniem jest dostarczanie dodatkowych informacji na temat witryny WWW. Dane ustalane elementami meta są nazywane metainformacjami. Listing 43.1 przedstawia kod przykładowej witryny wzbogacony o trzy elementy meta. Metainformacje zawarte na tej stronie ustalają kodowanie znaków, nazwisko autora oraz prawa autorskie. Elementy meta mogą występować w kodzie XHTML w dowolnej kolejności, zarówno w stosunku do siebie, jak i pozostałych elementów nagłówka strony. Listing 43.1. Witryna zawierająca przykładowe metainformacje







    Metainformacje nie są wyświetlane przez przeglądarki podczas wizyty na stronie. Ich zadanie polega na dostarczaniu dodatkowych danych na temat dokumentu XHTML. Dane te odgrywają następującą rolę:  Ustalają kodowanie znaków.  Zawierają krótki opis zawartości witryny.  Zawierają nazwisko autora, nazwę wydawcy oraz inne dane identyfikujące twórców dokumentu.  Ustalają czas ważności dokumentu i zezwalają (lub nie) na zapisywanie dokumentu w pamięci podręcznej (ang. cache).

    Część VI ♦ Zagadnienia zaawansowane

    464

    Metainformacje są związane z konkretną witryną i należy je zawrzeć w kodzie XHTML. Jeśli witryna składa się z wielu podstron, wtedy metainformacje dołączamy na każdej podstronie z osobna.

    Składnia elementu meta Element meta należy — wraz z elementami style oraz link — do grupy elementów, które mogą wystąpić tylko w nagłówku strony WWW. Jest to element pusty o atrybutach przedstawionych w tabeli 43.1. Jak widać na listingu 43.1, na jednej stronie możemy zawrzeć dowolną liczbę elementów meta. Tabela 43.1. Atrybuty elementu meta Lp.

    Atrybut

    Opis

    1.

    lang, dir

    Atrybuty ustalające język i kierunek przetwarzania tekstu

    2.

    name

    Identyfikuje rodzaj metainformacji

    3.

    http-equiv

    Identyfikator metainformacji używany zamiennie z atrybutem name

    4.

    content

    Atrybut wymagany, zawierający metainformacje

    5.

    scheme

    Nazwa profilu metainformacji ustalonego atrybutem profile elementu head

    Znaczenie elementu meta Każda z metainformacji definiowanych elementami meta ma postać: nazwa=wartosc

    Do ustalania nazwy służą atrybuty name oraz http-equiv, zaś do ustalania wartości — obowiązkowy atrybut content:

    Powyższy kod ustala dwie metainformacje. Pierwsza z nich ma nazwę imie i wartość Jan, zaś druga — nazwę nazwisko i wartość Nowak. Specyfikacja języka XHTML nie definiuje zbioru dopuszczalnych wartości atrybutu name, ani tym bardziej content. Ustala jedynie składnię znacznika .

    Dwa rodzaje elementów meta Ponieważ nazwa elementu meta może być określona atrybutem name lub http-equiv, w istocie mamy do czynienia z dwoma rodzajami elementów meta. Pierwszy z nich posługuje się atrybutem name:

    drugi — atrybutem http-equiv:

    Nazwa atrybutu http-equiv oraz wartość Content-Type sugerują, że poprawnymi wartościami dla atrybutu http-equiv są parametry nagłówka HTTP. Jest to mylne: przeglądarki nie interpretują elementu meta jako nagłówka HTTP. Stosowanie dla atrybutu http-equiv jakichkolwiek innych wartości poza Content-Type nie jest dobrym pomysłem.

    Rozdział 43. ♦ Element meta — dodatkowe informacje na temat strony WWW

    465

    Elementy meta przyjmują jedną z dwóch postaci:

    lub

    Jakie metainformacje umieszczać w witrynach? Znając składnię oraz ogólne znaczenie elementu meta, możemy przejść do zagadnień praktycznych. Kolejno omówimy metainformacje dotyczące:  kodowania znaków,  języków występujących w dokumencie,  identyfikacji autora dokumentu,  opisu zawartości dokumentu,  indeksacji dokumentu przez roboty wyszukiwarek internetowych,  ustalania daty powstania oraz daty ważności dokumentu,  przechowywania dokumentu przez serwery pośredniczące,  a także zagadnień nietypowych. NOTH Wszystkie elementy meta — Ctrl+B+M, Ctrl+B+N

    Kodowanie znaków Metainformacja o kodowaniu pozwala przeglądarce poprawnie wyświetlić dokument. Brak takiej informacji powoduje, że polskie znaki diakrytyczne wyglądają błędnie u części użytkowników. Wprawdzie przeglądarki mają opcję Widok/Kodowanie znaków, umożliwiającą wybór kodowania znaków, jednak witryna powinna wyglądać poprawnie bez żadnej akcji ze strony użytkownika. Oto trzy elementy meta ustalające kodowanie polskich znaków na utf-8, iso-8859-2 oraz windows-1250:



    Języki, w jakich przygotowano dokument Informacje na temat języka, w jakim wykonana jest strona, służą do klasyfikacji dokumentów między innymi przez wyszukiwarki oraz umożliwiają inteligentne przetwarzanie tekstu (np. sprawdzanie pisowni zależne od stosowanego języka). Informację na temat języka dokumentu dostarczamy na dwa sposoby: korzystając z atrybutów lang oraz umieszczając w nagłówku odpowiedni element meta. Ponieważ każde z rozwiązań odgrywa inną rolę, w dokumentach należy stosować oba rozwiązania naraz. Atrybut lang ustala jednoznacznie język stosowany wewnątrz konkretnego elementu. Nadając wartość atrybutowi lang elementu XHTML, definiujemy język całej strony:

    Część VI ♦ Zagadnienia zaawansowane

    466

    Jeśli dokument zawiera wstawki obcojęzyczne, wówczas korzystamy z atrybutu lang w stosunku do użytych elementów:

    ... Witamy!

    Quoting a well known French proverb: C'est la vie...



    Definicje języka ustalane za pomocą atrybutu lang jednoznacznie określają język pewnego fragmentu tekstu wewnątrz strony. Dzięki temu możliwe jest kontekstowe sprawdzanie pisowni, zależne od użytego języka, czy wybór odpowiedniego procesora tekstu w przypadku przeglądarki czytającej zawartość strony. Nieco inną rolę odgrywa definicja języka dokumentu ustalana elementem meta:

    Powyższa informacja ustala potencjalne grono czytelników witryny. Witryna zawiera teksty przeznaczone dla osób znających język polski, angielski lub francuski.

    Autor, prawa autorskie i firma Metainformacje służą również do identyfikacji autora witryny, firmy oraz wydawcy, właściciela praw autorskich czy oprogramowania użytego do wykonania witryny, jak również dostarczenia adresu poczty elektronicznej do kontaktu z osobą odpowiedzialną za utrzymanie witryny. Informacje takie podajemy, stosując następujące elementy meta:

    Atrybuty elementu meta mogą zawierać znaki specjalne. Wiele osób oznacza prawa autorskie, stosując symbol ©:

    Słowa kluczowe i opis Element meta o atrybucie name="description" dostarcza opis zawartości dokumentu. Opis ten powinien liczyć pomiędzy 100 a 200 znaków i w sposób jasny informować o zawartości witryny:

    Podany opis witryny jest wyświetlany przez wyszukiwarki internetowe na liście znalezionych wyników. Natomiast następujący element meta:

    definiuje listę słów kluczowych, jakich dotyczy strona. Lista ta powinna liczyć od kilkunastu do kilkudziesięciu słów (podobnie jak poprzednio około 100 – 200 znaków). Kolejne słowa oddzielamy przecinkami lub spacjami. Spotykanymi formatami są:



    Słowa kluczowe definiowane elementem meta straciły swoją wartość. Z powodu nadużyć (tzw. spamowania wyszukiwarek) wyszukiwarka Google ignoruje je.

    Rozdział 43. ♦ Element meta — dodatkowe informacje na temat strony WWW

    467

    Roboty Roboty internetowe to programy, które pobierają witryny w sposób automatyczny w celu umieszczenia odpowiednich informacji w bazie danych wyszukiwarki. Robot pobiera kod XHTML witryny, analizuje go, po czym indeksuje witrynę. Indeksacja polega na wprowadzeniu do bazy danych wyszukiwarki informacji umożliwiających znalezienie witryny. Stosując element meta, możemy wpływać na zachowanie robotów indeksujących strony WWW. Metainformacje o atrybucie name="robots" dotyczą robotów i zezwalają na indeksację strony oraz przeszukanie witryn podanych w odnośnikach danej strony. Aby zezwolić na zaindeksowanie bieżącego dokumentu i przeanalizowanie wszystkich jego podstron, stosujemy jeden z dwóch równoważnych zapisów:

    Jeżeli indeksacja i przeszukiwanie mają być zabronione, wówczas stosujemy elementy:

    Poprawne są również rozwiązania mieszane:

    Szczegółową dokumentację elementów meta dotyczących wyszukiwarek i robotów znajdziemy na stronach http://www.robotstxt.org/wc/robots.html. Poszczególne roboty mogą także stosować własne, niestandardowe rozwiązania. Przykładem jest wyszukiwarka Google, która przechowuje kopie zaindeksowanych witryn. Jeśli nie chcemy, by wyszukiwarka Google tworzyła kopię strony, wtedy stosujemy element:

    zaś element:

    powoduje, że wyniki wyszukiwania zwracane przez Google nie będą zawierały fragmentu strony WWW z zaznaczonymi wyszukiwanymi wyrazami. Więcej szczegółów na temat metainformacji zdefiniowanych na potrzeby Google znajdziemy pod adresami: http://www.google.com/bot.html oraz http://www.google.com/webmasters/faq.html.

    Data powstania i ważności dokumentu Do oznaczenia daty powstania dokumentu stosujemy element:

    Specyfikacja protokołu HTTP 1.1 ustala, że data i czas powinny być zapisane w formacie opisanym w dokumencie RFC 1123. Format ten składa się z dnia tygodnia oddzielonego przecinkiem od daty, godziny oraz napisu GMT: wkday "," SP date SP time SP "GMT"

    gdzie SP oznacza spację, wkday — dzień tygodnia (tj. jedno z: Mon, Tue, Wed, Thu, Fri, Sat, Sun), zaś date i time — godzinę i datę. Przykładami dat zgodnymi z powyższym formatem są: Wed, 01 Jun 2005 10:05:32 GMT Mon, 05 Apr 2004 11:44:55 GMT Thu, 31 May 2005 22:00:00 GMT

    468

    Część VI ♦ Zagadnienia zaawansowane

    Data jest opisana przez numer dnia (dwie cyfry z ewentualnymi zerami z przodu), nazwę miesiąca (angielski skrót Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov lub Dec) oraz czterocyfrowy numer roku. Natomiast godzina jest zapisana w formacie: gg:mm:ss

    gdzie gg, mm oraz ss są liczbami dwucyfrowymi oznaczającymi godziny, minuty i sekundy. Poprawna wartość godziny jest zawarta pomiędzy wartościami 00:00:00 i 23:59:59.

    Przechowywanie stron WWW przez pośredników Strony WWW mogą być przechowywane przez systemy pośredniczące w transakcji pomiędzy klientem a serwerem. Przykładami są serwery proxy, które zazwyczaj zapisują kopie pobieranych witryn w celu przyspieszenia kolejnych transakcji. Jeśli witryna nie powinna być zapisywana przez systemy pośredniczące, należy użyć jednego z dwóch równoważnych elementów meta:

    Skrypty i style — domyślny język Style osadzone w dokumencie zazwyczaj zawierają informacje na temat zastosowanego języka. Do tego celu służy atrybut type elementów link oraz style:

    Jeżeli jednak na stronie pojawiają się style definiowane atrybutem style:

    ...



    wtedy język stylów możemy ustalić elementem:

    Podobnie sprawa wygląda w przypadku skryptów. Element script ma atrybut type definiujący język dołączanego skryptu:

    Jeśli jednak stosujemy skrypty w obsłudze zdarzeń:

    XXXXXX

    wówczas możemy umieścić w dokumencie element ustalający domyślny język skryptów:

    Ponieważ języki CSS oraz JavaScript są domyślnie stosowane przez wszystkie przeglądarki, znaczniki:

    są zbędne. Jest to obecnie tylko ciekawostka historyczna.

    Metainformacje w kilku językach Jak wynika z tabeli 43.1, element meta może zawierać atrybut lang. Poprawnymi elementami są zatem:

    Rozdział 43. ♦ Element meta — dodatkowe informacje na temat strony WWW

    469

    oraz

    Tego typu rozwiązania są jednak niezmiernie rzadkie w internecie. Wynika to głównie z faktu, iż witryny są zazwyczaj przygotowywane w jednym konkretnym języku, zaś ewentualne tłumaczenia są osobnymi stronami WWW. Gdy cały dokument został przygotowany w jednym języku, wówczas stosujemy atrybuty lang w odniesieniu do elementu XHTML.

    Przekierowania Do niewymienionych dotychczas elementów meta należą przekierowania. Element:

    PRZYKŁAD NIEZALECANY

    spowoduje po upłynięciu pięciu sekund pobranie dokumentu o adresie http://gajdaw.pl. Przekierowań tego typu nie należy stosować, gdyż stwarzają one problemy z dostępnością. Rozwiązanie takie jest stosowane przez archiwa oprogramowania, na przykład SourceForge. Pobieranie biblioteki GTK+ ze strony http://gimp-win.sourceforge.net/stable.html zakończy się przekierowaniem:

    PRZYKŁAD NIEZALECANY