informatyka kuloodporne strony internetowe jak poprawic elastycznosc z wykorzystaniem xhtml a i css wydanie iii dan cederholm ebook

background image
background image

Tytuá oryginaáu: Bulletproof Web Design: Improving flexibility and protecting
against worst-case scenarios with HTML5 and CSS3 (3rd Edition)

Táumaczenie: Piotr CieĞlak

ISBN: 978-83-246-5120-7

Authorized translation from the English language edition, entitled:
BULLETPROOF WEB DESIGN: IMPROVING FLEXIBILITY AND PROTECTING
AGAINST WORST-CASE SCENARIOS WITH HTML5 AND CSS3, Third Edition;
ISBN 0321808355; by Daniel Cederholm; published by Pearson Education, Inc,
publishing as New Riders Publishing.

Copyright © 2012 by Daniel Cederholm.

All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means,
electronic or mechanical, including photocopying, recording or by any information storage retrieval system,
without permission from Pearson Education, Inc.

Polish language edition published by HELION S.A. Copyright © 2012.

All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means,
electronic or mechanical, including photocopying, recording or by any information storage retrieval system,
without permission from the Publisher.

Wszelkie prawa zastrzeĪone. Nieautoryzowane rozpowszechnianie caáoĞci lub fragmentu niniejszej
publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną,
fotograficzną, a takĪe kopiowanie ksiąĪki na noĞniku filmowym, magnetycznym lub innym powoduje
naruszenie praw autorskich niniejszej publikacji.

Wszystkie znaki wystĊpujące w tekĞcie są zastrzeĪonymi znakami firmowymi bądĨ towarowymi ich
wáaĞcicieli.

Autor oraz Wydawnictwo HELION doáoĪyli wszelkich staraĔ, by zawarte w tej ksiąĪce informacje byáy
kompletne i rzetelne. Nie biorą jednak Īadnej odpowiedzialnoĞci ani za ich wykorzystanie, ani za związane
z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION
nie ponoszą równieĪ Īadnej odpowiedzialnoĞci za ewentualne szkody wynikáe z wykorzystania informacji
zawartych w ksiąĪce.

Wydawnictwo HELION
ul. KoĞciuszki 1c, 44-100 GLIWICE
tel. 32 231 22 19, 32 230 98 63
e-mail: helion@helion.pl
WWW: http://helion.pl (ksiĊgarnia internetowa, katalog ksiąĪek)

Drogi Czytelniku!
JeĪeli chcesz oceniü tĊ ksiąĪkĊ, zajrzyj pod adres
http://helion.pl/user/opinie/kuloo3
MoĪesz tam wpisaü swoje uwagi, spostrzeĪenia, recenzjĊ.

Printed in Poland.

Kup książkę

Poleć książkę

Oceń książkę

Księgarnia internetowa

Lubię to! » Nasza społeczność

background image

Spis tre)ci

Wst+p .......................................................................................... 11

Rozdzia3 1. Elastyczny tekst .......................................................................... 19

Definiowanie wielko!ci tekstu za pomoc" s$ów kluczowych,

warto!ci procentowych lub jednostek em jest najbardziej
elastyczne i umo%liwia u%ytkownikom jej regulowanie .............................20

Typowe rozwi"zanie ....................................................................................21
Dlaczego to rozwi#zanie nie jest kuloodporne ............................................22
Dost&pne mo%liwo!ci ..................................................................................24
Jednostki d&ugo'ci .......................................................................................24
S&owa kluczowe — wzgl+dne ......................................................................24
Procenty ......................................................................................................25
S&owa kluczowe — bezwzgl+dne ................................................................25
Rozwi"zanie kuloodporne ...........................................................................26
S&owa kluczowe — wyja'nienie ...................................................................26
Rezygnacja z dok&adno'ci „co do piksela” ...................................................27
Dlaczego rozwi"zanie to jest kuloodporne ..................................................28
Elastyczna baza — i co dalej? ......................................................................28
Ustaw i zapomnij .........................................................................................28
Procentowa zmiana warto'ci bazowej ........................................................29
Stosowanie s$ów kluczowych i warto!ci procentowych ...............................32
Ustawienie po'redniej warto'ci bazowej .....................................................32
Zagnie9d9aj#c deklaracje w procentach, musimy zachowa; ostro9no'; ......34
Spójno'; dzi+ki warto'ciom procentowym ....................................................35
Elastyczny rozmiar tekstu dzi&ki jednostkom em .........................................37
Jednostka rem .............................................................................................39
Podsumowanie ............................................................................................41

Rozdzia3 2. Skalowalna nawigacja ................................................................ 43

Nale%y opracowa/ tak" nawigacj&, która skaluje si& w zale%no!ci

od ustawionej wielko!ci tekstu oraz od obj&to!ci tre!ci
umieszczonych na stronie .........................................................................44

Typowe rozwi"zanie ....................................................................................45
Eleganckie zak&adki .....................................................................................45

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

6

Spis tre!ci

Typowy efekt rollover, czyli podmiana obrazków ....................................... 46
Dlaczego rozwi"zanie to nie jest kuloodporne ............................................ 47
Ogrom kodu ............................................................................................... 47
Problemy z dost+pno'ci# ............................................................................ 48
Problemy ze skalowalno'ci# ........................................................................ 48
Brak elastyczno'ci ....................................................................................... 48
Rozwi"zanie kuloodporne ........................................................................... 49
Bez stylów ................................................................................................... 50
Dwa ma&e obrazki ....................................................................................... 50
Stosowanie stylów ...................................................................................... 51
(O)p&ywanie na ratunek .............................................................................. 52
Formowanie zak&adek ................................................................................. 53
Wyrównanie obrazków t&a .......................................................................... 54
Dodanie dolnego obramowania .................................................................. 56
Efekt podmiany ........................................................................................... 57
Wyró9niona zak&adka .................................................................................. 58
Dlaczego rozwi"zanie to jest kuloodporne .................................................. 58
Wariant bez obrazków, wykorzystuj"cy gradienty CSS3 .............................. 59
Podobny przyk$ad wykorzystuj"cy jednostki em .......................................... 63
Dodatkowe przyk$ady ................................................................................. 65
MOZILLA.ORG ............................................................................................. 65
Skosy .......................................................................................................... 65
Wyszukiwanie w witrynie ESPN.com ........................................................... 66
Podsumowanie ........................................................................................... 68

Rozdzia3 3. Elastyczne wiersze .......................................................................71

Nie nale%y definiowa/ wysoko!ci poziomych elementów

strony i trzeba zaplanowa/ mo%liwo!/ powi&kszenia ich w pionie ........... 72

Typowe rozwi"zanie .................................................................................... 73
Dlaczego rozwi"zanie to nie jest kuloodporne ............................................ 74
Ma&o istotne elementy graficzne ................................................................. 74
Sta&e wysoko'ci ........................................................................................... 75
Przero'ni+ty kod ......................................................................................... 75
Rozwi"zanie kuloodporne ........................................................................... 76
Struktura kodu ............................................................................................ 76
Identyfikacja elementów ............................................................................. 77
Bez stylów ................................................................................................... 78
Dodanie t&a ................................................................................................. 79
Pozycjonowanie zawarto'ci ........................................................................ 79
Brakuj#ce t&o ............................................................................................... 81
Dodanie szczegó&ów ................................................................................... 82
Cztery zaokr#glone naro9niki ...................................................................... 84
Szczegó&y zwi#zane z tekstem i odno'nikami .............................................. 85
Ostatni etap ................................................................................................ 87
Poprawka dla IE7 ........................................................................................ 89
Dlaczego rozwi"zanie to jest kuloodporne .................................................. 90
Oddzielenie struktury od wygl#du .............................................................. 90

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

Spis tre!ci

7

Koniec z ustalonymi wysoko'ciami ..............................................................91
Wariant z atrybutem border-radius .............................................................92
Inny przyk$ad rozci"gania ............................................................................94
Struktura kodu ............................................................................................95
Tworzenie dwóch obrazków .......................................................................96
Zastosowanie stylów CSS ............................................................................96
Autorozci#ganie ..........................................................................................98
Podsumowanie ............................................................................................99

Rozdzia3 4. Pomys3owe rozmieszczanie elementów ................................... 101

Zamiast stosowa/ tabele, lepiej u%ywa/ elementów p$ywaj"cych ..............102
Typowe rozwi"zanie ..................................................................................103
Dlaczego rozwi"zanie to nie jest kuloodporne ..........................................104
Rozwi"zanie kuloodporne .........................................................................105
Nieograniczony wybór struktur .................................................................105
Stosowanie list definicji .............................................................................106
Struktura kodu ..........................................................................................107
Bez stylów .................................................................................................109
Definiowanie stylów dla kontenera ...........................................................109
Identyfikacja obrazków .............................................................................110
Style podstawowe .....................................................................................111
Pozycjonowanie obrazka ...........................................................................115
Przeciwleg&e obiekty p&ywaj#ce .................................................................116
Miejsce dla opisów ka9dej d&ugo'ci ...........................................................118
Samoczynne anulowanie op&ywania elementów .......................................120
Ostatnie szlify ............................................................................................123
Zmiana kierunku wyrównania ...................................................................125
Efekt siatki .................................................................................................127
Inne t&o ......................................................................................................131
Zastosowanie cienia ..................................................................................132
Zabawa z blokowaniem op&ywania elementów p&ywaj#cych ....................134
Blokowanie op&ywania elementów za pomoc# w&a'ciwo'ci overflow .......135
Ratwe blokowanie op&ywania elementów

za pomoc# zawarto'ci generowanej .......................................................136

Dlaczego rozwi"zanie to jest kuloodporne ................................................140
Podsumowanie ..........................................................................................141

Rozdzia3 5. Niezniszczalne ramki ................................................................. 143

Przed przyst"pieniem do tworzenia stylów dla ramek

nale%y wszystko dok$adnie zaplanowa/ ..................................................144

Typowe rozwi"zanie ..................................................................................145
Dlaczego rozwi"zanie to nie jest kuloodporne ..........................................146
Rozwi"zanie kuloodporne .........................................................................147
Struktura kodu ..........................................................................................148
Strategia z obrazkami ................................................................................149
Stosowanie stylów ....................................................................................151
Dlaczego rozwi"zanie to jest kuloodporne ................................................154

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

8

Spis tre!ci

Wariant z u%yciem CSS3 ............................................................................ 155
Inne techniki tworzenia zaokr"glonych naro%ników .................................. 159
Rogi, rogi na okr#g&o ................................................................................ 160
Pozorne ramki ........................................................................................... 167
Jeden zaokr#glony naro9nik ...................................................................... 168
Iluzja naro9nika ......................................................................................... 171
Kuloodporna strza&ka ................................................................................ 171
Ograniczenia inspiruj# ............................................................................... 173
Podsumowanie ......................................................................................... 173

Rozdzia3 6. Brak obrazków? Brak CSS? Jaden problem! .............................175

Nale%y zadba/ o to, by tre!/ strony by$a czytelna,

nawet je!li strona zostanie pozbawiona rysunków i stylów CSS ............. 176

Typowe rozwi"zanie .................................................................................. 177
Dlaczego rozwi"zanie to nie jest kuloodporne .......................................... 179
Rozwi"zanie kuloodporne ......................................................................... 181
Dlaczego rozwi"zanie to jest kuloodporne ................................................ 181
Ze stylami lub bez ..................................................................................... 184
10-sekundowy test u9yteczno'ci ............................................................... 185
Typowe rozwi"zanie .................................................................................. 186
Rozwi"zanie kuloodporne ......................................................................... 187
Test Dig Dug ............................................................................................. 189
Narz&dzia do sprawdzania kuloodporno!ci stron ...................................... 190
Favelety ..................................................................................................... 190
Pasek Web Developer ............................................................................... 193
Pasek Web Accessibility Toolbar ............................................................... 194
Firebug ...................................................................................................... 195
Walidacja jako narz+dzie ........................................................................... 195
Podsumowanie ......................................................................................... 198

