Wykład 2: Kaskadowe arkusze stylów (CSS Cascade Style Sheets)
Przykład użycia stylu <p style= "text-indent: 30pt; (wcięcie I wiersza) text-align: justify; (wyrównanie obustronne) line-height: 20pt; font-size: 10pt; (odstęp między wierszami) (rozmiar czcionki) font-family: arial; (rodzaj czcionki) color: red;"> (kolor czcionki) </p> tekst akapitu... Przykład: PrzykladUzyciaStylu.html
Metody dodawania stylu: styl wpisany (inline) w znaczniku dopisujemy atrybut style, a wartością atrybutu są deklaracje stylu rozdzielone średnikiem: <znacznik style= właściwość: wartość; właściwość: wartość > </znacznik> przykład: <p style= color: blue; text-indent: 20pt; > tekst akapitu </p> <h1 style= color: red; letter-spacing: 10pt; > tekst tytułu </h1> Przykład: PrzykladUzyciaStylu.html
Metody dodawania stylu: osadzony arkusz stylów w sekcji nagłówka (element head) dokumentu html w znaczniku style wpisujemy reguły stylu: <style> selektor {właściwość: wartość; właściwość: wartość} </style> przykład: <style> p {color: blue;text-indent: 20pt;font-size: 10pt} h3 {color: red;letter-spacing: 10pt;} </style> Przykład: OsadzonyArkuszStylow.html Korzyść: W danym dokumencie styl zostanie zastosowany do wszystkich elementów które są wskazane przez selektor (w tym przykładzie do akapitów i tytułów).
Metody dodawania stylu: zewnętrzny arkusz stylów 1. tworzymy plik tekstowy z rozszerzeniem.css np.: styl.css 2. w tym pliku wpisujemy reguły w formacie: selektor {właściwość: wartość; właściwość: wartość} np.: p {color: blue; text-indent:20pt; font-size:10pt} 3. dołączamy zęwnętrzny arkusz stylu do strony wpisując w sekcji head: <head> <link rel="stylesheet" href="styl.css"> </head> gdzie wartość atrybutu href to adres pliku ze stylem, zgodnie z regułami adresowania (patrz wykład 1 - adresy względne, bezwzględne) Przykład: ZewnetrznyArkuszStylow.html Korzyść: reguły stylu zostaną zastosowane we wszystkich plikach html do których dołączymy zewnętrzny arkusz stylów.
Terminologia p {color: blue;font-size: 20pt} p {color: blue;font-size: 20pt}- reguła stylu (rule) p - selektor (to nie tylko są nazwy znaczników) (selector) color: blue - deklaracja stylu (style declaration) font-size: 20pt - deklaracja stylu color - właściwość (property) blue wartość (value) font-size właściwość 20pt wartość
Komentarze p { color: red; /* czerwony kolor czcionki */ font-weight: bold /* tekst pogrubiony */ }
Rodzaje selektorów (cz. 1) pojedynczy znacznik, np. p {color :red} klasy.rozstrzelenie {letter-spacing: 1em;} Styl zastosowany będzie do dowolnego znacznika z atrybutem class o wartości rozstrzelenie <p class="rozstrzelenie">...</p> <h1 class="rozstrzelenie">...</h1> p.wyrozniony {color:red;} Styl zastosowany będzie do znacznika p z atrybutem class o wartości wyrozniony: <p class= wyrozniony >...</p> pseudoklasy a:hover {color: red} myszka nad linkiem, kolor zmienia się na czerwony identyfikatory #specjalny {color: red} Przykład: Selektory.html Styl zastosowany będzie do elementu z atrybutem id o wartości specjalny: <p id= specjalny >...</p> Uwaga: Tą samą nazwę atrybutu class może mieć wiele elementów. Element o danej wartości atrybutu id może być tylko jeden (chodzi o to, aby jednoznaczne identyfikować element na stronie)
Rodzaje selektorów (cz. 2) h1,h2,h3 {color: red} styl będzie zastosowany do wszystkich wymienionych selektorów td ol li {color: red} do elementu li, który jest potomkiem ol, który jest potomkiem td (także wtedy gdy nie jest potomkiem bezpośrednim - dzieckiem) p > img {width: 300px} do img będącego dzieckiem (bezpośrednim potomkiem) p table + p {color: red} do table i do p, które są w stosunku do siebie rodzeństwem table * {color: red} do wszystkich potomków table * {color: red} do wszystkich elementów Przykład: Selektory.html, Tabele.html
Jakie mogą być wartości dla właściwości nazwy color: red font-size: large border: thick liczby wartości bezwzględne (absolute) jednostki: in (cal: 2,54 cm), pt (punkt: 1/72 cala), cm, mm font-size: 12pt text-indent: -10pt (można wartości ujemne) wartości względne (relative) px (piksel-zależny od rozdzielczości) procent (wielkość w stosunku do bieżącego rozmiaru czcionki ustalonego przez nadrzędny element lub w stosunku do rozmiaru elementu nadrzędnego np. szerokość akapitu względem szerokości całej strony) em (wielkość w stosunku do bieżącego rozmiaru czcionki ustalonego przez nadrzędny element): font-size: 120% (120 % bieżącej wielkości) font-size: 1.2em (1,2 razy większe od bieżącej wielkości), em jest zalecane zamiast procentów Przykład: CzcionkiRozmiarWzgledny.html
Wartości dla kolorów nazwy angielskie color: red numer w zapisie heksadecymalnym (szesnastkowym) color: #FFFF00 zapis skrócony: #FF0 (zasada: 2A7 = 22AA77) numer w zapisie decymalnym (dziesiątkowym) color: rgb(255,255,0) Nazwy i numery kolorów: http://www.w3schools.com/html/html_colornames.asp http://www.w3schools.com/tags/ref_colorpicker.asp
Właściwości i wartości dla tekstu (dla czcionki)
Rodzaj czcionki 3 rodzaje czcionek: bezszeryfowa (np. Arial) szeryfowa (np. Times) nieproporcjonalna (np. Courier) Właściwość: font-family font-family: Verdana, Arial, Helvetica, Sans-Serif; font-family: "Times New Roman", Times, Georgia, Serif; font-family: Courier, Monospace; Zalecenia: używać czcionek standardowych, na końcu wymienić czcionkę generyczną Przykład: CzcionkiRodzaje.html Czcionka dowolna (nawet, gdy użytkownik nie ma jej zainstalowanej): http://www.w3schools.com/cssref/css3_pr_font-face_rule.asp Google fonts: https://developers.google.com/fonts/docs/getting_started
Rozmiar czcionki Właściwość: font-size font-size: large font-size: 15pt Wartości: nazwy: xx-small, x-small, small, medium, large, x-large, xx-large gdzie medium to domyślny rozmiar używany przez przeglądarkę (np. firefox: 10pt). Kolejne rozmiary są o 20% większe. Czyli np. medium jest o 20% większe od small liczby (patrz slajd Jakie mogą być wartości )
pogrubienie font-weight: bold inna wartość: normal pochylenie font-style: italic inna wartość: normal rozstrzelenie liter letter-spacing: 10pt Inne atrybuty czcionki inne wartości analogicznie jak w przypadku rozmiaru czcionki przekształcenie na duże litery text-transform: uppercase inna wartość: lowercase kolor color: blue wartośći: patrz slajd wartości dla kolorów właściwość: text-decoration wartości: none (brak) underline (podkreślenie) line-through (przekreślenie) link bez podkreślenia: a {text-decoration: none}
Deklaracje stylu (właściwości i wartości) związane z czcionką mogą być stosowane do wszystkich selektorów, m.in.: body tekst w całym dokumencie h1-h6 tekst w tytule p tekst w akapicie ol tekst w całym wyliczeniu numerowanym li tekst w konkretnej pozycji wyliczenia td tekst w konkretnej komórce tabeli
Właściwości i wartości dla akapitu (elementu blokowego)
wyrównanie tekstu właściwość: text-align wartości: left center right justify (obustronne inaczej wyjustowanie) wcięcie pierwszego wiersza właściwość: text-indent wartość: liczbowo lub procentowo odstępy między wierszami (liniami tekstu) właściwość: line-height wartość: liczbowo lub procentowo
Obramowanie (krawędzie) akapitu rodzaj właściwość: border-style wartości: none (brak) dotted (kropkowane) dashed (kreskowane) solid (ciągła linia) grubość właściwość: border-width wartości: thin (cienka) medium (domyślna grubość) thick (gruba) liczbowo kolor właściwość: border-color wartość: nazwa lub numer koloru W ten sposób ustawimy jednakowy wygląd wszystkich krawędzi: lewej, prawej, górnej, dolnej
Obramowanie akapitu (2) wskazanie krawędzi: top (górna), right (prawa), bottom (dolna), left (lewa) border-top-style (rodzaj krawędzi górnej) border-bottom-width (grubość krawędzi dolnej) border-right-color (kolor krawędzi prawej) itd. obramowanie (zapisy skrócony, często stosowany) border: 2px solid red /* dotyczy wszystkich krawędzi */ (podajemy trzy argumenty w kolejności: grubość, rodzaj i kolor linii) border-left: 2px solid red /* dotyczy krawędzi lewej*/ border-style: solid dashed none dashed (podajemy zaczynając od górnej krawędzi i idąc zgodnie z ruchem wskazówek zegara: górna prawa dolna lewa, jeśli tylko dwie wartości to pierwsza dotyczy górnej i dolnej a druga prawej i lewej) analogicznie dla border-width lub border-color
Tło akapitu kolor tła: właściwość: background-color wartość: nazwa koloru lub numer obrazek jako tło: właściwość: background-image wartość: url("tu_adres_obrazka") powtórzenie tła właściwość: background-repeat wartości: repeat (powtarza w poziomie i w pionie) repeat-x (powtarza w poziomie) repeat-y (powtarza w pionie) no-repeat (nie powtarza) położenie tła: background-position: center center pierwsza wartość określa położenie w poziomie druga w pionie, wartości mogą być podane procentowo lub liczbowo Przykład: AkapitObramowanieTlo.html
Model pudełkowy (Box model) Model pudełkowy - konstrukcja elementów strony. Przeglądarka wizualizuje elementy strony (h1-h6, p, ul, ol, li, table) używając modelu pudełkowego, tzn. dodaje do zawartości elementu margines wewnętrzny, obramowanie i margines zewnętrzny margines zew. zawartość elementu obszar treści elementu margines wew. obramowanie obszar zajmowany przez element strony = obszar zawartości elementu np. akapitu (tekst, obrazki) + margines wew. (odstęp treści od obramowania) + obramowanie + margines zewnętrzny margines wew. (padding) - odstęp zawartości od obramowania margines zew. (margin) odstęp akapitu od sąsiadującego elementu np. innego akapitu, tabeli, wyliczenia lub brzegu strony
Marginesy margines zewnętrzny właściwość: margin-top margin-right margin-bottom margin-left auto wartość: liczbowo lub procentowo (jaka część ekranu na margines) wyśrodkowanie w poziomie: margin-left: auto;margin-right: auto albo margin: 0 auto; ZAPISY SKRÓCONE: margin: 10px 20px 30px 40px wartości podają margines zaczynając od góry i idąc zgodnie z ruchem wskazówek zegara margin: 10px (wszystkie marginesy) margin: 10px 5px (pierwsza liczba to górny i dolny, druga to prawy i lewy) margines wewnętrzny właściwość: padding-top padding-right padding-bottom padding-left wartość: liczbowo lub procentowo ZAPISY SKRÓCONE: analogicznie jak przy marginesie zewnętrznym
Szerokość i wysokość elementów szerokość właściwość: width wartość: liczbowo lub procentowo wysokość właściwość: height wartość: liczbowo lub procentowo Uwaga: szerokość/wysokość dotyczy obszaru zawartości elementu, obramowanie i oba rodzaje marginesów (zewnętrzny i wewnętrzny) nie są uwzględniane Przykład: ModelPudelkowyMarginesyRozmiary.html
Firebug - dodatek do przeglądarki Firefox Narzędzie przydatne przy tworzeniu stron internetowych: wskazujemy element strony: odnajduje odpowiadający za ten element kod html wskazujemy fragment kodu: odnajduje element strony utworzony przez ten kod edycja html i css: obserwacja na bieżąco zmian linijka do mierzenia odległości i wiele innych funkcji intuicyjnych w obsłudze Instalacja: http://getfirebug.com/ Po zainstalowaniu włączenie Firebug-a: F12 lub kliknięcie w ikonę z pluskwą (bug) u góry po prawej:
Akapit podsumowanie Deklaracje stylów pokazane na przykładzie akapitu mogą być również stosowane do innych elementów blokowych (np. h1-h6, ul, ol, li)
Właściwości i wartości dla list (wyliczeń) punktowanych i numerowanych
numerowane rodzaj numeracji właściwość: list-style-type wartości: decimal (arabskie-domyślne), upper-roman (duże rzymskie), lower-roman (małe rzymskie), upper-alpha (duże litery), lower-alpha (małe litery), none (brak numeracji) punktowane rodzaj symbolu właściwość: list-style-type wartości: disc (domyślna), circle (puste kółko), square (kwadrat), none (brak punktowania) obrazek jako symbol punktowania list-style-image: url( tu_adres_url_obrazka_z_symbolem ) Uwaga: wartość none wykorzystuje się aby tworzyć menu (następny wykład) Przykład: Listy.html
Tabele - Właściwości i wartości
Obramowanie: właściwość border wartości tak jak dla akapitu (patrz slajd "Obramowanie akapitu") border dla selektora table dotyczy obramowania zewnętrznego tabeli border dla selektora td dotyczy obramowania komórek standardowo dodawany jest odstęp między obramowaniem zewnętrznym tabeli a obramowaniem komórek likwidacja tego odstępu: table {border-collapse: collapse}
szerokość: tło właściwość: width wartości tak jak dla akapitu width dla table to szerokość całej tabeli width dla td to szerokość kolumny Domyślnie rozmiar tabeli dopasowuje się do wielkości zawartości właściwość: background wartości tak jak dla akapitu margines wewnętrzny (padding) komórek tak jak dla akapitu, przydatny, aby tekst w komórkach nie był zbyt blisko krawędzi wyrównanie tekstu w komórkach w poziomie właściwość: text-align wartości tak jak dla akapitu (zobacz slajd z "wyrównanie tekstu") w pionie wlaściwość: vertical-align wartości: top middle bottom Przykład: Tabele.html
Walidacja. Więcej informacji o stylach. Walidacja stylów: http://jigsaw.w3.org/css-validator/ Jeśli jest błąd w stylu to przeglądarka ignoruje daną regułę lub deklarację i nie zmieni wyglądu elementu do którego reguła czy deklaracja się tyczy Szczegółowe omówienie właściwości stylów (po angielsku): http://www.w3schools.com/css/default.asp http://www.w3schools.com/cssref/default.asp http://docstore.mik.ua/orelly/web2/css/index.htm
Hierarchia elementów w dokumencie HTML i dziedziczenie <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>podstawy...</title> </head> <body> <h1>kraje w Europie</h1> <h3>polska</h3> <p>jakiś tekst...</p> <ul> <li>litwa</li> <li>łotwa</li> <li>estonia</li> </ul> </body> </html>
Hierarchia elementów w dokumencie HTML i dziedziczenie html head body meta title p ul body przodek (ancestor) dla p,ul,li p, ul, li potomki (descendant) dla body p, ul - potomek bezpośredni (child) dla body body rodzic (parent) dla p i ul p, ul rodzeństwo (sibling) li
Hierarchia elementów w dokumencie HTML i dziedziczenie potomek dziedziczy deklarację stylu przodka body {color: red} Przy takiej deklaracji kolor czerwony będzie też w akapicie i w liście punktowanej, bo są potomkami body li {color: green} Ta deklaracja nadpisze deklarację przodka, tekst na liście punktowanej będzie zielony Częsta praktyka: ustalamy rodzaj czcionki dla całego dokumentu poprzez deklarację dla elementu body Uwaga: nie wszystkie deklaracje podlegają dziedziczeniu, np. właściwości: border, width, margin nie są dziedziczone Przykład: HierarchiaDziedziczenie.html
Zasady pierwszeństwa reguł stylów w przypadku konfliktu (cz. 1) Kaskada (kaskadowość) - duża ilość, style mogą pochodzić z wielu źródeł. Kaskadowość ustala hierarchię reguł to znaczy która reguła będzie zastosowana w przypadku, gdy do elementu pasuje kilka reguł. 0d najsłabszego priorytetu (punkt 1) do najmocniejszego (punkt 3c): 1. arkusz przeglądarki (domyślne ustawienia stylów w danej przeglądarce) 2. arkusz użytkownika przeglądarki (a user defined style sheet) 3. arkusz autora strony (website's author style sheet) a) zewnętrzny arkusz stylów b) osadzony arkusz stylów c) styl wpisany W przypadku konfliktu zostanie zastosowana reguła z mocniejszym priorytetem. Jeśli ten sam priorytet to reguła bardziej specyficzna lub wymieniona później.
Zasady pierwszeństwa reguł stylów w przypadku konfliktu (cz. 2) Jeśli ten sam priorytet to reguła bardziej szczegółowa (precyzyjna) lub wymieniona później. Poniżej reguły ułożone w kolejności do najbardziej szczegółowej: h1 {color: green;}.miasto {color: orange;} h1.miasto {color: red} #wyrozniony {color: blue} Np. Tytuł h1 o atrybucie id "wyrozniony" będzie w kolorze niebieskim a nie w zielonym. Tytuł h1 o atrybucie class "miasto" będzie w kolorze czerwonym a nie w pomarańczowym lub zielonym. Przykład: KonfliktRegul.html