Что можно делать с namespace'ами?
Беру пример с mdn - он работает:
@namespace svg url("http://www.w3.org/2000/svg");
a {
color: red;
}
svg|a {
fill: green;
}
<p>
<a href="#">This is an ordinary HTML link</a>
</p>
<svg width="250px" viewBox="0 0 250 20" xmlns="http://www.w3.org/2000/svg">
<a href="#">
<text x="0" y="15">This is a link created in SVG</text>
</a>
</svg>
Причём работает даже если из него выкинуть xmlns:
@namespace svg url("http://www.w3.org/2000/svg");
a {
color: red;
}
svg|a {
fill: green;
}
<p>
<a href="#">This is an ordinary HTML link</a>
</p>
<svg width="250px" viewBox="0 0 250 20">
<a href="#">
<text x="0" y="15">This is a link created in SVG</text>
</a>
</svg>
Пытаюсь поместить тот же селектор svg|a в document.querySelectorAll - ошибка, хотя *|* он понимает:
Uncaught SyntaxError: Failed to execute 'querySelectorAll' on 'Document': 'svg|a' is not a valid selector.
console.log(document.querySelectorAll("*|*").length)
console.log(document.querySelectorAll("svg|a").length)
@namespace svg url("http://www.w3.org/2000/svg");
a {
color: red;
}
svg|a {
fill: green;
}
<p>
<a href="#">This is an ordinary HTML link</a>
</p>
<svg width="250px" viewBox="0 0 250 20" xmlns="http://www.w3.org/2000/svg">
<a href="#">
<text x="0" y="15">This is a link created in SVG</text>
</a>
</svg>
Пытаюсь создать свой namespace - не работает даже css, даже если xmlns тегу прописать:
@namespace smth url("http://example.com/smth");
smth|qqq {
color: red;
}
<p>
<smth:qqq>Smth</smth:qqq>
</p>
<p>
<smth:qqq xmlns="http://example.com/smth">Smth</smth:qqq>
</p>
Пытаюсь создать селектор через devtools хрома - он пишет smth:qqq, что, естественно, не работает (и вообще селектор исчезает при потере фокуса полем ввода селектора):
Как будто namespace'ы вообще нельзя использовать ни для чего кроме стилей для svg? Или я что-то не так делаю? Или они нормально работают только в xhtml, но не в html?
Смотрю в 64-битных Google Chrome 142.0.7444.176 и Firefox 145.0.2 на Win11.