Rozdzia3 7. Konwersja tabel .........................................................................201

Z tabel nale%y usun"/ kod odpowiadaj"cy za warstw& prezentacji,

a ich wygl"d zdefiniowa/ za pomoc" CSS .............................................. 202

Typowe rozwi"zanie .................................................................................. 203
Dlaczego rozwi"zanie to nie jest kuloodporne .......................................... 205
Rozwi"zanie kuloodporne ......................................................................... 206
Struktura kodu .......................................................................................... 206
Stosowanie stylów .................................................................................... 212
Dlaczego rozwi"zanie to jest kuloodporne ................................................ 224
Podsumowanie ......................................................................................... 225

Rozdzia3 8. P3ynny oraz elastyczny uk3ad strony .........................................227

Eksperymentuj z projektowaniem uk$adów stron,

które rozszerzaj" si& i zw&%aj" ................................................................ 228

Typowe rozwi"zanie .................................................................................. 229
Dlaczego rozwi"zanie to nie jest kuloodporne .......................................... 231

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

Spis tre!ci

9

Nadmiar kodu Uród&owego ........................................................................231
Koszmar aktualizacji ..................................................................................231
Niew&a'ciwa kolejno'; tre'ci strony ..........................................................232
Rozwi"zanie kuloodporne .........................................................................233
Struktura kodu ..........................................................................................233
Tworzenie kolumn: p&ywanie kontra pozycjonowanie ..............................234
Stosowanie stylów ....................................................................................236
Odst+py .....................................................................................................239
Dope&nienie kolumn ..................................................................................243
Ustawianie szeroko'ci minimalnej oraz maksymalnej ................................249
Sposób na optyczne wyrównanie d&ugo'ci kolumn ...................................253
Trójkolumnowe uk&ady stron .....................................................................256
Dlaczego rozwi"zanie to jest kuloodporne ................................................265
Uk$ad strony oparty na jednostkach em ....................................................265
Przyk&ad elastycznej strony internetowej ....................................................266
Struktura kodu ..........................................................................................266
CSS ............................................................................................................269
Idea&em jest spójno'; strony .....................................................................272
Uwaga na paski przewijania ......................................................................272
Podsumowanie ..........................................................................................273

Rozdzia3 9. QRczenie w ca3o)S ...................................................................... 275

Zastosuj kuloodporne rozwi"zania

do projektu ca$ej strony internetowej .....................................................276

Cel .............................................................................................................277
Dlaczego rozwi"zanie to jest kuloodporne ................................................278
P&ynny, adaptuj#cy si+ projekt ...................................................................278
Elastyczny tekst .........................................................................................280
Brak rysunków? Brak CSS? Xaden problem! ................................................280
Wersje j+zykowe ........................................................................................282
Konstrukcja ...............................................................................................283
Struktura kodu ..........................................................................................283
Style podstawowe .....................................................................................284
Struktura uk&adu strony ............................................................................285
Elastyczna siatka ........................................................................................286
Definiowanie atrybutu max-width .............................................................287
Nag&ówek ..................................................................................................289
Elastyczne obrazki .....................................................................................291
Struktura bocznego paska .........................................................................294
Wielokolumnowy uk&ad strony w CSS3 .....................................................297
Magia zapytaZ o media .............................................................................298
Podsumowanie ..........................................................................................306

Skorowidz ................................................................................. 307

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

10

Spis tre!ci

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

ELASTYCZNE

WIERSZE

Rozdzia 3. Elastyczne wiersze

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

72

Rozdzia$ 3.

Nie naleTy definiowaS

wysoko)ci poziomych

elementów strony i trzeba

zaplanowaS moTliwo)S

powi+kszenia ich w pionie.

Poziome elementy strony, takie jak nag$ówki, paski logowania, !cie%ki
odno!ników do odwiedzonych stron oraz paski wyszukiwania, to
elementy cz&sto spotykane w typowej witrynie internetowej. S" one
zwykle umieszczone na górze strony i mog" zawiera/ ró%ne elementy
graficzne (na przyk$ad t$o lub obrazki) oraz tekst. Obszary te cz&sto
s" zaprojektowane tak, aby uniemo%liwi/ rozci#gni+cie ich w pionie
— przy tworzeniu takich projektów zazwyczaj zak$ada si&, %e tekst
nie b&dzie powi&kszany, a w elementach nie b&dzie umieszczona zbyt
du%a ilo!/ tre!ci, lub %e takie dzia$ania nie zmieni" wygl"du strony.
Zwyczajowo elementy, w których umieszczane s" ca$e artyku$y lub
du%e fragmenty tekstu, dopasowuj" si& do dowolnej d$ugo!ci i wiel-
ko!ci tekstu lub innych zawartych w nich tre!ci. Wa%ne jest — i nie
jest to niemo%liwe — by inne poziome elementy strony tak%e trak-
towa/ w ten sposób.

W tym rozdziale zajmiemy si& cz&stym rozwi"zaniem stosowanym
przy tworzeniu obszarów na reklamy lub miejsc logowania, które
umieszczane s" w górnej cz&!ci strony internetowej. Zajrzymy ta-
kiemu typowemu projektowi „pod mask&”, a nast&pnie zrekonstru-
ujemy go w taki sposób, aby pomie!ci$ tekst dowolnego rozmiaru
i ka%d" jego ilo!/.

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

Elastyczne wiersze

73

Typowe rozwiRzanie

Rozci"gni&cie w pionie poziomego elementu strony wyja!nimy na
przyk$adzie wzi&tym z internetu — z witryny pewnego sklepu inter-
netowego… nazwijmy go „Najlepszy sklep wszech czasów” (oczywi!cie
sklep ten w rzeczywisto!ci tak si& nie nazywa, zmienili!my jego nazw&,
by zachowa/ anonimowo!/ winowaj… znaczy, autorów). „Najlepszy
sklep wszech czasów” to typowy sklep internetowy, w którym oferuje
si& wiele mniej lub bardziej przydatnych produktów dla domu. W przy-
k$adzie pokazali!my fikcyjn" stron&, ale wykorzystane techniki s" po-
wszechnie stosowane przy tworzeniu projektów tego typu. W prezen-
tacji typowego rozwi"zania ograniczymy si& tylko do poziomych pasków
logowania i promocji, zastosowanych w witrynie „Najlepszego sklepu
wszech czasów” (rysunek 3.1). Na górze ka%dej strony znajduje si& pa-
sek umo%liwiaj"cy zalogowanie si& oraz odszukanie najbli%szego sklepu,
a zaraz pod nim pasek z regularnie aktualizowanymi informacjami do-
tycz"cymi promocji. Ka%dy z nich zawiera tylko jedn" lini& tekstu.

Rysunek 3.1.

Górna cz&!/ strony przyk$adowego „Najlepszego sklepu

wszech czasów”

Widoczne powy%ej paski (oraz ca$y uk$ad strony) zbudowane s" za po-
moc" wielu zagnie%d%onych tabel. Elementy graficzne (takie jak za-
okr"glone ko<ce ka%dego paska) oraz tekst umieszczone s" w osob-
nych komórkach.

Na rysunku 3.2 widoczny jest prawdopodobny sposób podzielenia
pasków na osobne komórki — ich granice zosta$y zaznaczone czer-
won" lini". Ka%dy segment paska, z obrazkami w postaci zaokr"glo-
nych naro%ników w$"cznie, zosta$ umieszczony w osobnej komórce.
Jest to tylko przybli9enie prawdziwej struktury tabel =ród$owego pro-
jektu, gdy% nie chcieli!my za bardzo wnika/ w jego struktur&. Najwa%-
niejszy wniosek jest taki, %e do utworzenia widocznego na rysunkach
projektu pos$u%y$y tabele, wype$niacze GIF i ma$e grafiki.

Rysunek 3.2.

Ka%da cz&!/ paska znajduje si& w osobnej komórce tabeli

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

74

Rozdzia$ 3.

Wykorzystywanie tabel i wype$niaczy GIF do pozycjonowania grafiki
oraz tekstu jest technik", która przez lata stosowania zosta$a udosko-
nalona do perfekcji. Wi&kszo!/ stron internetowych zosta$a zbudowana
w taki sposób, a wielu projektantów szczyci$o si& tym, %e potrafili co
do piksela odtworzy/ na stronie internetowej dowolny projekt gra-
ficzny. Post&powano w my!l zasady, %e je!li co! da si& zaprojektowa/
i wydrukowa;, to mo%na to przekszta$ci/ na stron& internetow".

Powstaj" jednak coraz lepsze techniki tworzenia stron internetowych.
Odkrywamy metody, które zwi&kszaj" czytelno!/ stron oraz ich dost&p-
no!/ przy wykorzystaniu zwi&z$ego, poprawnego semantycznie j&zyka
znaczników oraz stylów CSS. W dalszej cz&!ci tego rozdzia$u zasto-
sujemy te metody do przebudowania dwóch poziomych pasków w wi-
trynie „Najlepszego sklepu wszech czasów”. Jednak najpierw poka%e-
my, dlaczego dotychczasowy projekt nie jest kuloodporny.

Dlaczego rozwiRzanie to

nie jest kuloodporne

Do konstrukcji poziomych pasków mo%na wprowadzi/ wiele ulepsze<,
które poprawi" elastyczno!/ tego elementu strony. Przeanalizujmy wa-
dy przedstawionego rozwi"zania, aby lepiej oszacowa/ zakres zmian
niezb&dnych do przekszta$cenia go w prawdziwie kuloodporny projekt.

MAQO ISTOTNE ELEMENTY GRAFICZNE

Jak ju% wspomnieli!my wcze!niej, oba paski s" zbudowane przy u%yciu
wielu zagnie%d%onych tabel. Ka%da cz&!/ paska znajduje si& w osobnej
komórce tabeli. Ma3o istotne elementy graficzne, takie jak zaokr"glo-
ne ko<ce pasków, s" umieszczone w kodzie wraz z tekstem. Takie
elementy b&d" tylko przeszkadza/ wszystkim u%ytkownikom wy!wie-
tlaj"cym stron& w przegl"darce tekstowej lub odczytuj"cym jej zawar-
to!/ przy u%yciu czytnika ekranu. Z pewno!ci" pomog$oby zadeklaro-
wanie odpowiednich warto!ci atrybutów alt dla wszystkich rysunków
(z uwzgl&dnieniem pustych deklaracji alt="" dla grafik pe$ni"cych rol&
ozdobników), jednak projektanci pracuj"cy przy tworzeniu witryny
„Najlepszego sklepu wszech czasów” postanowili z tego zrezygnowa/.

Poj&cie „ma$o istotnej grafiki” odnosi si& do elementów graficznych,
które nie wnosz" niczego do funkcjonalno!ci i tre!ci witryny oraz nie
pe$ni" %adnej istotnej roli informacyjnej. Zaokr"glone naro%niki pasków
to element dekoracyjny, dlatego w naszym rozwi"zaniu przenie-
siemy go z kodu strony do arkusza stylów.

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

Elastyczne wiersze

75

STAQE WYSOKOcCI

