aboutsummaryrefslogtreecommitdiff
path: root/files/fr/web/css/_colon_host_function/index.md
diff options
context:
space:
mode:
Diffstat (limited to 'files/fr/web/css/_colon_host_function/index.md')
-rw-r--r--files/fr/web/css/_colon_host_function/index.md76
1 files changed, 76 insertions, 0 deletions
diff --git a/files/fr/web/css/_colon_host_function/index.md b/files/fr/web/css/_colon_host_function/index.md
new file mode 100644
index 0000000000..14589f8e50
--- /dev/null
+++ b/files/fr/web/css/_colon_host_function/index.md
@@ -0,0 +1,76 @@
+---
+title: ':host()'
+slug: Web/CSS/:host_function
+tags:
+ - CSS
+ - Pseudo-classe
+ - Reference
+translation_of: Web/CSS/:host()
+original_slug: Web/CSS/:host()
+---
+{{CSSRef}}
+
+La fonction de [pseudo-classe](/fr/docs/Web/CSS/Pseudo-classes) **`:host()`** permet de sélectionner l'hôte du _shadow DOM_ contenant le CSS à utiliser, uniquement si le sélecteur passé en argument correspond à l'élément hôte.
+
+Le scénario principal pour utiliser cette fonction consiste à vouloir cibler une certaine classe d'éléments personnalisés : pour cela, on passera la classe comme argument de la fonction `:host()`. Cette fonction ne peut pas être utilisée avec un sélecteur de descendant, pour cela il faudra utiliser {{cssxref(":host-context()")}}.
+
+> **Note :** Cette fonction n'a aucun effet si elle est utilisée en dehors d'un _shadow DOM_.
+
+```css
+/* On cible l'hôte du shadow DOM uniquement s'il
+ correspond au sélecteur passé en argument */
+:host(.special-custom-element) {
+ font-weight: bold;
+}
+```
+
+## Syntaxe
+
+{{csssyntax}}
+
+## Exemples
+
+Les fragments de code suivants sont extraits du dépôt d'exemple [_host-selectors_](https://github.com/mdn/web-components-examples/tree/master/host-selectors) ([voir le résultat en direct](https://mdn.github.io/web-components-examples/host-selectors/)).
+
+Dans cet exemple, on dispose d'un élément personnalisé, `<context-span>`, qui peut contenir du texte :
+
+```html
+<h1>Host selectors <a href="#"><context-span>example</context-span></a></h1>
+```
+
+Dans le constructeur de l'élément, on crée un élément `style` et un élément `span`. Ce dernier recevra le contenu textuel de l'élément personnalisé et l'élément `style` recevra quelques règles CSS :
+
+```js
+let style = document.createElement('style');
+let 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: rgba(0,0,0,0.1); padding: 2px 5px; }';
+```
+
+La règle `:host(.footer) { color : red; }` s'applique à toutes les instances de l'élément `<context-span>` (il s'agit ici de l'hôte) du document qui possèdent la classe `footer`. Ici, pour ces éléments donnés, on utilise une couleur spécifique.
+
+## Spécifications
+
+| Spécification | État | Commentaires |
+| ------------------------------------------------------------------------ | ---------------------------- | -------------------- |
+| {{SpecName('CSS Scope', '#host-selector', ':host()')}} | {{Spec2('CSS Scope')}} | Définition initiale. |
+
+## Compatibilité des navigateurs
+
+{{Compat("css.selectors.hostfunction")}}
+
+## Voir aussi
+
+- [Les composants web](/fr/docs/Web/Web_Components)
+- {{cssxref(":host")}}
+- {{cssxref(":host-context()")}}