Правило @namespace CSS
Baseline Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в разных версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
@namespace — это at-правило, которое определяет XML-пространства имён для использования в CSS-таблице стилей.
Попробуйте
@namespace svg url("http://www.w3.org/2000/svg");
a {
color: orangered;
text-decoration: underline dashed;
font-weight: bold;
}
svg|a {
fill: blueviolet;
text-decoration: underline solid;
text-transform: uppercase;
}
<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>
Синтаксис
/* Default namespace */
@namespace url("XML-namespace-URL");
@namespace "XML-namespace-URL";
/* Prefixed namespace */
@namespace prefix url("XML-namespace-URL");
@namespace prefix "XML-namespace-URL";
Описание
Определённые пространства имён можно использовать, чтобы ограничить универсальные, типовые и атрибутные селекторы, чтобы они выбирали только элементы в соответствующем пространстве имён. Правило @namespace обычно полезно только при работе с документами, содержащими несколько пространств имён, например с HTML, включающим встроенные SVG или MathML, либо с XML, объединяющим несколько словарей.
Все правила @namespace должны следовать за правилами @charset и @import и предшествовать всем остальным at-правилам и объявлениям стилей в таблице стилей.
@namespace можно использовать для определения пространства имён по умолчанию для таблицы стилей. Если пространство имён по умолчанию определено, все универсальные и типовые селекторы (но не атрибутные селекторы — см. примечание ниже) применяются только к элементам в этом пространстве имён.
Правило @namespace также можно использовать для определения префикса пространства имён. Если перед универсальным, типовым или атрибутным селектором указан префикс пространства имён, этот селектор соответствует элементу или атрибуту, только если совпадают и пространство имён, и имя.
В HTML известным сторонним элементам пространства имён назначаются автоматически. Это означает, что HTML-элементы ведут себя так, будто находятся в пространстве имён XHTML (http://www.w3.org/1999/xhtml), даже если в документе нигде нет атрибута xmlns, а элементам <svg> и <math> назначаются соответствующие им пространства имён (http://www.w3.org/2000/svg и http://www.w3.org/1998/Math/MathML соответственно).
Примечание: В XML, если префикс не определён непосредственно для атрибута (например, xlink:href), у этого атрибута нет пространства имён. Иными словами, атрибуты не наследуют пространство имён элемента, которому они принадлежат. Чтобы соответствовать этому поведению, пространство имён CSS по умолчанию не применяется к атрибутным селекторам.
Формальный синтаксис
Примеры
Указание пространства имён по умолчанию и пространств имён с префиксами
@namespace url("http://www.w3.org/1999/xhtml");
@namespace svg url("http://www.w3.org/2000/svg");
/* This matches all XHTML <a> elements, as XHTML is the default unprefixed namespace */
a {
}
/* This matches all SVG <a> elements */
svg|a {
}
/* This matches both XHTML and SVG <a> elements */
*|a {
}
Спецификации
| Спецификация |
|---|
| Модуль пространств имён CSS, уровень 3 # declaration |
Совместимость с браузерами
| Компьютеры | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari для iOS | Samsung Internet | WebView для Android | WebView для iOS | |
namespace |
1 |
12 |
1 |
8 |
1 |
18 |
4 |
14 |
1 |
1.0 |
37 |
1 |
См. также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/At-rules/@namespace