Je%eli spróbujemy odrobin& zwi&kszy/ rozmiar tekstu, projekt pozio-
mych pasków ca$kowicie si& rozpadnie (rysunek 3.3). Zwi&kszenie wiel-
ko!ci tekstu to jeden z najlepszych testów na to, czy dany projekt
jest elastyczny. Taki test umo%liwia nie tylko sprawdzenie czytelno!ci
strony przy du%ych wielko!ciach czcionek — dzi&ki niemu wiemy tak%e,
czy projekt poradzi sobie z prawid$owym wy!wietleniem ró%nych
ilo!ci tekstu (niezale%nie od jego rozmiaru). Za$ó%my, %e redaktor b&dzie
chcia$ pó=niej wy!wietli/ dwie linie tekstu promocyjnego, a nie jedn#,
jak jest to zdefiniowane w pierwotnej specyfikacji. W kuloodpornej
witrynie pasek powinien si& powi+kszy; i dopasowa/ do nowej ilo!ci
tekstu bez konieczno!ci wprowadzania dodatkowych zmian. Takie
rozwi"zanie pozwala zaoszcz&dzi/ czas i pieni"dze, a to powinno by/
wystarczaj"cym powodem do jego stosowania.

Rysunek 3.3.

Przy powi&kszaniu tekstu rysunek zaokr"glonych

naro%ników nie rozci"gnie si& wraz z ca$ym projektem

Przygl"daj"c si& rysunkowi 3.3, mo%emy stwierdzi/, %e obrazki daj"ce
efekt zaokr"glonych kraw&dzi pasków zosta$y zaprojektowane dla
ich sta$ej, !ci!le okre!lonej wysoko!ci. W rezultacie wstawienie do
paska dowolnego elementu wy%szego ni% wysoko!/ obrazka z naro%ni-
kami popsuje wygl"d projektu. W rozdziale tym (oraz pozosta$ych)
staram si& u!wiadomi/ twórcom stron, %e o wysoko'ci elementów
nale%y zacz"/ my!le/ w diametralnie inny sposób. Mo%liwe jest two-
rzenie projektów, które b&d" dopasowywa/ si& do wi&kszej czcionki,
wi&kszej ilo!ci tekstu oraz dowolnych elementów umieszczonych
w ich wn&trzu. Jak to osi"gn"/, poka%& za chwil&.

PRZEROcNIdTY KOD

Stosowanie tradycyjnych metod projektowania przy tworzeniu przy-
k$adowych poziomych pasków wymaga od projektanta napisania
bardzo du%ej ilo!ci kodu. Jak pami&tamy z rozdzia$u 2., „Skalowalna

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

76

Rozdzia$ 3.

nawigacja”, zagnie%d%anie tabel znacznie zwi&ksza ilo!/ kodu two-
rz"cego stron&. Taki przerost kodu nad tre!ci" zatyka serwery, zmniej-
sza przepustowo!/ $"cza i sprawia, %e strona mo%e by/ zupe$nie niezro-
zumia$a dla programów nieb&d"cych przegl"darkami oraz niektórych
urz"dze<. Na szcz&!cie istnieje znacznie prostsza, elastyczna metoda,
która pozwala uzyska/ ten sam efekt wizualny. Zapoznajmy si& z ni".

RozwiRzanie kuloodporne

Podczas tworzenia kuloodpornego projektu poziomych pasków naj-
pierw skupimy si& na strukturze kodu. Pó=niej zdefiniujemy kolory,
rozmie!cimy poszczególne elementy oraz obrazki t$a. Pod koniec
rozdzia$u uzyskamy elastyczny komponent, który b&dzie si& dopaso-
wywa$ do ka%dego rozmiaru tekstu i do ka%dej jego ilo!ci. Zacznijmy
wi&c od struktury kodu i zmniejszmy jej obj&to!/.

STRUKTURA KODU

Wyboru struktury pasków mo%emy dokona/ tylko na podstawie analizy
ich zawarto!ci. Jakie elementy najlepiej sprawdz" si& w tej roli? Jakie
elementy najlepiej opisz" zawarto!/ pasków? Gdy zaczynamy tworzy/
rozwi"zanie od samego pocz"tku, najlepiej jest najpierw odpowiedzie/
sobie na pytania tego typu i na tej podstawie wybra/ odpowiednie
elementy. Oczywi!cie mo%e istnie/ kilka poprawnych odpowiedzi,
jednak pytania te i tak nale%y sobie zada/ przed napisaniem pierwszej
linijki kodu.

W tym przypadku potrzebujemy dwóch elementów pe$ni"cych rol&
pojemników, po jednym dla ka%dego paska. Fragmenty tekstu umiesz-
czone na obydwu ko<cach pierwszego paska widz& jako pozycje listy,
natomiast w drugim pasku znajduje si& po prostu jeden akapit tekstu.

Napiszmy wi&c ca$y kod potrzebny do utworzenia naszego kompo-
nentu:

<ul>
<li>Not registered? <a
href="/register/">Register</a>now!</li>
<li><a href="/find/">Find a store</a></li>
</ul>
<div>
<p><strong>Special this week:</strong> $2 shipping
on all orders! <a href="/special/">LEARN MORE</a></p>
</div>

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

Elastyczne wiersze

77

Górny pasek przedstawili!my jako list& sk$adaj"c" si& z dwóch elemen-
tów, a dolny jako jeden akapit zawarty wewn"trz elementu <div>.
Projekt wygl"da teraz $adnie, prosto i bardzo schludnie — pozbyli-
!my si& przero!ni&tego kodu z zagnie%d%onymi tabelami.

Osi"gn&li!my tak%e nasz cel w zakresie poprawienia dost&pno!ci tre!ci.
Bez wzgl&du na to, jakie urz"dzenie b"d= oprogramowanie zostanie
u%yte do wy!wietlenia strony, te dwa paski zawsze zostan" zinter-
pretowane jako lista i jeden akapit, czyli struktura odpowiadaj"ca
umieszczonej w niej tre!ci.

IDENTYFIKACJA ELEMENTÓW

Naszym kolejnym zadaniem jest unikatowe oznaczenie wszystkich
elementów, do których b&dziemy chcieli zastosowa/ style. Przypi-
sanie kilku elementom identyfikatorów (atrybut id) umo%liwi nam
pó=niejsze rozmieszczenie i pokolorowanie sk$adników projektu
oraz dodanie obrazków — czyli przekszta$cenie prostego kodu
w gotowy projekt.

<ul id="register">
<li id="reg">Not registered? <a
href="/register/">Register</a> now!</li>
<li id="find"><a href="/find/">Find a store</a></li>
</ul>
<div id="message">
<p><strong>Special this week:</strong> $2 shipping
on all orders! <a href="/special/">LEARN MORE</a></p>
</div>

W$a!nie dodali!my unikatowe atrybuty id do listy, jej dwóch ele-
mentów oraz do elementu <div> zawieraj"cego drugi pasek. Iden-
tyfikatory te mo%na sobie wyobrazi/ jako uchwyty, do których ju%
za chwil& do$"czymy style. Mo%na si& zastanawia/, dlaczego identy-
fikator #message nie zosta$ przyporz"dkowany do samego elemen-
tu <p>, co wyeliminowa$oby konieczno!/ wstawiania otaczaj"cego
go elementu <div>. Do sko<czenia projektu potrzebne nam jednak
b&d" oba elementy, a dodatkowy element pe$ni"cy rol& kontenera tu
i tam jest cz&sto niezb&dny (jego zastosowanie nie jest przest&p-
stwem!), kiedy tworzy si& elastyczne, ale rozbudowane projekty stron
internetowych. Byle tylko z umiarem!

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

78

Rozdzia$ 3.

BEZ STYLÓW

Na rysunku 3.4 widzimy zdefiniowan" wcze!niej struktur& po wy!wie-
tleniu w przegl"darce internetowej. Arkusz stylów zawiera na razie
tylko podstawowe deklaracje zwi"zane z wygl"dem tekstu (w witrynie
„Najlepszego sklepu wszech czasów” u%ywana by$a czcionka Arial).

Rysunek 3.4.

Podgl"d kuloodpornej struktury kodu (efekt uzyskany

przed zastosowaniem stylów). Taki projekt jest czytelny i zrozumia$y
dla ka%dego urz"dzenia

Na urz"dzeniu, które nie obs$uguje CSS, strona wy!wietlona zostanie
tak, jak na rysunku 3.4. Taki szkielet jest nadal czytelny oraz zrozu-
mia$y dla ka%dego urz"dzenia odtwarzaj"cego stron&. Teraz mo%e-
my przyst"pi/ do definiowania stylów.

W arkuszu stylów utworzyli!my deklaracj& dla elementu <body>,
w której przy u%yciu s$owa kluczowego small ustalili!my podsta-
wowy rozmiar tekstu.

body {
font-family: Arial, sans-serif;
font-size: small;
}

Zanim zaczniemy przypi-
sywa# style, przyjmujemy,
$e ca%y projekt ma zdefi-
niowan& konkretn& szero-
ko'# (w przypadku witryny
„Najlepszego sklepu
wszech czasów” wynosi
ona 768 pikseli). Innymi
s%owy, zak%adamy, $e two-
rzone paski znajduj& si4
wewn&trz jakiego' konte-
nera (na przyk%ad

<div>

lub

<table>

) o 'ci'le

okre'lonej szeroko'ci.

Cho# w witrynie „Najlepszego sklepu wszech czasów” jako podstawowa rodzina krojów pisma wybrany zo-
sta% font Arial, pury'ci typograficzni mog& sugerowa# zast&pienie go krojem

Helvetica

(na jego podstawie

zaprojektowany zosta% Arial). Poniewa$ wi4kszo'# u$ytkowników komputerów Macintosh ma zainstalowa-
ny font Helvetica, mo$emy go wykorzysta#, aby zaproponowa# im (a tak$e wszystkim innym posiadaczom
tego fontu) %adniejszy wygl&d strony. Aby to zrobi#, nale$a%oby najpierw wymieni# krój Helvetica, a dopiero
potem jego zamiennik — Arial, na przyk%ad tak:

body { font-family: Helvetica, Arial,

sans-serif; }

.

Ró$nice pomi4dzy tymi dwoma krojami s& dla wi4kszo'ci osób niedostrzegalne, ale pasjonaci typografii umiej&
rozró$ni# oba kroje z odleg%o'ci kilometra. Wi4cej informacji na temat podobie<stw obu krojów mo$na uzy-
ska# na stronie projektanta krojów pisma Marka Simonsona:

http://www.ms-studio.com/articlesarialsid.html

.

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

Elastyczne wiersze

79

DODANIE TQA

Najpierw zadeklarujmy kolory t$a dla ka%dego z pasków. Dzi&ki temu
b&dziemy widzieli, jakie marginesy i dope$nienia nale%y zdefiniowa/.

#register {
background: #BDDB62;
}
#message {
background: #92B91C;
}

Rysunek 3.5 ilustruje rezultat zdefiniowania kolorów t$a obydwu
pasków.

Rysunek 3.5.

Dodanie koloru t$a u$atwi nam wizualne oszacowanie

struktury pasków przed dodaniem pozosta$ych elementów

POZYCJONOWANIE ZAWARTOcCI

Nast&pnie zajmiemy si& pozycjonowaniem tre!ci. Elementy listy umie-
!cimy na przeciwleg$ych ko<cach pierwszego poziomego paska, a tekst
o promocyjnej cenie wysy$ki — po!rodku drugiego paska. Na rysun-
ku 3.6 przedstawiono wygl"d komponentu po zastosowaniu zdefi-
niowanych ni%ej stylów CSS.

Rysunek 3.6.

Elementy listy umie!cili!my na ko<cach pierwszego paska

#register {
margin: 0;
padding: 0;
list-style: none;
background: #BDDB62;
}
#reg {
float: left;
margin: 0;
padding: 8px 14px;
}

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

