Selektory#
Selektor typu (nazwy tagu)#
E { /* deklaracje */ }
Selektor typu (type selector), zwany też selektorem nazwy tagu lub selektorem nazwy elementu, to po prostu nazwa elementu określonego typu z języka dokumentu, zapisana przy użyciu nazwy kwalifikowanej CSS. Selektor typu reprezentuje instancję elementu podanego typu w drzewie dokumentu.
W językach bazujących na XML-u wielkość liter w nazwach elementów (w kodzie CSS jak i strukturze znacznikowej) jest istotna.
Prosty przykład:
<!DOCTYPE html>
<html>
<head>
<style>
p {color: blue;}
DiV strong {color: red;}
</style>
</head>
<body>
<p>Akapit ma kolor niebieski.</p>
<div> Jakiś tekst wewnątrz DIV ma kolor czarny
<p>Akapit ma kolor niebieski, <strong>ale mocna emfaza ma już kolor czerwony</strong>, i znów akapit.</p>
Jakiś tekst wewnątrz DIV ma kolor czarny
</div>
<p>Akapit ma kolor niebieski.</p>
</body>
</html>
Selektory typu i przestrzenie nazw#
Selektory typu zezwalają na użycie opcjonalnego komponentu przestrzeni nazw; prefiks przestrzeni nazw, który został uprzednio zadeklarowany, może być umieszczony przed nazwą elementu, gdzie separatorem między prefiksem i nazwą jest "pionowa kreska" (U+007C, |
).
Komponent przestrzeni nazw może być pusty (bez prefiksu przed separatorem przestrzeni nazw), aby wskazać, że selektor reprezentuje jedynie elementy bez przestrzeni nazw.
Znak gwiazdki (U +002, *
) może być użyty dla prefiksu przestrzeni nazw, wskazując, że selektor reprezentuje elementy w dowolnej przestrzeni nazw (włącznie z elementami bez przestrzeni nazw).
Selektory typu, które nie mają komponentu przestrzeni nazw (nie zawierają separatora przestrzeni nazw) reprezentują elementy niezależnie od przestrzeni nazw (odpowiednik dla *|
), chyba że domyślna przestrzeń nazw dla selektorów została zadeklarowana (w arkuszy stylów CSS), i jeśli tak się stało, to takie selektory będą reprezentować jedynie elementy w domyślnej przestrzeni nazw.
W aplikacjach klienckich obsługujących przestrzenie nazw, część nazwy w selektorach typu (część po separatorze przestrzeni nazw, jeśli jest obecny) będzie pasowała tylko do części lokalnej w nazwie kwalifikowanej elementu.
Podsumowując:
- ns|E
Reprezentuje elementy z nazwą
E
w przestrzeni nazwns
.- *|E
Reprezentuje elementy z nazwą
E
w dowolnej przestrzeni nazw (włącznie z elementami bez przestrzeni nazw).- |E
Reprezentuje elementy z nazwą
E
nienależącą do żadnej przestrzeni nazw.- E
Jeśli domyślna przestrzeń nazw nie została określona, to jest równoważny z
*|E
. W przeciwnym razie oznaczans|E
, gdziens
jest domyślną przestrzenią nazw.
Selektor typu zawierający prefiks przestrzeni nazw, który nie został uprzednio zadeklarowany, jest nieprawidłowym selektorem.
Przykładowy kod CSS:
@namespace foo url(http://www.example.com);
foo|h1 { color: blue; } /* pierwsza reguła */
foo|* { color: yellow; } /* druga reguł */
|h1 { color: red; } /* ...*/
*|h1 { color: green; }
h1 { color: green; }
Powyższy przykład można omówić następująco:
- Łączymy prefiks
foo
z przestrzenią nazw"http://www.example.com"
. - Pierwsza reguła (pomijając dyrektywę
@namespace
) dopasuje jedynie elementyh1
w przestrzeni nazw"http://www.example.com"
. - Druga reguła dopasuje wszystkie elementy w przestrzeni nazw
"http://www.example.com"
. - Trzecia reguła dopasuje jedynie elementy
h1
nienależącą do żadnej przestrzeni nazw. - Czwarta reguła dopasuje elementy
h1
z dowolnej przestrzeni nazw (włącznie z elementami bez przestrzeni nazw). - Ostatnia reguła jest równoważna czwartej regule ponieważ żadna domyślna przestrzeń nazw nie została zadeklarowana.