Rozdział 7. Zgodność z CSS 1
Aplikacja kliencka prezentująca dokumenty przy użyciu CSS odpowiada wymogom specyfikacji CSS 1, gdy:
- Podczas wczytywania dokumentu próbuje odszukać wszystkie arkusze stylów, do których znajduje się odniesienie w danym dokumencie oraz parsuje je zgodnie z wymogami specyfikacji CSS 1.
- Sortuje reguły zgodnie z zasadą kaskadowości.
- W miarę możliwości środka przekazu używa wszystkich własności CSS 1 (patrz niżej).
Aplikacja kliencka, która tworzy własne arkusze stylów, odpowiada wymaganiom specyfikacji CSS 1, gdy:
- Utworzone przez nią arkusze stylów są prawidłowe.
Aplikacja, która prezentuje dokumenty przy użyciu CSS 1 i która tworzy dokumenty CSS 1, jest zgodna ze specyfikacją CSS 1 tylko wtedy, gdy spełnia wszystkie powyższe wymagania.
Aby osiągnąć zgodność ze specyfikacją CSS1, aplikacja nie musi mieć zaimplementowanych wszystkich własności CSS1. Do tego celu wystarczy implementacja tylko funkcji podstawowych. Funkcje podstawowe CSS 1 to cała specyfikacja z wyjątkiem tych części, które zostały z niej wyraźnie wykluczone. W specyfikacji te części oznaczone są jako: „CSS1 core:„, po czym następuje wyjaśnienie, które funkcje wykraczają poza zestaw funkcji podstawowych. Funkcje wykluczone z podstawowego zestawu zwane są funkcjami zaawansowanymi.
Rozdział ten zawiera opis wymagań, które należy spełnić, aby aplikacja kliencka była zgodna z CSS 1. W przyszłości pojawią się następne wersje CSS, które mogą stawiać inne wymagania przed twórcami aplikacji klienckich.
Przykłady ograniczeń mediów prezentujących dokumenty: ograniczone zasoby (czcionki, kolory) i ograniczona zdolność rozdzielcza (co może powodować nieprawidłowe odwzorowanie marginesów). W takich przypadkach klient powinien zaokrąglać wartości. Różne paradygmaty interfejsów użytkownika mogą być obciążone pewnymi ograniczeniami: przeglądarka VR może przeskalowywać dokumenty na podstawie „odległości” od użytkownika.
Aplikacja kliencka może udostępniać użytkownikom dodatkowe opcje. Na przykład może być wyposażona w funkcje przydatne dla użytkowników z wadami wzroku lub pozwalać na wyłączanie funkcji mrugania.
Należy jednak pamiętać, że CSS 1 nie reguluje wszystkich aspektów formatowania dokumentów. Na przykład aplikacja kliencka ma możliwość wyboru własnego algorytmu obliczania odelgłości między literami.
Specyfikacja ta zaleca, ale nie jest to wymóg konieczny, aby aplikacja kliencka:
- Pozwalała użytkownikowi na samodzielny wybór arkuszy stylów,
- pozwalała użytkownikowi włączać i wyłączać własne arkusze stylów.
Powyższe zasady służą do opisu funkcjonalności, a nie interfejsu użytkownika.
7.1 Przyszłość
Specyfikacja ta opisuje język CSS 1. W przyszłości prawdopodobnie powstaną następne wersje tego języka, wzbogacone o nowe funkcje. Niniejszy rozdział poświęcony jest opisowi zachowania aplikacji klienckich, obsługujących tylko CSS 1, które napotkają arkusze stylów nie należące do tej specyfikacji.
- Deklaracje z nieznanymi własnościami są ignorowane. Na przykład, jeżeli w arkuszu pojawi się następujący zapis:
H1 { color: red; rotation: 70deg }
to zostanie on potraktowany następująco:
H1 { color: red; }
- Nieznane wartości lub wartości częściowo nieznane są ignorowane:
IMG { float: left } /* CSS1 */
IMG { float: left top } /* "top" nie jest wartością własności ?float? */
IMG { background: "red" } /* słowa kluczowe nie występują w cudzysłowie */
IMG { border-width: 3 } /* wartości liczbowe muszą posiadać jednostki */
Tylko pierwsza z powyższych reguł byłaby uznana przez parser CSS 1. Reszta zostałaby zignorowana:
IMG { float: left }
IMG { }
IMG { }
IMG { }
Aplikacja kliencka zgodna z przyszłymi wersjami CSS może także akceptować jedną lub więcej z pozostałych zasad.
- Nieprawidłowa reguła typu ?@? zostanie zignorowana łącznie z wszystkim co następuje po niej, aż do napotkania średnika lub zamknięcia nawiasu klamrowego włącznie:
@three-dee {
@background-lighting {
azimuth: 30deg;
elevation: 190deg;
}
H1 { color: red }
}
H1 {color: blue}
Reguła ?@three-dee? jest nieprawidłowa z punktu widzenia CSS 1. W związku z tym, jest ona w całości ignorowana przez parser. Arkusz stylów wygląda teraz następująco:
H1 {color: blue}
Mówiąc ściślej:
Kaskadowy Arkusz Stylów w każdej wersji składa się z listy instrukcji. Są dwa rodzaje instrukcji: tzw. „at-rules” oraz zwykłe reguły. Każde z nich mogą występować w towarzystwie białych znaków (spacji, tabulatorów, znaków nowej linii).
Jako że arkusze stylów bywają często włączane bezpośrednio do dokumentów HTML, to dobrą praktyką jest ukrywanie ich przed starszymi aplikacjami za pomocą komentarzy HTML. Znaki otwarcia i zamknięcia komentarzy HTML mogą pojawiać się przed, po i wewnątrz instrukcji w otoczeniu białych znaków lub nie.
Reguły typu ?at-rule? rozpoczynają się od słowa kluczowego, będącego identyfikatorem rozpoczynającym się od znaku ?@?. (np. ?@import?, ?@page?). Identyfikator może składać się z liter, cyfr, myślników oraz znaków unikowych (bardziej szczegółowo opisanych poniżej).
Regułę ?at-rule? stanowi wszystko co znajduje się pomiędzy znakiem ?@? oraz znakiem średnika włącznie ?;? lub następnym blokiem (o blokach będzie mowa poniżej), w zależności co występuje jako pierwsze. Reguły ?at-rule? nie rozpoczynające się od słowa kluczowego ?@import? są ignorowane przez parser CSS 1. To samo dotyczy reguł ?at-rule? nie znajdujących się na samym początku arkusza stylów, tj. znajdujących się po jakichkolwiek innych regułach (nawet zignorowanych).
Załóżmy, że parser CSS 1 napotyka następujący fragment kodu CSS1:
@import "subs.css";
H1 { color: blue }
@import "list.css";
Druga reguła ?at-rule? jest umiejscowiona niezgodnie ze specyfikacją CSS 1, przez co zostanie ona zignorowana. Po przetworzeniu arkusz stylów wygląda następująco:
@import "subs.css";
H1 {color: blue}
Blokiem jest wszystko co znajduje się pomiędzy otwierającym i zamykającym nawiasem klamrowym. Pomiędzy tymi nawiasami możę pojawić się każdy znak, z tym że nawiasy okrągłe, nawiasy kwadratowe oraz nawiasy klamrowe muszą zawsze występować w odpowiadających sobie parach oraz mogą być zagnieżdżane. Cudzysłowy pojedyncze i podwójne także muszą występować parami, a treść zawarta pomiędzy nimi jest parsowana jako łańcuch znaków (więcej na temat łańcuchów w Dodatku B). Poniżej znajduje się przykładowy blok. Zamykający nawias klamrowy znajdujący się w podwójnych cudzysłowach nie jest odpowiednikiem nawiasu otwierającego, a drugi cudzysłów pojedynczy służy jako znak unikowy, a nie jako para dla pierwszego pojedynczego cudzysłowu:
{ causta: "}" + ({7} * ?'?) }
Reguła zwykła składa się z selektora, po którym następuje deklaracja bloku. Selektor stanowi wszystko co znajduje się przed otwierającym nawiasem klamrowym ({). Reguła rozpoczynająca się od nieprawidłowego selektora jest ignorowana.
Załóżmy, że parser CSS 1 napotyka następujący fragment kodu CSS 1:
H1 { color: blue }
P[align], UL { color: red; font-size: large }
P EM { font-weight: bold }
Druga z kolei reguła zawiera nieprawidłowy dla specyfikacji CSS 1 selektor. Aplikacja kliencka zignoruje zatem tę regułę:
H1 { color: blue }
P EM { font-weight: bold }
Blok deklaracji rozpoczyna się od otwierającego nawiasu klamrowego({), a kończy nawiasem klamrowym zamykającym (}). Pomiędzy tymi nawiasami znajduje się zero lub więcej deklaracji oddzielonych znakiem średnika (;).
Deklaracja składa się z własności, średnika oraz wartości. Wokół nich mogą występować białe znaki. własność służy jako identyfikator, o czym mowa była powyżej. W wartościach można używać wszystkich znaków, ale nawiasy okrągłe (()), nawiasy kwadratowe ([]), nawiasy klamrowe ({}), pojedyncze (‚) i podwójne („) cudzysłowy muszą występować w uzupełniających się parach. Nawiasy okrągłe, klamrowe i kwadratowe można zagnieżdżać. Znaki w cudzysłowach traktowane są jako łańcuchy znaków.
Aby dodawanie nowych wartości dla istniejących już własności było możliwe, aplikacje klienckie muszą ignorować nieznane im własności lub wartości. Każda własność ma własne ograniczenia syntaktyczne i semantyczne w odniesieniu do akceptowanych wartości.
Wyobraźmy sobie następujący arkusz stylów:
H1 { color: red; font-style: 12pt }
P { color: blue; font-vendor: any; font-variant: small-caps }
EM EM { font-style: normal }
Druga deklaracja w pierwszej linijce posiada nieprawidłową wartość ?12pt?. Druga deklaracja w drugiej linijce zawiera niezdefiniowaną własność ?font-vendor?. Parser CSS 1 zignoruje te deklaracje, a arkusz stylów będzie wyglądał następująco:
H1 { color: red; }
P { color: blue; font-variant: small-caps }
EM EM { font-style: normal }
Komentarze (patrz rozdział 1.7) można umieszczać wszędzie i traktowane są one jako pojedyncze spacje. W CSS 1 zdefiniowano miejsca, w których mogą znajdować się pojedyncze odstępy (np. wewnątrz wartości). Komentarze dozwolone są także w tych miejscach.
Poniższe zasady mają zastosowanie zawsze:
- Arkusze stylów nie rozróżniają wielkich i małych liter. Wyjątkiem są te części, które nie należą do specyfikacji CSS. To znaczy, w CSS 1 w nazwach rodzin czcionek i adresach URL mogą być rozpoznawane wielkie i małe litery. Własności CLASS oraz ID pozostają pod kontrolą języka HTML [2].
- Selektory (nazwy elementów, klas oraz identyfikatory ID) mogą zawierać znaki ze zbiorów A-Z, 0-9, znaki Unicode 161-255 oraz myślniki. Nie mogą się one rozpoczynać od myślnika ani cyfry. Dopuszczalne jest także użycie znaków unikowych oraz znaków Unicode zapisanych w postaci kodu numerycznego (patrz następny punkt).
- Lewy ukośnik, bezpośrednio po którym znajdują się nie więcej niż cztery cyfry heksadecymalne (0-9A-F) stanowi znak w systemie Unicode, o określonym numerze.
- Od każdego znaku, za wyjątkiem znaków zapisanych systemem heksadecymalnym, można uciec umieszczając przed nim lewy ukośnik, np.: „”" - łańcuch składający się z otwierającego i zamykającego cudzysłowu.
- Dwa powyższe punkty opisują sposoby zastosowania lewego ukośnika jako znaku unikowego. Lewy ukośnik zastosowany jako znak unikowy jest zawsze traktowany jako część identyfikatora, z wyjątkiem sytuacji, kiedy pojawia się on wewnątrz łańcucha znaków (tj. „7B” nie jest znakiem przestankowym, ale „{” jest, „32″ może znaleźć się na początku nazwy klasy, ale „2″ nie).
Ważne: W HTML dozwolone jest więcej znaków, które mogą wystąpić w nazwie własności CLASS niż te które mogą wystąpić w selektorach opisanych powyżej. W CSS 1 do zapisu tych znaków należy zastosować znaki unikowe lub zapisać je jako wartości liczbowe systemu Unicode: „B&W?” można zapisać jako „B&W?” lub „B26W3F”, „κουρος” (Greckie: „kouros”) powinno być zapisane jako: „3BA3BF3C53C13BF3C2″. Oczekuje się, że w przyszłych wersjach CSS można będzie wpisywać więcej znaków bezpośrednio.
Gramatyka CSS1 znajduje się w Dodatku B.
Niniejszy dokument jest tłumaczeniem rekomendacji W3C Cascading Style Sheets, level 1. Tłumaczenie to nie ma statusu dokumentu normatywnego i może zawierać błędy wynikające z tłumaczenia. Tylko dokument znajdujący się na stronie W3C pod adresem http://www.w3.org/TR/REC-CSS1 ma charakter normatywny.
Copyright © 2004 W3C® (MIT, ERCIM, Keio), Wszystkie prawa zastrzeżone. W3C stosuje następujące zasady dotyczące odpowiedzialności cywilnej, znaku towarowego, używania dokumentu i licencji oprogramowania.
Narzędzia

Dodaj do schowka












Wysyłam...