80

Rozdzia$ 3.

#find {
float: right;
margin: 0;
padding: 8px 14px;
}

#message {
clear: both;
text-align: center;
background: #92B91C;
}

Pocz"wszy od góry: w li!cie #register pozbyli!my si& domy!lnych
marginesów oraz dope$nienia. Przy u%yciu regu$y list-style: none;
wy$"czyli!my tak%e wy!wietlanie znaków wypunktowania przy pozy-
cjach listy.

Nast&pnie pos$u%yli!my si& metod" przeciwleg3ych obiektów p3y-
wajRcych

, aby umie!ci/ elementy listy na dwóch ko<cach górnego pa-

ska. Dla pierwszego elementu (#reg) ustawili!my wyrównanie do lewej
strony, a drugiemu (#find) przypisali!my wyrównanie do prawej
strony. Dzi&ki takiemu rozwi"zaniu mo%liwe jest umieszczenie dwóch
elementów na jednakowej wysoko!ci po przeciwleg$ych stronach
paska (rysunek 3.7).

Rysunek 3.7.

Metoda przeciwleg$ych obiektów p$ywaj"cych to wygodny sposób wyrównania

tre!ci do przeciwleg$ych boków elementu nadrz&dnego

Opisana wy%ej metoda wyrównania elementów do przeciwnych stron
to wygodny sposób umieszczenia tre!ci na przeciwleg$ych ko<cach
elementu nadrz&dnego.

Wracaj"c do zadeklarowanych stylów — oprócz ustawienia elementów
p$ywaj"cych ustawili!my tak%e dope$nienie dla ka%dego boku elementu
listy. Dzi&ki temu zyskali!my odpowiednio du%o miejsca, by po lewej
stronie odno!nika „Find a store” umie!ci/ ikon& lupy.

Dla drugiego paska dodali!my regu$& clear: both;, dzi&ki której
element ten b&dzie wy!wietlony poni%ej elementów p$ywaj"cych. Wy-
!rodkowanie tekstu akapitu uzyskali!my poprzez dopisanie regu$y
text-align: center;

.

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

Elastyczne wiersze

81

BRAKUJiCE TQO

Gdzie podzia$o si& t$o górnego paska? Z bardzo podobnym proble-
mem spotkali!my si& w rozdziale 2. Gdy ustawiamy atrybut float
dla elementów wewn&trznych (w tym przypadku dwóch elementów
<li>

), wyjmujemy je z normalnego uk$adu dokumentu. St"d obej-

muj"cy pozycje listy element <ul> nie wie nawet, czy elementy listy
istniej". W rezultacie <ul> nie zna swojej prawid$owej wysoko!ci,
a zatem nie wie, na jak" wysoko!/ powinno si&ga/ jego t$o.

Aby naprawi/ ten problem, list& <ul> tak%e ustawiamy jako element
p$ywaj"cy (tak, jak zrobili!my to w przypadku zak$adek z rozdzia$u 2.).
Musimy równie% zdefiniowa/ szeroko!/ listy (width), by mie/ pewno!/,
%e pasek zajmie ca$y przeznaczony dla niego obszar. Wygl"da na to, %e
wi&kszo!/ przegl"darek dos$ownie zaimplementowa$a wymaganie
specyfikacji CSS 2.0: „Element p$ywaj"cy musi mie/ jawnie przypisan"
szeroko!/” (http://www.w3.org/TR/REC-CSS2/visuren.html#floats). Je!li
nie podamy tutaj szeroko!ci, pasek b&dzie mia$ szeroko!/ wymuszo-
n" przez umieszczon" w jego wn&trzu tre!/ (czyli dwie pozycje listy).

#register {
float: left;
width: 100%;
margin: 0;
padding: 0;
list-style: none;
background: #BDDB62;
}
#reg {
float: left;
margin: 0;
padding: 8px 14px;
}
#find {
float: right;
margin: 0;
padding: 8px 14px;
}

#message {
clear: both;
text-align: center;
background: #92B91C;
}

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

82

Rozdzia$ 3.

Na rysunku 3.8 przedstawiono aktualny wygl"d pasków — jak wida/,
t$o górnego paska jest ponownie widoczne.

Rysunek 3.8.

Gdy przy u%yciu w$a!ciwo!ci float rozmie!cimy elementy znajduj"ce si& wewn"trz

kontenera odpowiedzialnego za wy!wietlenie dla nich t$a, wy!wietlanie t$a mo%emy naprawi/,
ustawiaj"c sam kontener jako element p$ywaj"cy

DODANIE SZCZEGÓQÓW

Pozosta$o nam ju% tylko doda/ kilka szczegó$ów, które pozwol" wyko<-
czy/ projekt pasków. Zacznijmy od górnego paska i wprowad=my za-
okr"glone naro%niki, które widoczne s" przy dolnej kraw&dzi na ka%-
dym jego ko<cu (rysunek 3.9).

Po powi&kszeniu ilustracji (jak na rysunku 3.9) wida/, %e zaokr#glony
róg to tak naprawd& kilka bia$ych pikseli u$o%onych na kszta$t schodów.
Gdy obrazek wy!wietlany jest w normalnej rozdzielczo!ci, wydaje
si&, %e ko<ce paska s" zaokr"glone.

Utworzenie efektu zaokr"glonych naro%ników to !wietna sztuczka,
a na dodatek bardzo $atwo mo%na j" zaimplementowa/ z wykorzy-
staniem ma$ego obrazka i deklaracji koloru t$a w arkuszu CSS.

Najpierw w programie Photoshop (lub innym wybranym programie
graficznym) utworzymy obrazek t$a. Nasze paski maj" ustalon" szero-
ko!/ (768 pikseli), dlatego mo%emy utworzy/ jeden obrazek, w którym
umie!cimy zarówno lewy, jak i prawy róg paska. Nast&pnie w arku-
szu stylów wska%emy ten obrazek jako t$o pierwszego paska.

Rysunek 3.10 przedstawia gotowy obrazek w powi&kszeniu. @ci!lej
rzecz bior"c, widzimy na nim tylko lewy koniec obrazka, którego szero-
ko!/ wynosi 768 pikseli (tej samej szeroko!ci b&d" obydwa paski). Na
obydwu ko<cach obrazka utworzyli!my za pomoc" narz&dzia Pencil
(O&ówek) o grubo!ci 1 piksela bia$y schodkowy motyw (bia$y, poniewa%
taki jest kolor t$a ca$ej strony). Pozosta$a cz&!/ obrazka jest przezro-
czysta (w programie Photoshop przezroczysty obszar zaznaczony
jest wzorem szachownicy). Bia$e kawa$ki obrazka zostan" umiesz-
czone na kolorowym tle zdefiniowanym w arkuszu stylów. Dzi&ki temu
uzyskamy wra%enie, %e ko<ce paska s" zaokr"glone.

Do wcze!niejszej deklaracji stylu dla elementu o identyfikatorze
#register

(nadrz&dnej listy <ul>) dodajemy nast&puj"c" regu$&:

#register {
float: left;
width: 100%;

Rysunek 3.9.

Zaokr"glony

naro%nik to po prostu kilka
bia$ych pikseli u$o%onych
w sposób „schodkowy”

Rysunek 3.10.

Lewy koniec

obrazka GIF o szeroko!ci
768 pikseli (powi&kszenie:
1600%)

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

Elastyczne wiersze

83

margin: 0;
padding: 0;
list-style: none;
background: #BDDB62 url(img/reg_bottom.gif) no-repeat
bottom left;
}

Zdefiniowali!my w$a!nie kolor t$a i umie!cili!my na nim obrazek. Obra-
zek t$a nie mo%e by/ powielany i musi by/ wyrównany do dolnej i lewej
kraw&dzi elementu. T$o b&dzie widoczne przez przezroczyst" cz&!/ ob-
razka, a bia$e naro%niki b&d" je zas$ania/. Wyrównanie obrazka do dol-
nej kraw&dzi sprawia, %e bez wzgl&du na wysoko!/ elementu (ulegaj"c"
zmianie wraz ze zmian" rozmiaru tekstu lub zmian" ilo!ci tre!ci) bia$e
rogi zawsze b&d" znajdowa/ si& w odpowiednim miejscu (rysunek 3.11).

Rysunek 3.11.

Trójwymiarowy rysunek obrazuj"cy kolejno!/

nak$adania si& elementów

Na rysunku 3.12 przedstawiono otrzymany rezultat — dolna kraw&d=
pierwszego paska jest przy ko<cach zaokr"glona.

Rysunek 3.12.

Po$"czenie koloru t$a i bia$ych fragmentów obrazka

t$a daje efekt zaokr"glonych dolnych naro%ników paska

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

84

Rozdzia$ 3.

CZTERY ZAOKRiGLONE NAROJNIKI

W przypadku drugiego paska zaokr"glone naro%niki powinny by/ wi-
doczne zarówno przy górnej, jak i dolnej kraw&dzi, a pasek nadal po-
winno si& da/ rozci"gn"/ w pionie. Mo%emy to osi"gn"/, stosuj"c dwa
obrazki t$a. Przy dolnej kraw&dzi wykorzystamy obrazek utworzony
dla górnego paska, a przy górnej u%yjemy tego samego obrazka, ale po
odwróceniu go do góry nogami. Aby zastosowa/ dwa obrazki t$a, po-
trzebne s" nam dwa osobne elementy, do których b&dziemy mogli
je przypisa/.

Na szcz&!cie mamy dwa elementy, które mo%emy wykorzysta/. W ko-
dzie odpowiadaj"cym za wy!wietlenie drugiego paska mamy element
<div>

, w którym umieszczony jest akapit <p>:

<div id="message">
<p>
<strong>Special this week:</strong> $2 shipping
on all orders! <a href="/special/">LEARN MORE</a></p>
</div>

Do ka%dego z tych elementów przypiszemy teraz po jednym obrazku
t$a. Obrazek z poprzedniej cz&!ci przyk$adu przypiszemy do akapitu
<p>

, a jego odwrócon" o 180 stopni wersj& przypiszemy do elementu

o identyfikatorze #message.

#message {
clear: both;
text-align: center;
background: #92B91C url(img/mess_top.gif) no-repeat
top left;
}
#message p {
margin: 0;
padding: 8px 14px;
background: url(img/reg_bottom.gif) no-repeat
bottom left;
}

Dzi&ki wyrównaniu górnych naro%ników do górnej kraw&dzi elementu
#message

(zewn&trzny <div>), a dolnych naro%ników do dolnej kra-

w&dzi elementu <p> (rysunek 3.13) mamy pewno!/, %e wszystkie
cztery rogi b&d" poprawnie rozmieszczone bez wzgl&du na to, jak du%y
lub ma$y b&dzie znajduj"cy si& w akapicie tekst. Je!li powi&kszymy
rozmiar tekstu lub umie!cimy w pasku wi&ksz" ilo!/ tekstu, górne na-
ro%niki pozostan" wyrównane do górnego brzegu elementu, a dolne
do dolnego brzegu akapitu (jak zobaczymy za chwil&).

Standard CSS3 przewiduje
mo$liwo'# zastosowania
kilku obrazków t%a dla jed-
nego elementu. W%a'ciwo'#
ta jest obs%ugiwana w naj-
nowszych przegl&darkach
(w tym w IE9). Wi4cej in-
formacji na ten temat znaj-
dziesz pod adresem

http://www.css3.info/previe
w/multiple-backgrounds/

.

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

Elastyczne wiersze

85

Rysunek 3.13.

W przypadku dolnego paska zastosowali!my dwa

obrazki. Kolor t$a prze!wituje przez przezroczyste obszary rysunków GIF

