Spec-Zone.ru › CSS

Псевдокласс CSS `:host`

Базовая поддержка Широко доступно

Эта функция хорошо зарекомендовала себя и работает на множестве устройств и в разных версиях браузеров. Она доступна во всех браузерах с января 2020 года.

:host CSS псевдокласс выбирает хост теневого DOM, содержащего CSS, внутри которого он используется, — другими словами, он позволяет выбрать пользовательский элемент изнутри его теневого DOM.

Примечание: При использовании за пределами теневого DOM этот псевдокласс не оказывает никакого эффекта.

Попробуйте

/* This CSS is being applied inside the shadow DOM. */

:host {
  background-color: aqua;
}
<h1 id="shadow-dom-host"></h1>
const shadowDom = init();

// add a <span> element in the shadow DOM
const span = document.createElement("span");
span.textContent = "Inside shadow DOM";
shadowDom.appendChild(span);

// attach shadow DOM to the #shadow-dom-host element
function init() {
  const host = document.getElementById("shadow-dom-host");
  const shadowDom = host.attachShadow({ mode: "open" });

  const cssTab = document.querySelector("#css-output");
  const shadowStyle = document.createElement("style");
  shadowStyle.textContent = cssTab.textContent;
  shadowDom.appendChild(shadowStyle);

  cssTab.addEventListener("change", () => {
    shadowStyle.textContent = cssTab.textContent;
  });
  return shadowDom;
}
/* Selects a shadow root host */
:host {
  font-weight: bold;
}

Синтаксис

:host {
  /* ... */
}

Примеры

Стилизация хоста теневого DOM

Следующие фрагменты взяты из нашего примера с селекторами хоста (также посмотрите его в действии).

В этом примере у нас есть простой пользовательский элемент — <context-span>, который можно использовать для обрамления текста:

<h1>
  Host selectors <a href="#"><context-span>example</context-span></a>
</h1>

В конструкторе элемента мы создаём style и span элементы, заполняем span содержимым пользовательского элемента, а style — несколькими правилами CSS:

const style = document.createElement("style");
const span = document.createElement("span");
span.textContent = this.textContent;

const shadowRoot = this.attachShadow({ mode: "open" });
shadowRoot.appendChild(style);
shadowRoot.appendChild(span);

style.textContent =
  "span:hover { text-decoration: underline; }" +
  ":host-context(h1) { font-style: italic; }" +
  ':host-context(h1)::after { content: " - no links in headers!" }' +
  ":host-context(article, aside) { color: gray; }" +
  ":host(.footer) { color : red; }" +
  ":host { background: rgb(0 0 0 / 10%); padding: 2px 5px; }";

Правило :host { background: rgb(0 0 0 / 10%); padding: 2px 5px; } задаёт стили всем экземплярам элемента <context-span> (в данном случае — хоста теневого DOM) в документе.

Спецификации

Спецификация
Модуль CSS Shadow, уровень 1
# host-selector

Совместимость с браузерами

Настольные компьютеры Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome для Android Firefox для Android Opera для Android Safari для iOS Samsung Internet WebView для Android WebView для iOS
host
54
79
63
41
10
54
63
41
10
6.0
54
10

См. также

  • Веб-компоненты
  • :host
  • :host-context()
  • ::slotted()
  • :state()
  • Области видимости CSS модуль

© 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/Selectors/:host

Spec-Zone.ru

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