Przestrzenie nazw mają raczej paskudny składni w CSS, ponieważ „:” znaków nazw muszą być uciekł przez wiodącego backslashem do odróżnienia go od pseudo-klasy:
html\:img {
border: 2px solid black;
}
html\:a:visited html\:img {
border-color: grey;
}
to tylko naprawdę użyteczne podczas osadzania HTML w dokumencie XML. Podczas dodawania przestrzeni nazw HTML elementy z przestrzeni nazw HTML są poprawnie wyświetlane, tak jak pojawiałyby się w HTML, pozwalały na dostęp do funkcji, które nie zostały jeszcze dostarczone przez CSS.
<story xmlns:HTML="http://www.w3.org/Profiles/XHTML-transitional">
...
<restaurant>
<name>Red Apple Inn</name>
<logo>
<HTML:A href="javascript:alert('Visit the Red Apple Inn!')">
<HTML:IMG src="red-apple.gif" height="50" width="200"/>
</HTML:A>
</logo>
...
W kontekście HTML5 nie mogę wymyślić żadnych przypadków, w których będzie to potrzebne. Jedyne miejsce, w którym dotychczas widziałem przestrzenie nazw w CSS, to domyślny CSS Webkita dla SVG lub MathML i używają innej reguły: @namespace
.
Na przykład, jest to kod z WebKit/webkit/blob/master/Source/WebCore/css/mathml.css:
@namespace "http://www.w3.org/1998/Math/MathML";
math {
-webkit-line-box-contain: glyphs replaced;
text-indent: 0;
direction: ltr;
}
mtext {
line-height: 1.0;
}
...
Jest to kod z WebKit/webkit/blob/master/Source/WebCore/css/svg.css:
@namespace "http://www.w3.org/2000/svg";
@namespace html "http://www.w3.org/1999/xhtml";
svg:not(:root), symbol, image, marker, pattern, foreignObject {
overflow: hidden
}
svg:root {
width: 100%;
height: 100%
}
text, foreignObject {
display: block
}
...
ja nawet nie zobaczyć go na [Kiedy mogę używać?] (Http: //caniuse.com/) i nie sądzę, żeby jakakolwiek przeglądarka choć częściowo ją wspierała ... –
@DominicBarnes - Jest w statusie Rekomendacji, co oznacza, że muszą istnieć co najmniej dwie niezależne implementacje tej przeglądarki. – Quentin
@ Dominic Barnes: Właściwie każda nowoczesna przeglądarka obsługuje to, w tym IE9 +. Ostatnio odpowiedziałem na pytanie dotyczące przestrzeni nazw CSS, które zawiera kod, którego można użyć do sprawdzenia, czy działa: http: // stackoverflow.com/questions/9490155/trouble-getting-declaration-namespaces-to-work/9491691 # 9491691 Głównym powodem, dla którego podejrzewam, że przestrzenie nazw CSS nie pojawiają się w tej witrynie, jest fakt, że w dzisiejszym Branża internetowa, ponieważ HTML5 jest teraz fajną nowością, która w żaden sposób nie wykorzystuje przestrzeni nazw. – BoltClock