Na rysunku 3.14. przedstawiono wygl"d pasków po dodaniu do arku-
sza stylów ostatnich deklaracji. Równie% w przypadku drugiego pa-
ska zastosowali!my przezroczyste obrazki z bia$ymi naro%nikami —
przez ich puste miejsca wida/ t$o strony.

Rysunek 3.14.

Po dodaniu obrazków t$a paski zaczynaj" nabiera/ w$a!ciwych kszta$tów

SZCZEGÓQY ZWIiZANE Z TEKSTEM

I ODNOcNIKAMI

Pozosta$o nam tylko kilka detali, by ca$kowicie odwzorowa/ stary pro-
jekt — nale%y jeszcze zmieni/ kolor tekstu i odno!ników. Brakuje tak%e
grafik przy odno!nikach „Find a store” oraz „LEARN MORE”. Zaj-
mijmy si& tym.

Najpierw zdefiniujemy kolor tekstu i odno!ników dla ka%dego paska
— w tym celu dodamy potrzebne regu$y do istniej"cych ju% deklaracji
stylów.

#register {
float: left;
width: 100%;
margin: 0;
padding: 0;
list-style: none;
color: #690;
background: #BDDB62 url(img/reg_bottom.gif)
no-repeat bottom left;

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

86

Rozdzia$ 3.

}
#register a {
text-decoration: none;
color: #360;
}
#reg {
float: left;
margin: 0;
padding: 8px 14px;
}
#find {
float: right;
margin: 0;
padding: 8px 14px;
}
#message {
clear: both;
font-weight: bold;
font-size: 110%;
color: #FFF;
text-align: center;
background: #92B91C url(img/mess_top.gif) no-repeat
top left;
}
#message p {
margin: 0;
padding: 8px 14px;
background: url(img/reg_bottom.gif) no-repeat
bottom left;
}
#message strong {
text-transform: uppercase;
}
#message a {
margin: 0 0 0 6px;
padding: 2px 15px;
text-decoration: none;
font-weight: normal;
color: #FFF;
}

Ustawili!my kolor tekstu dla odno!ników umieszczonych w elemencie
#register

oraz domy!ln" wielko!/ czcionki i kolor tekstu dla odno-

!ników i tekstu znajduj"cych si& wewn"trz elementu #message
(rysunek 3.15).

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

Elastyczne wiersze

87

Rysunek 3.15.

Wygl"d pasków po dodaniu stylów dla odno!ników i tekstu. Widoczne

jest tak%e wolne miejsce pozostawione na ikony, które b&d" towarzyszy/ odno!nikom
„Find a store” oraz „LEARN MORE”

Tekst „Special this week:” zosta$ przez nas wcze!niej wyró%niony przy
u%yciu elementu <strong>. Teraz skorzystali!my z mo%liwo!ci w$a!ci-
wo!ci text-transform i przekszta$cili!my wyró%niony tekst na wersa-
liki, utrzymuj"c oryginalny tekst w kodzie, napisany zgodnie z normaln#
wielko'ci#
liter w zdaniu. Dlaczego jest to dobre rozwi"zanie? Otó%
o ile teraz chcemy, by napisy „SPECIAL THIS WEEK” oraz „LEARN MORE”
by$y z$o%one wielkimi literami, o tyle kiedy! mo%e si& to zmieni/. Mo%e
si& zdarzy/, %e nowy dyrektor artystyczny projektu za%yczy sobie, by
zmieni/ styl tego tekstu na same ma&e litery. Dzi&ki w$a!ciwo!ci
text-transform

mo%emy z $atwo!ci" wprowadzi/ takie poprawki,

uaktualniaj"c sam arkusz stylów CSS i nie dotykaj"c kodu =ród$owego
strony.

To kolejny przyk$ad przygotowania si& na alternatywne wersje, jakie
mo%e w przysz$o!ci przybra/ projekt strony. NaleTy pami+taS, by
tekst z kodu kród3owego by3 rozdzielony od warstwy prezentacyj-
nej,

i wykorzystywa/ w$a!ciwo!/ text-transform do zmiany tek-

stu na ma$e lub wielkie litery w zale%no!ci od aktualnych potrzeb.

OSTATNI ETAP

Ostatni etap przebudowy poziomych pasków b&dzie polega$ na do-
daniu grafik wy!wietlanych obok odno!ników „Find a store” oraz
„LEARN MORE”. Obrazki te mogli!my doda/ w kodzie strony, jednak
w celu u$atwienia pó=niejszej aktualizacji wszelkie ma$o istotne ele-
menty graficzne lepiej jest trzyma/ poza kodem =ród$owym doku-
mentu — zw$aszcza %e mo%emy z $atwo!ci" u%y/ ich jako obrazków
t$a z wykorzystaniem stylów CSS.

Najpierw do drugiego elementu listy w górnym pasku dodajmy ikon&
przedstawiaj"c" lup&. Pozycj& grafiki definiujemy warto!ciami 0 50%,
dzi&ki czemu zostanie ona umieszczona przy lewym brzegu elementu,
w po$owie wysoko!ci, licz"c od górnej kraw&dzi (czyli zostanie wy-
!rodkowana w pionie):

#find {
float: right;
margin: 0;

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

88

Rozdzia$ 3.

padding: 8px 14px;
background: url(img/mag-glass.gif) no-repeat 0 50%;
}

Na rysunku 3.16 widoczny jest efekt dodania ikony do odno!nika
„Find a store”.

Rysunek 3.16.

Obrazek t$a zosta$ wyrównany do lewej kraw&dzi

elementu listy, gdzie wcze!niej odpowiednio zwi&kszyli!my dope$nienie

Teraz obok odno!nika „LEARN MORE” znajduj"cego si& w drugim pa-
sku dodamy grafik& strza$ki. Pozycjonujemy j" jak wcze!niej — przy
u%yciu warto!ci 0 50%, czyli wyrównamy j" do lewej strony i do po$owy
wysoko!ci elementu:

#message a {
margin: 0 0 0 6px;
padding: 2px 15px;
text-decoration: none;
font-weight: normal;
color: #fff;
background: url(img/arrow.gif) no-repeat 0 50%;
}

Na rysunku 3.17 pokazano wygl"d elementu po dodaniu ikony strza$ki
po lewej stronie odno!nika „LEARN MORE”. Strza$ka zosta$a umiesz-
czona na stronie poprzez zadeklarowanie stylu dla elementu <a>
znajduj"cego si& wewn"trz drugiego paska.

Na rysunku 3.18 przedstawiono ostateczny wygl"d przyk$adu —
wszystkie elementy znajduj" si& we w$a!ciwym miejscu. Otrzymali-
!my dwa paski praktycznie identyczne z tymi, które widoczne by$y
w witrynie „Najlepszego sklepu wszech czasów”, jednak kryj"ca si&
za naszym projektem struktura kodu i wszystkie zabiegi, których do-
konali!my, by strategicznie rozmie!ci/ obrazki t$a i tekst, sprawiaj",
%e projekt jest kuloodporny. A w$a!ciwie prawie kuloodporny — po-
trzebujemy jeszcze jednej poprawki, by wszystko dzia$a$o w prze-
gl"darce Internet Explorer 7.

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

Elastyczne wiersze

89

Rysunek 3.17.

W ten sam sposób, w jaki dodali!my obrazek do

elementu listy w pierwszym pasku, po lewej stronie tekstu LEARN
MORE dodali!my rysunek strza$ki. Tym razem obrazek zosta$
dodany bezpo!rednio do elementu <a>

Rysunek 3.18.

Ostateczna, kuloodporna wersja projektu poziomych pasków

POPRAWKA DLA IE7

Je!li gotowy projekt wy!wietlimy w przegl"darce Internet Explorer 7,
zauwa%ymy dodatkowy odst&p ponad tekstem w dolnym pasku (ry-
sunek 3.19). Grrr! Z nieznanych powodów IE7 dodaje ten odst&p, cho/
inne przegl"darki (w tym jej poprzednik, IE6) tego nie robi". Naj$a-
twiejsz" (i najmniej uci"%liw") metod" poradzenia sobie z tym proble-
mem jest skorzystanie z dodatkowego elementu p$ywaj"cego, zgodnie
z technik" opisan" wcze!niej. Element <div> o identyfikatorze #reg
ju% wcze!niej zosta$ zadeklarowany jako p$ywaj"cy, aby zmie!ci$y si&
w nim dwa p$ywaj"ce elementy listy; teraz zastosujemy jeszcze regu$&
float: left;

do elementu <div> o identyfikatorze #message, by

poradzi/ sobie z dodatkowym odst&pem w IE7.

Rysunek 3.19.

Gotowy przyk$ad wy!wietlony w przegl"darce Internet Explorer 7, pokazuj"cy

dodatkowy odst&p ponad tre!ci" drugiego paska

Poprawiona deklaracja b&dzie wygl"da$a nast&puj"co:

#message {
float: left;
width: 100%;

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

90

Rozdzia$ 3.

margin: 0;
padding: 0;
font-weight: bold;
font-size: 110%;
color: #fff;
text-align: center;
background: #92B91C url(img/mess_top.gif) no-repeat
top left;
}

Tak jak wcze!niej, dodali!my równie% regu$& width: 100%, niezb&dn"
do rozci"gni&cia paska na ca$" szeroko!/ kontenera (w tym przy-
padku 768 pikseli). Takie wyj!cie jest proste, szybkie i nadaje si& do
zastosowania we wszystkich przegl"darkach. W tym przyk$adzie jest
to chyba najlepsze rozwi"zanie problemu wyst&puj"cego w IE7. Istniej"
jednak równie% inne sposoby radzenia sobie z problemami z ele-
mentami p$ywaj"cymi. W kolejnym rozdziale omówimy inn" meto-
d&, która pozwala utrzymywa/ niezale%no!/ elementów, tak by nie
reagowa$y one na to, co dzieje si& po nich w strukturze dokumentu.

Dlaczego rozwiRzanie to

jest kuloodporne

Po uproszczeniu kodu i wykorzystaniu w kreatywny sposób ma$ych
obrazków t$a z powodzeniem odtworzyli!my oryginalny projekt. Teraz
dowiemy si&, dlaczego zaproponowane rozwi"zanie jest takie dobre,
czyli elastyczne.

ODDZIELENIE STRUKTURY OD WYGLiDU

Wyrzucili!my zb&dne grafiki i tabele, a na ich miejsce wprowadzili!my
schludny, ustrukturyzowany kod HTML. Sensownie zastosowane
znaczniki b&d" lepiej zinterpretowane przez wi&cej urz"dze< i progra-
mów, nawet w przypadku ewentualnego braku obs$ugi stylów CSS.

Obrazki wykorzystane w projekcie umie!cili!my w arkuszu stylów,
zamiast wstawia/ je bezpo!rednio do kodu. Dzi&ki temu wprowadzenie
pó=niejszych zmian w szacie graficznej b&dzie znacznie prostsze, nie
wspominaj"c ju% o tym, %e poprzez zastosowanie takiego rozwi"za-
nia znacznie ograniczyli!my ilo'; kodu.

Zmiana koloru pasków, na przyk$ad na czerwony, niebieski czy jaki-
kolwiek inny, b&dzie polega$a na prostej modyfikacji kilku regu$ CSS.
A rezultat b&dzie widoczny natychmiast.

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

Elastyczne wiersze

91

KONIEC Z USTALONYMI WYSOKOcCIAMI

