Selektory atrybutów pozwalają na odnoszenie się do elementów według wartości ich konkretnych atrybutów. Można więc skonstruować selektor, który będzie się odnosił do dowolnych elementów w Twoim HTML-u, pod warunkiem, że mają określoną (na przykład) klasę.
Istnieje sześć typów takich selektorów:
- [att=value] Atrybut musi mieć dokładnie określoną wartość.
- [att~=value] Wartość atrybutu musi być dokładnie taka jak określona, przy czym może on być jednym z wielu, oddzielonych spacjami. Przykład: [class~=sidebar] będzie pasowało do <div class=”sidebar highlight”>.
- [att|=value] Wartość atrybutu to dokładnie “value” lub też zaczyna się od “value”, a zaraz po nim następuje myślnik.
- [att^=value] Wartość atrybutu zaczyna się od “value”.
- [att$=value] Wartośc atrybutu kończy się na “value”.
- [att*=value] Wartośc atrybutu zawiera “value”.
Na przykład, gdy chcesz zmienić kolor tła wszystkich elementów, których klasa zawiera “post”, użyj poniższego kodu:
| div[class*="post"] { background-color: #333; } |
Zastosowanie selektorów atrybutów ułatwia także dodawanie różnych ikon obok linków do plików różnych typów.
| a[href$=".jpg"] { background: url(jpeg.gif) no-repeat left 50%; padding: 2px 0 2px 20px; } a[href$=".pdf"] { background: url(pdf.gif) no-repeat left 50%; padding: 2px 0 2px 20px; } a[href$=".doc"] { background: url(word.gif) no-repeat left 50%; padding: 2px 0 2px 20px; } |
W powyższym przykładzie zastosowano selektory atrybutów – te odnoszą się do linków, których atrybuty href kończą się na .jpg, .pdf oraz .doc.
Obsługa przez przeglądarki
Selektory atrybutów są obsługiwane przez wszystkie nowe przeglądarki, oprócz nadal popularnego Internet Explorer 6. Jeśli w swoich CSS-ach stosujesz wyżej wspomniane selektory, pamiętaj, aby dla użytkowników IE6 zapewnić funkcjonalną wersję strony. Wersja dla IE6 nie musi być identyczna (jeśli tylko nie jest to wymagane) z tymi przeznaczonymi dla pozostałych przeglądarek – jeśli chcesz zastosować selektory atrybutów do mało ważnych elementów, które tylko „dodają uroku”, nie przejmuj się IE6 i zrób to.
Ładowanie





Browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)
dAREuS
Browser: Opera/9.80 (Windows NT 6.0; U; pl) Presto/2.2.15 Version/10.00
Browser: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1) Gecko/20090805 Firefox/3.5.2
Pozdrawiam
Browser: Opera/9.80 (Windows NT 5.1; U; pl) Presto/2.2.15 Version/10.00
Browser: Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)
Browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 FirePHP/0.3
dobra robota!
Browser: Opera/9.80 (Windows NT 5.1; U; pl) Presto/2.2.15 Version/10.00
Oczywiście, jak zwykle wszystkie nowoczesne przeglądarki oprócz IE obsługują powyższe pseudoklasy."
Browser: Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.1.2) Gecko/20090820 Iceweasel/3.5.3 (Debian-3.5.3-1)
Odnośnie specyficzności. Klasy i pseudoklasy mają tą samą hierarchię. Tak twierdzą inne źródła i firebug.
Browser: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.2 Safari/533.2