W CSS *
dopasuje dowolny element.
Często *|*
stosuje się zamiast *
dopasowywać wszystkie elementy. Jest to zwykle używane do celów testowych.
Jaka jest różnica pomiędzy *
i *|*
w CSS?
css
css-selectors
namespaces
RockPaperLizard
źródło
źródło
*|*
oznacza w CSS?Odpowiedzi:
Zgodnie ze specyfikacją W3C Selector :
Więc nie
*
i*|*
nie zawsze są takie same. Jeśli zapewniona jest domyślna przestrzeń nazw, wówczas*
wybiera tylko elementy, które są częścią tej przestrzeni nazw.Różnice możesz wizualnie zobaczyć za pomocą dwóch poniższych fragmentów. W pierwszym zdefiniowana jest domyślna przestrzeń nazw, więc
*
selektor stosuje beżowe tło tylko do elementu, który jest częścią tego namsepace, podczas gdy*|*
stosuje granicę do wszystkich elementów.W poniżej urywek nie jest zdefiniowana domyślna przestrzeń nazw i tak obaj
*
i*|*
odnosi się do wszystkich elementów i tak wszyscy się zarówno beżowe tło i czarne obramowanie. Innymi słowy, działają one tak samo, gdy nie określono domyślnej przestrzeni nazw.Jak BoltClock wskazuje w komentarzach ( 1 , 2 ), początkowo przestrzenie nazw stosowane były tylko dla języków opartych na XML, takich jak XHTML, SVG itp., Ale zgodnie z najnowszą specyfikacją wszystkie elementy HTML (czyli elementy w przestrzeni nazw HTML) są rozmieszczane w przestrzeni nazw
http://www.w3.org/1999/xhtml
. Firefox stosuje to zachowanie i jest spójny we wszystkich aplikacjach klienckich HTML5. Więcej informacji można znaleźć w tej odpowiedzi .źródło
http://www.w3.org/1999/xhtml
*|*
reprezentuje selektor „wszystkich elementów w dowolnej przestrzeni nazw”. Według W3C selektor jest podzielony na:ns | E
Gdzie ns to przestrzeń nazw, a E to element. Domyślnie przestrzenie nazw nie są deklarowane. Więc jeśli przestrzeń nazw nie zostanie jawnie zadeklarowana
*|*
i*
wybierze te same elementy.źródło
W CSS * pasuje do dowolnego elementu.
| służy do dopasowania wybranych określonych elementów . Oba są selektorem używanym do naszych celów testowych
źródło