Stimmt in CSS *
mit jedem Element überein.
Wird häufig *|*
verwendet, anstatt *
alle Elemente abzugleichen. Dies wird im Allgemeinen zu Testzwecken verwendet.
Was ist der Unterschied zwischen *
und *|*
in CSS?
Stimmt in CSS *
mit jedem Element überein.
Wird häufig *|*
verwendet, anstatt *
alle Elemente abzugleichen. Dies wird im Allgemeinen zu Testzwecken verwendet.
Was ist der Unterschied zwischen *
und *|*
in CSS?
Antworten:
Gemäß W3C-Auswahlspezifikation :
Der universelle Selektor ermöglicht eine optionale Namespace-Komponente. Es wird wie folgt verwendet:
ns|*
alle Elemente im Namespace ns
*|*
alle Elemente
|*
Alle Elemente ohne Namespace
*
Wenn kein Standard-Namespace angegeben wurde, entspricht dies * | *. Andernfalls entspricht es ns | *, wobei ns der Standardnamespace ist.
Also nein *
und *|*
sind nicht immer gleich. Wenn ein Standard-Namensraum bereitgestellt *
wird, werden nur Elemente ausgewählt, die Teil dieses Namespace sind.
Sie können die Unterschiede anhand der folgenden beiden Ausschnitte visuell erkennen. Im ersten wird ein Standard-Namespace definiert, und der *
Selektor wendet den beigefarbenen Hintergrund nur auf das Element an, das Teil dieses Namespace ist, während *|*
der Rand auf alle Elemente angewendet wird .
@namespace "http://www.w3.org/2000/svg";
* {
background: beige;
}
*|* {
border: 1px solid;
}
<a href="#">This is some link</a>
<svg xmlns="http://www.w3.org/2000/svg">
<a xlink:href="#">
<text x="20" y="20">This is some link</text>
</a>
</svg>
Im folgenden Snippet ist kein Standard-Namespace definiert und somit beides *
und *|*
gilt für alle Elemente, sodass alle sowohl den beigen Hintergrund als auch den schwarzen Rand erhalten. Mit anderen Worten, sie funktionieren genauso, wenn kein Standard-Namespace angegeben ist.
* {
background: beige;
}
*|* {
border: 1px solid;
}
<a href="#">This is some link</a>
<svg xmlns="http://www.w3.org/2000/svg">
<a xlink:href="#">
<text x="20" y="20">This is some link</text>
</a>
</svg>
Wie BoltClock in Kommentaren hervorhebt ( 1 , 2 ) , werden Namespaces zunächst nur auf XML-basierte Sprachen wie XHTML, SVG usw. angewendet. neuesten Spezifikationen werden jedoch alle HTML-Elemente (dh Elemente im HTML-Namespace) mit Namespaces versehen http://www.w3.org/1999/xhtml
. Firefox folgt diesem Verhalten und ist für alle HTML5-Benutzeragenten konsistent. Weitere Informationen finden Sie in dieser Antwort .
http://www.w3.org/1999/xhtml
*|*
repräsentiert den Selektor von "allen Elementen in einem beliebigen Namespace". Laut W3C ist der Selektor unterteilt in:
ns | E.
Dabei ist ns der Namespace und E das Element. Standardmäßig werden keine Namespaces deklariert. Es sei denn, ein Namespace wird explizit deklariert *|*
und *
wählt dieselben Elemente aus.
In CSS stimmt * mit jedem Element überein.
| wird verwendet, um ausgewählte bestimmte Elemente abzugleichen . Beide sind Selektoren, die für unsere Testzwecke verwendet werden
*|*
bedeutet in CSS?