Zamiast zak$ada/, %e paski zawsze b&d" mia$y wysoko!/ x pikseli,
w pomys$owy sposób rozmie!cili!my obrazki t$a, dzi&ki czemu zacho-
wali!my integralno!/ projektu, a jednocze!nie umo%liwili!my dowolne
rozci"ganie i zw&%anie paska. Takie rozwi"zanie pozwala tak%e na
stosowanie dowolnych metod definiowania rozmiaru tekstu (takich jak
te opisane w rozdziale 1., „Elastyczny tekst”) — nie trzeba ju% uwa%a/,
by wymiary tekstu podane w pikselach nie przekroczy$y rozmiaru paska.

Na rysunku 3.20 przedstawiono zrekonstruowany projekt wy!wietlony
przy znacznie powi&kszonym rozmiarze tekstu. T$o i zaokr"glone
naro%niki pasków nadal wygl"daj" dobrze i znajduj" si& we w$a!ci-
wym miejscu.

Rysunek 3.20.

Po zwi&kszeniu rozmiaru tekstu paski odpowiednio si& rozci"gaj", a projekt

od strony graficznej nadal wygl"da bez zarzutu

Wyobra=my sobie teraz, %e redaktor chce w pasku promocyjnym
umie!ci/ dwie wiadomo!ci. Bez modyfikowania projektu mo%emy
w prosty sposób doda/ drugi wiersz tekstu — pasek sam dopasuje si&
do nowego wymiaru wiadomo!ci (rysunek 3.21). Przyk$ad ten ilustruje
najwi&ksz" zalet& stosowania rozwi"za< kuloodpornych — projekt
dopasowuje si& nawet do nieprzewidzianych sytuacji.

Rysunek 3.21.

Dodanie drugiego wiersza tekstu do elementu #message nie wymaga %adnych

przeróbek ze strony projektanta, poniewa% strona zosta$a opracowana pod k"tem mo%liwo!ci
wy!wietlenia dowolnej ilo!ci tre!ci

Je!li nasz klient lub szef powie: „W tym miejscu b&dziemy umiesz-
cza/ najwy%ej jeden wiersz tekstu”, a my wykonamy projekt zgodnie
z tak" specyfikacj", to mo%emy by/ prawie pewni, %e za tydzie< ta sa-
ma osoba stwierdzi, i% „oczywiste jest, %e tutaj niezb&dne jest miej-
sce na dwa wiersze tekstu”. Je!li tworzymy kuloodporne projekty, tak"
funkcjonalno!/ b&dziemy mieli od razu wbudowan" w projekt. Oczywi-
!cie szefowi czy klientowi nale%y powiedzie/, %e przygotowanie miejsca
na drugi wiersz tekstu zaj&$o nam kolejny tydzie<. Albo pochwali/ si&

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

92

Rozdzia$ 3.

swoj" przezorno!ci" i powiedzie/, %e od razu pomy!leli!my o odpo-
wiednim rozwi"zaniu. Przy okazji mo%emy pokaza/, w jaki sposób sto-
sowanie CSS ogranicza problemy zwi"zane z aktualizacj" projektu.

Wariant z atrybutem

border-radius

Poniewa% oryginalny projekt, który odtwarzali!my, zosta$ zaprojekto-
wany z u%yciem bitmapowych naro%ników „w schodki”, my tak%e u%yli-
!my malutkich elementów graficznych, które wiernie na!ladowa$y
zaokr"glenie naro%ników na obydwu paskach. Mo%emy jednak pokusi/
si& o uproszczenie tego projektu poprzez ca$kowite wyeliminowanie
elementów graficznych i zast"pienie ich atrybutem border-radius,
dost&pnym w CSS3. Przegl"darki, które nie obs$uguj" atrybutu bor-
der-radius

, wy!wietl" paski w postaci prostok"tów, ale w wielu

przypadkach jest to akceptowalny kompromis. Czy zaokr"glone naro%-
niki s" kluczowe dla danego projektu? Je!li odpowied= brzmi „nie”,
to rezygnacja z elementów bitmapowych na rzecz stylów CSS mo%e by/
znakomitym rozwi"zaniem. Wi&ksza elastyczno!/ i $atwo!/ wprowa-
dzenia modyfikacji mniejszym nak$adem pracy. Czego% chcie/ wi&cej?

Zapewne pami&tasz, %e w rozdziale 2. u%yli!my gradientów CSS3
w celu odtworzenia gradientów na zak$adkach nawigacji. Podobnie
jak gradienty, atrybut border-radius jest obs$ugiwany przez zna-
komit" wi&kszo!/ nowoczesnych przegl"darek (Safari, Firefox, Opera,
IE9+). Trzeba jedynie pami&ta/, aby zastosowa/ odpowiednie pre-
fiksy atrybutów w celu uzyskania spójnego wygl"du zaokr"glonych
naro%ników w ró%nych przegl"darkach.

Zastosujmy atrybut border-radius na przyk$adzie omówionym
w tym rozdziale, aby wypróbowa/ go w praktyce. Przy okazji pozb&-
dziemy si& przygotowanych uprzednio naro%ników. Wystarczy, %e
zmodyfikujemy dwie deklaracje stylów, by zaokr"gli/ lewy oraz prawy
dolny naro%nik w elemencie #register oraz wszystkie cztery na-
ro%niki w elemencie #message. Usuniemy te% odwo$ania do obraz-
ków z regu$ zwi"zanych z atrybutem background.

#register {
float: left;
width: 100%;
margin: 0;
padding: 0;
list-style: none;

Rysunek lupy i strza%ki
umie'cili'my w po%owie
wysoko'ci elementu nad-
rz4dnego. Warto zauwa$y#,
$e dzi4ki takiemu rozwi&-
zaniu obrazki — bez wzgl4-
du na rozmiar tekstu —
zawsze b4d& wy'rodkowane
w pionie wzgl4dem tekstu.

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

Elastyczne wiersze

93

color: #690;
background: #BDDB62;
-webkit-border-bottom-left-radius: 5px;
-webkit-border-bottom-right-radius: 5px;
-moz-border-radius-bottomleft: 5px;
-moz-border-radius-bottomright: 5px;
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
}
#message {
float: left;
width: 100%;
margin: 0;
padding: 0;
font-weight: bold;
font-size: 110%;
color: #FFF;
text-align: center;
background: #92B91C;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
}

