Spec-Zone.ru › CSS

Правило @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

См. также

  • Краткое введение в пространства имён
  • Функции CSS at-правил

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API