Zastosowali!my tak" sk$adni& dla atrybutu border-radius, która
powinna bez zarzutu zadzia$a/ w przegl"darkach opartych na silni-
ku WebKit (Safari, Chrome) i Mozilla (Firefox). Dodatkowo regu$y
pozbawione prefiksów gwarantuj" uzyskanie poprawnego efektu
w Operze oraz IE9+ (a tak%e wszystkich przysz$ych przegl"darkach,
które b&d" obs$ugiwa$y atrybut border-radius).

Warto zauwa%y/, %e sk$adnia zaokr"glania lewego i prawego dolne-
go naro%nika ró%ni si& nieznacznie w implementacjach –webkit-
oraz –moz-. W razie problemów z zapami&taniem tych ró%nic dodaj
stron& http://border-radius.com do ulubionych — znajdziesz na niej
skrypt, który wygeneruje odpowiedni kod za Ciebie.

Rysunek 3.22 (na nast&pnej stronie) przedstawia porównanie pi&k-
nie zaokr"glonych naro%ników w przegl"darce Safari (rysunek u gó-
ry) z kwadratowymi, niezaokr"glonymi naro%nikami w IE8, która nie
obs$uguje atrybutu border-radius (rysunek na dole). Czy brak za-
okr"glonych naro%ników w niektórych przegl"darkach oznacza koniec
!wiata? Raczej nie, zw$aszcza %e elastyczno!/ wynikaj"ca z rezygnacji
z obrazków wy$"cznie w celach estetycznych cz&sto przewa%a nad
ewentualnymi uci"%liwo!ciami zwi"zanymi z brakiem obs$ugi opisywa-
nego atrybutu w starszych przegl"darkach.

Regu%y bez prefiksów od-
wo%uj&cych si4 do silników
przegl&darek zawsze po-
winny by# podawane na
pocz&tku. Dzi4ki takiemu
rozwi&zaniu strona zostanie
poprawnie wy'wietlona na-
wet w przypadku ewentual-
nych zmian w specyfikacji,
dotycz&cych (niekiedy) eks-
perymentalnych atrybutów.

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

94

Rozdzia$ 3.

Rysunek 3.22.

Zaokr"glone naro%niki w przegl"darce Safari (u góry) oraz niezaokr"glone w IE8

(na dole)

Inny przyk3ad rozciRgania

Inne zastosowanie elastycznych elementów projektu przedstawi& na
przyk$adzie procesu tworzenia nag$ówka dla szablonu TicTac, który
zaprojektowa$em dla witryny Blogger. Blogger to popularne narz&dzie
do publikowania blogów, nale%"ce do firmy Google. Oferuje ono
kilka gotowych szablonów, które u%ytkownicy mog" wykorzysta/ przy
tworzeniu swojego dziennika internetowego. Projekty szablonów
musia$y by/ kuloodporne, aby nag$ówek móg$ pomie!ci/ dowolnie
d$ugi tytu$ witryny.

Na rysunku 3.23 widoczny jest nag$ówek szablonu i wy!wietlony
w nim tytu$ „Sample Blog”. Wszystkie elementy graficzne nag$ówka to
obrazki t$a zdefiniowane w arkuszu stylów CSS. Tytu$ witryny musi
by/ zwyk&ym tekstem, tak by u%ytkownicy serwisu Blogger mogli sko-
rzysta/ z szablonów bez konieczno!ci tworzenia jakiejkolwiek w$a-
snej grafiki.

Rysunek 3.23.

Przyk$adowa strona w witrynie Blogger utworzona

z wykorzystaniem szablonu TicTac. W tym szablonie elastyczno!/
jest wr&cz wymogiem, poniewa% tekst nag$ówka mo%e mie/
dowoln" d$ugo!/

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

Elastyczne wiersze

95

W przypadku jednowierszowych tytu$ów przy okre!lonej wielko!ci
czcionki projekt nag$ówka wygl"da !wietnie. Jednak co si& stanie, je!li
tytu$ bloga b&dzie d$u%szy (rysunek 3.24)? Gdybym zdefiniowa$ sta$"
wysoko!/ dla nag$ówka, d$ugie tytu$y (lub z$o%one tekstem o wi&k-
szym rozmiarze) wystawa$yby poza jego t$o i sta$yby si& nieczytelne,
co popsu$oby ca$y projekt.

Rysunek 3.24.

Uzyskany rezultat mo%e by/ bardzo nieciekawy, gdy

sta$" wysoko!/ elementów po$"czymy z tekstami o ró%nej d$ugo!ci

Integraln" cz&!ci" ka%dego dobrego projektu szablonu jest mo%liwo!/
pomieszczenia tre!ci dowolnej d$ugo!ci. Aby nag$ówek w szablonie
dla witryny Blogger dawa$ si& rozci"ga/, pos$u%y$em si& stylami CSS
i w sprytny sposób rozmie!ci$em dwa obrazki t$a.

STRUKTURA KODU

Zanim w ogóle pomy!la$em o stylach i grafice, ustali$em struktur&
kodu dla nag$ówka. Musia$em mie/ mo%liwo!/ u%ycia dwóch ró%nych
obrazków t$a, dlatego potrzebowa$em w kodzie dwóch elementów,
do których móg$bym przypisa/ te obrazki:

<header role="banner">
<h1>Sample Blog</h1>
</header>

Tytu$ bloga postanowi$em zdefiniowa/ jako element <h1>. Je!li w na-
szym projekcie chcemy oszcz&dzi/ ten element dla innych zastosowa<,
oczywi!cie mo%emy w tym miejscu u%y/ dowolnego innego. Wa%ne
jest, by!my mieli do dyspozycji dwa osobne elementy. Dlatego ele-
ment <h1> umie!ci$em w dodatkowym elemencie HTML5 o nazwie
<header>

. Ponownie skorzysta$em przy tym z mo%liwo!ci definiowania

ról WAI-ARIA. Deklaracja role="banner" oznacza, %e ten konkretny

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

96

Rozdzia$ 3.

element <header> (konkretny, gdy% mo%e on zosta/ wykorzystany
na stronie wi&cej ni% raz) jest najwa9niejszym nag$ówkiem strony.
W tym przypadku jest to idealne rozwi"zanie. Atrybut role nie tylko
poprawia dost&pno!/ projektu, lecz stanowi te% dodatkowy uchwyt
dla stylów, który mo%na wykorzysta/ zamiast identyfikatora id.

TWORZENIE DWÓCH OBRAZKÓW

Aby uzyska/ mo%liwo!/ elastycznego rozci"gania nag$ówka, utwo-
rzy$em dwa obrazki. Jeden z nich by$ o wiele wy%szy, ni% uwa9a&em,
%e jest to konieczne. U%ytkownicy serwisu Blogger odkrywaj" wi&ksz"
lub mniejsz" jego cz&!/ w zale%no!ci od d$ugo!ci tytu$u bloga. Drugi
obrazek to dolne obramowanie nag$ówka. Obrazek ten zawsze b&-
dzie wy!wietlany pod tekstem nag$ówka.

Na rysunku 3.25 widoczny jest wi&kszy z obrazków — przez prawie
ca$" jego wysoko!/ powtarzany jest jeden motyw.

Rysunek 3.25.

Pierwszy obrazek ma du%o wi&ksz" wysoko!/, ni% wydaje si& potrzebna

Na rysunku 3.26 przedstawiono drugi obrazek — podkre!lenie, które
zawsze b&dzie umieszczone poni9ej tekstu tytu$u. Ca$a górna cz&!/
obrazka jest przezroczysta. Dzi&ki temu mo%liwe jest na$o%enie na sie-
bie dwóch obrazków — obrazek top_div.gif b&dzie widoczny spod
obrazka top_h1.gif.

ZASTOSOWANIE STYLÓW CSS

Do po$"czenia wszystkich elementów w jedn" ca$o!/ pos$u%y$em si&
dwiema raczej prostymi deklaracjami CSS. Najpierw zadeklarowa$em
style dla zewn&trznego elementu <header>:

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

Elastyczne wiersze

97

Rysunek 3.26.

Obrazek top_h1.gif stanowi graficzne podkre!lenie nag$ówka. Pozosta$a jego

cz&!/ jest przezroczysta, dzi&ki czemu umieszczone pod nim obrazki tak%e b&d" widoczne

header[role="banner"] {
margin: 0;
padding: 0;
font-family: "Lucida Grande", "Trebuchet MS";
background: #E0E0E0 url(img/top_div.gif) no-repeat
top left;
}

Jak wida/, zdefiniowa$em domy!ln" rodzin& fontów, wyrówna$em
obrazek top_div.gif do górnej oraz lewej kraw&dzi i zastosowa$em
jasnoszary kolor jako t$o.

Nast&pnie doda$em deklaracje dla elementu nag$ówka:

header[role="banner"] {
margin: 0;
padding: 0;
font-family: "Lucida Grande", "Trebuchet MS";
background: #E0E0E0 url(img/top_div.gif) no-repeat
top left;
}
header[role="banner"] h1 {
margin: 0;
padding: 45px 60px 50px 160px;
font-size: 200%;
color: #fff;
background: url(img/top_h1.gif) no-repeat bottom
left;
}

Powy%sze deklaracje CSS definiuj" warto!ci atrybutów font-size
oraz padding dla tekstu i wyrównuj" obrazek top_h1.gif do dolnej
oraz lewej kraw&dzi nag$ówka. Wielko!/ elementu <header> zale%y

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

98

Rozdzia$ 3.

wy$"cznie od wysoko!ci umieszczonego w nim tekstu, wi&c za tekstem
nag$ówka wy!wietlony b&dzie tylko potrzebny fragment obrazka t$a.

Na rysunku 3.27 zilustrowano, w jaki sposób poszczególne elementy si&
na siebie nak$adaj".

Rysunek 3.27.

Rozmieszczenie elementów projektu — górna cz&!/

rozci"ga si& tak, by pomie!ci/ ca$y tytu$

AUTOROZCIiGANIE

Spróbujmy teraz przetestowa/ nasz rozci"gliwy nag$ówek — umie!/my
w nim bardzo d$ugi tytu$. Jak wida/ na rysunku 3.28, przy d$ugim
tytule ods$oni&ta zosta$a wi&ksza cz&!/ obrazka top_div.gif, a obra-
zek top_h1.gif zosta$ przesuni&ty w dó$, tak by nadal znajdowa$ si&
pod tekstem tytu$u.

Rysunek 3.28.

Klucz do sukcesu polega na przewidzeniu mo%liwo!ci

umieszczenia w projekcie dowolnej ilo!ci tekstu

Utworzony w taki sposób nag$ówek mo%e si& tak%e skurczy/. Je!li tekst
tytu$u jest krótki lub w$a!ciciel strony chce, by by$ on wy!wietlony przy
u%yciu ma$ej czcionki, pole nag$ówka zmniejszy si+ do odpowiednich
wymiarów. Krótko mówi"c, szablon jest wyposa%ony w estetyczny wi-
zualnie nag$ówek, który zosta$ przygotowany na ka%d" ewentualno!/.

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

Elastyczne wiersze

99

Podsumowanie

W j&zyku angielskim funkcjonuje ciekawe okre!lenie, a mianowicie
piekarski tuzin, oznaczaj"ce ni mniej, ni wi&cej… trzyna!cie. Chodzi
w nim o to, %e m"dry piekarz zawsze upiecze dodatkowe ciastko czy
bu$k&. Je!li jedno ciastko si& przypali albo nie wyro!nie (lub zostanie
zjedzone przez piekarza), zawsze b&dzie jedno dodatkowe, gdyby
potrzebny by$ ca&y tuzin. W ten sposób piekarz przygotowuje si& na
niespodziewane okoliczno!ci. Dlaczego my nie mieliby!my upiec do-
datkowego ciastka, gdy i tak pieczemy ca$" blach&? Czasami jedno
dodatkowe ciastko jest bardzo potrzebne, czasami nie.

Od$ó%my ciastka na bok (ale oczywi!cie mo%emy pozostawi/ je w za-
si&gu r&ki). Uwzgl&dnienie w naszym projekcie mo%liwo!ci powi&k-
szenia si& w pionie poziomych elementów strony mo%emy porówna/
z przygotowaniem piekarskiego tuzina ciastek. W ten sposób pró-
bujemy zabezpieczy/ si& przed niespodziewanymi sytuacjami: przy-
gotowujemy dodatkowe miejsce na powi&kszenie tekstu lub dodanie
kilku wyrazów. Poprzez to oszcz&dzamy w$asny czas, dajemy u%yt-
kownikowi (a tak%e redaktorom strony) wi&ksz" kontrol& nad spo-
sobem wy!wietlania strony i poprawiamy jej dost&pno!/.

Oto lista kilku wskazówek, o których warto pami&ta/ podczas two-
rzenia poziomych elementów projektu:

Usuni&cie z kodu ma$o istotnych elementów graficznych i zast"-
pienie ich obrazkami t$a definiowanymi w arkuszu stylów po-
zwala unikn"/ niepotrzebnego rozrastania si& kodu.

Do rozmieszczenia elementów po przeciwnych bokach pojemnika
nale%y stosowa/ metod& „przeciwleg$ych elementów p$ywaj"cych”.

Gdy nie wiemy, jak du%a ilo!/ tre!ci mo%e by/ umieszczona w ja-
kim! elemencie, zawsze mo%emy po-s$u%y/ si& dwoma obrazkami
t$a, by element ten móg$ si& rozci"ga/ i kurczy/.

Je!li pewne zabiegi stylistyczne, takie jak zaokr"glone naro%niki,
nie s" kluczowe dla projektu, mo%emy skorzysta/ z atrybutów
w rodzaju border-radius.

Planujmy miejsce z zapasem. Post&pujmy tak, jak przy pieczeniu
czekoladowych ciastek: zawsze warto zrobi/ jedno dodatkowe.

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

100

Rozdzia$ 3.

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

Skorowidz

A

adaptacja projektu, 300
analiza stron internetowych, 195
arkusz do zerowania stylów, 15
atrybut

alt, 48
background, 177
background-image, 177
border-box, 249
border-collapse, 212
border-radius, 92, 155, 295
box-property, 285
box-shadow, 132, 221, 223
box-sizing, 248
cellspacing, 211, 212
class, 110, 148
colspan, 229
height, 53
id, 50
line-height, 114
padding, 246
repeat-x, 55
role, 49, 96
scope, 209

automatyczna adaptacja, 300
automatyczne sprawdzaniu stron, 195

B

bazowa wielko!/ tekstu, 32
blokowanie op$ywania, 120

dodaj float, 120, 134
$atwe wy$"czanie, 121, 136
w$a!ciwo!/ overflow, 121, 135

C

ca$kowita elastyczno!/, 159
cie< obrazka, 133
CSS Zen Garden, 12
CSS, Cascading Style Sheets, 11, 45, 269
CSS3, 155, 298
czytelno!/ strony, 190

D

definiowanie

atrybutu max-width, 287
automatycznych marginesów, 287
fontów, 97
kontenera, 222
podstawowych stylów CSS, 284
ról WAI-ARIA, 284
stylów dla tabel, 202
wygl"du zaznaczonej zak$adki, 58
zakresu, 209

deklaracja koloru, 52
deklaracje CSS dla nag$ówka, 97
d$ugo!/ wiersza, 249
dodawanie

atrybutu border-radius, 156
elementu <div>, 245, 273
elementu p$ywaj"cego, 121
grafik, 87
koloru t$a, 79
tytu$u, 210

DOM, Document Object Model, 195
dopasowanie szeroko!ci projektu, 300
dope$nienie, padding, 52, 213

elementów <h3>, 152
elementów, 245
kolumn, 243
warto!ci domy!lne, 112

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

308

Skorowidz

dost&pno!/ tre!ci, 77
dostosowanie odst&pów, 123
dynamiczna adaptacja projektu, 305
dynamiczne formatowanie strony, 283

E

efekt

aktywnych przycisków, 46
cienia, 132, 221
gradientu, 55
podmiany, 57
rollover, 46
siatki, 127
trójwymiarowo!ci, 125
zaokr"glonych naro%ników, 82

elastyczna siatka, 286
elastyczne

dopasowanie zdj&/, 292
obrazki, 291

elastyczno!/ ramki, 159
elastyczny

tekst, 280
uk$ad strony, elastic page layout, 228
uk$ad trójkolumnowy, 264

element

#container, 34
#wrap <div>, 267
#wrap-inner, 263
.box, 157
<a>, 54, 89
<abbr>, 38
<article>, 108, 110
<body>, 28
<caption>, 211, 220
<dd>, 108
<div>, 32, 77, 148
<dt>, 108
<em>, 166
<figure>, 291
<footer>, 267
<h1>, 29
<h3>, 150
<header>, 95, 267, 289
<html>, 137
<li>, 52
<nav>, 49, 284
<p>, 77, 165
<section>, 148, 222
<strong>, 87
<table>, 103, 210
<td>, 208, 215

<th>, 207, 213, 218
<ul>, 52, 81
DOCTYPE, 196

elementy

blokowe, block-level, 54, 167
listy, 50, 79
nadrz&dne, 106
nag$ówka, 148
!ródliniowe, inline, 167
p$ywaj"ce, 52

F

favelet Disable stylesheets, 191
favelet Show all DIVs, 191
favelety, 190
Firebug, 195
formatowanie tytu$ów, 113
funkcja Validate by File Upload, 197

G

gradient, 51
gradientowe t$o, 131
gradienty CSS3, 59

H

HTML5, 14, 95

I

identyfikacja elementów, 77
identyfikator

#content, 258
#message, 77, 84
#sidebar, 258
roli, 49

ikonka

lupy, 87
strza$ki, 88

J

jednostka

em, 37
rem, 39

jednostki d$ugo!ci

bezwzgl&dne, 24
wzgl&dne, 24

j&zyk JavaScript, 190

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

Skorowidz

309

K

kaskadowe arkusze stylów, 11, 21
klasa

alt, 126
callout, 294
note, 36

kod

prezentacyjny, 186
strony, 283
strukturalny, 186
strza$ki, 171
tabeli, 206
tworz"cy gradienty, 61
=ród$owy, 186

kolejno!/ tre!ci strony, 232
kolejno!/ wy!wietlania bia$ego tekstu, 184
kolor

nag$ówka, 218
tekstu, 86
t$a, 55, 83
t$a ramki, 295
t$a wiersza, 225

kontener, 77, 105
kontener <div>, 234

L

linie podzia$u, 213
linie siatki, 225
lista

uporz"dkowana, 168
wypunktowana, 50

listy definicji, 106
logo, 290

Q

$"czenie

elementów, 96
projektu graficznego i zawarto!ci, 151
selektorów, 139

M

mapa obrazu, 47
margines, margin, 52
metaelement viewport, 300
metoda

przeciwleg$ych elementów p$ywaj"cych, 117
przeciwleg$ych obiektów p$ywaj"cych, 80
wykorzystuj"ca tabele, 230

metody automatycznego wy$"czania op$ywania, 120
Multi-Column Layout, 297

N

nadawanie stylów CSS, 51
nadpisanie domy!lnych regu$, 126
nag$ówek, 94, 289
nag$ówki

kolumn, 207
tabeli, 225

naro%nik, 295
naro%nik pozorowany, 171
narz&dzie

Google Translate, 283
Gradient Photoshopa, 131
typu WYSIWYG, 60
Ultimate CSS Gradient Editor, 60

nawigacja, 290
niewykorzystane miejsce, 297

O

obiekty p$ywaj"ce, 119
obramowanie dolne, 57, 152
obramowanie komórek, 214
obrazek

dla zak$adek aktywnych, 50
dla zak$adek nieaktywnych, 50
powielany w poziomie, 56
przypisany do elementu <div>, 179
tla, 54, 83, 147, 150

obs$uga

gradientów CSS, 60
jednostek rem, 40
RGBA, 295
stylów CSS, 189

od$"czenie stylów CSS, 187
odno!nik, 217
odst&p

mi&dzy kolumnami, gutter, 239, 246
mi&dzy komórkami, 211
mi&dzy zdj&ciami i tekstem, 124

odwo$ania do obrazków, 56, 92
okre!lenie struktury danych, 212
opcja Pobieraj obrazki automatycznie, 177
op$ywanie, 119

P

pasek

boczny, 234, 260
rozszerze< programistycznych, 193
Web Accessibility Toolbar, 194
Web Developer, 193

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

310

Skorowidz

paski przewijania, 252, 272
piksel, 22, 23
p$ynny uk$ad strony, fluid page layout, 228
pocz"tkowy uk$ad strony, 140
podmiana obrazków, 46
pojemnik, 105
poprawka dla IE7, 89, 138
porównanie wielko!ci tekstu, 27, 29, 36
powielanie obrazka, 56, 177
powi&kszanie tekstu, 75, 280
poziome elementy strony, 72
pozorowana ramka, 171
pozorowany naro%nik, 171
pozycjonowanie

bezwzgl&dne, 234
obrazka, 115, 172
obrazka t$a, 256
tre!ci, 79

prefiksy, 62
program graficzny, 50
projekt

elastycznej nawigacji, 49, 58, 68
nag$ówka, 95
tabeli, 206
witryny internetowej, 277

przemieszanie

danych z warstw" prezentacyjn", 203
tre!ci z projektem graficznym, 231

przeniesienie dope$nienia do wn&trza, 273
przes$anianie elementu, 235
przezroczysto!/, 55
pseudoelement

after, 137
before, 159
first-child, 215

R

ramki, 144
ramki pozorne, 167
ramki z zaokr"glonymi rogami, 145, 161
regu$a display:block, 217
rola navigation, 51
role, 49
rozci"ganie

nag$ówka, 96
paska, 90

rozmiar czcionki, 23
rozmiar tekstu, 22, 296

bezwzgl&dny, 25
wzgl&dny, 24

RWD, Responsive Web Design, 273
rysunek szkieletu struktury, 106

S

selektor

* html, 137
nth-child, 216

selektory elementów potomnych, 58
silnik WebKit, 93
skalowalno!/, 52
skalowanie

projektu, 266
uk$adu strony, 271
zak$adek, 59, 64
zdj&cia, 293
wzgl&dem warto!ci bazowej, 40

skosy, 65
skrypty, 190
s$owo kluczowe

large, 25
medium, 25
small, 25
smaller, 24
x-large, 25
x-small, 25
xx-large, 25
xx-small, 25

specyfikacja WAI-ARIA, 49
sprawdzanie

dokumentów XHTML, 196
kodu, 196
stylów CSS, 196

sterowanie op$ywaniem, 235
stopka, 238, 259
strona dopasowuj"ca si& automatycznie, 278
strona nieczytelna, 180
struktura

bocznego paska, 294
kodu dla nag$ówka, 95
pi&ciokolumnowej siatki, 286
podstawowa strony, 14
projektu dwukolumnowego, 233
ramki, 148, 162
tabeli, 205
uk$adu strony, 285

strza$ka, 171
styl ramki, 151
style dla odno!ników, 53
style podstawowe, 111
stylizowanie elementu, 51
system nawigacji, 52
szablon TicTac, 94
szeroko!/

dope$nienia, 244
elementów <dt>, 124
elementu nadrz&dnego, 134, 213

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

Skorowidz

311

listy, 81, 109
marginesu, 128
odst&pów, 240, 243
okna, 213
okna przegl"darki, 250
tabeli, 213
wymuszona przez tre!/, 81

szkielet projektu, 105

T

tabele zagnie%d%one, 231
technika Sliding Doors, 161
technologia RWD, 273
tekst alternatywny, 48
test

Dig Dug, 189
integralno!ci strony, 189
na elastyczno!/, 75

testowanie projektu, 190
t$o elementu <td>, 147
t$o nag$ówka, 153, 157
t$o odno!ników, 57
tworzenie

cieni, 132
elastycznego uk$adu strony, 239
gradientów, 60
kolumn, 234, 237
obrazka t$a, 255
p$ynnych kolumn, 240
p$ynnych uk$adów, 233
pozornych ramek, 168
ramek, 173
stylów dla ramek, 144
trójkolumnowego uk$adu, 257
uk$adów stron opartych na CSS, 234

tytu$ tabeli, 220

U

udost&pnianie HTML5, 15
uk$ad strony

dwukolumnowy, 229, 234, 268
elastyczny, 228
oparty na em, 265
o sta$ej szeroko!ci, 228
p$ynny, 228, 279
pocz"tkowy, 140
quasi-tabelaryczny, 117
trójkolumnowy, 256
wielokolumnowy, 298

Ultimate CSS Gradient Editor, 60
uporz"dkowanie danych, 206

ustawienia atrybutu border-radius, 157
ustawienie kolorów, 236
usuwanie

domy!lnych marginesów, 153
pustej przestrzeni, 225
stylów CSS, 185
tabel, 105
wci&cia, 114

W

W3C, World Wide Web Consortium, 25, 107
walidacja, 195
walidator kodu, 197
walidator W3C, 198
warstwa

danych, 205
prezentacyjna, 87, 184, 205

warto!/ bazowa po!rednia, 33
warto!/ marginesów, 129
WebKit, 93
wersaliki, 87
wersje j&zykowe, 282
w$a!ciwo!/

box-sizing, 248
clear:both, 238
float, 52, 110, 116, 237, 273
font-size, 37
list-style, 153
max-width, 250
min-width, 250, 252
overflow, 121, 135
position:absolute, 235
text-transform, 87

wygl"d

elementów <dd>, 113
kolumnowy, 128
ramki, 147

wy$"czanie

op$ywania obiektów, 118, 301
stylów CSS, 281
wy!wietlania obrazków, 181
wy!wietlania rysunków, 281

wype$niacz GIF, spacer GIF, 17, 47
wype$nienie gradientowe, 147
wyrównanie

d$ugo!ci dwóch kolumn, 253
d$ugo!ci trzech kolumn, 262
do lewej, 80, 237
do prawej, 80
niestandardowe, 214
obrazka, 163
elementów, 116

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ

background image

Czytaj dalej...

312

Skorowidz

wysoko!/

elementów, 95
paska, 91
wiersza, 114, 296
zawarto!ci kontenera, 137

wy!rodkowanie

projektu, 287
tekstu, 80

wy!wietlanie

od nowego wiersza, 217
poni%ej, 80
stylów CSS, 192

Z

zagnie%d%anie

elementów, 35
tabel, 76, 205

zak$adki

bez obrazków, 62
nawigacyjne, 45

nawigacyjne z zaokr"glonymi naro%nikami, 65
wyró%nione, 58

zaokr"glone naro%niki, 65, 74, 84, 92, 151, 156
zapytania o media, 299, 306
zawarto!/ generowana, 121
z"bkowany wzór, 289
zmiana

elementu <caption>, 220
kierunku op$ywania, 125
kierunku wyrównania, 125
koloru, 218
koloru wierszy, 216
procentowa rozmiaru tekstu, 29
rozmiaru obrazków, 253
rozmiaru tekstu, 28
tekstu w zak$adkach, 59
uk$adu na jednokolumnowy, 303

zmienna wysoko!/, 148
znacznik <br />, 217
znaki wypunktowania, 80
znikaj"cy tekst, 183

Kup ksi

ąĪkĊ

Pole

ü ksiąĪkĊ


Wyszukiwarka

Podobne podstrony:
Kuloodporne strony internetowe Jak poprawic elastycznosc z wykorzystaniem XHTML a i CSS Wydanie II
Kuloodporne strony internetowe Jak poprawic elastycznosc z wykorzystaniem XHTML a i CSS kulood
Kuloodporne strony internetowe Jak poprawic elastycznosc z wykorzystaniem XHTML a i CSS
Kuloodporne strony internetowe Jak poprawic elastycznosc z wykorzystaniem XHTML a i CSS
Kuloodporne strony internetowe Jak poprawic elastycznosc z wykorzystaniem XHTML a i CSS kulood
Kuloodporne strony internetowe Jak poprawić elastyczność z wykorzystaniem XHTML a i CSS
Kuloodporne strony internetowe Jak poprawiŠ elastycznoŠ z wykorzystaniem XHTML a i CSS
Kuloodporne strony internetowe Jak poprawic elastycznosc z wykorzystaniem XHTML a i CSS
Kuloodporne strony internetowe Jak poprawic elastycznosc z wykorzystaniem XHTML a i CSS kulood
Kuloodporne strony internetowe Jak poprawić elastyczność z wykorzystaniem XHTML a i CSS
Kuloodporne strony internetowe Jak poprawic elastycznosc z wykorzystaniem XHTML a i CSS 2

więcej podobnych podstron