Table des matières
Avantages de l'emballage Shadow Dom
Nommer les conflits
Styles de base et réinitialisation CSS
Style Shadow Dom avec :: Part ()
Maison interface Web tutoriel CSS Styling dans l'ombre Dom avec des pièces d'ombre CSS 

Styling dans l'ombre Dom avec des pièces d'ombre CSS 

Apr 07, 2025 am 09:26 AM

Styling dans l'ombre Dom avec des pièces d'ombre CSS

Safari 13.1 a introduit le support pour les pièces d'ombre CSS, ce qui signifie que le sélecteur ::part() est maintenant pris en charge par Chrome, Edge, Opera, Safari et Firefox. Cet article explorera ses utilisations et examinera d'abord les fonctionnalités d'emballage de Shadow Dom.

Avantages de l'emballage Shadow Dom

Chez Giffgaff, nous avons une grande quantité de code CSS écrit par différentes personnes de différentes manières. Voyons quels problèmes cela peut apporter.

Nommer les conflits

Les conflits de nom de classe sont enclins à se produire dans CSS. Un développeur peut créer un nom de classe appelé .price . Un autre développeur (et peut-être même la même personne) peut utiliser le même nom de classe sans le savoir.

CSS ne provoquera aucune erreur. Maintenant, tout élément HTML avec cette classe recevra des styles pour deux choses complètement différentes.

Shadow Dom résout ce problème. Les bibliothèques CSS-in-JS comme Emotion et Styled-Components résolvent également ce problème de différentes manières en générant des noms de classe aléatoires tels que .bwzfXH . Cela aide certainement à éviter les conflits! Cependant, CSS-in-JS n'empêche personne de briser vos composants d'autres manières. Par exemple……

Styles de base et réinitialisation CSS

Les sélecteurs d'éléments HTML peuvent être utilisés (par exemple<button></button> et<div> ) Appliquer des styles. Ces styles peuvent briser le composant. Shadow Dom est le seul mécanisme qui fournit (presque) complètement encapsulé, vous pouvez être assuré que vos composants seront cohérents même dans une base de code importante <code>!important , car chaque composant est encapsulé.

 / * Cela n'affectera pas les boutons à l'intérieur de l'ombre Dom * /
Bouton {fond de fond: Lime! IMPORTANT; }
Copier après la connexion

Je ne pense pas que ce soit une bonne pratique de styliser l'élément de cette façon, mais cela arrive. Même si cela se produit, ces styles n'affectent pas l'ombre DOM.

Il convient de noter que des styles héritables comme la couleur, la police et la hauteur de ligne sont toujours hérités dans Shadow Dom. Pour éviter cela, utilisez all: initial ou de préférence all: revert après mieux que le navigateur prend en charge.

Examinons un exemple commun de CSS appliqué directement aux éléments HTML. Considérez le code de réinitialisation d'Eric Meyer:

 html, corps, div, span, applet, objet, iframe,
H1, H2, H3, H4, H5, H6, P, Blockquote, pré,
ABBR, acronyme, adresse, gros, cite, code,
Del, DFN, EM, IMG, INS, KBD, Q, S, SAMP,
petite grève forte sub sup tt var
b, u, i, centre,
DL, DT, DD, OL, UL, LI,
champ, forme, étiquette, légende,
table, légende, tbody, tfoot, thead, tr, th, td,
Article, mis à part, toile, détails, intégrés,
Figure, Figcaption, pied de page, en-tête, hgroup,
menu, navigation, sortie, rubis, section, résumé,
Temps, Mark, audio, vidéo {
  marge: 0;
  rembourrage: 0;
  bordure: 0;
  taille de police: 100%;
  Police: Héritage;
  Adigne vertical: ligne de base;
}
Copier après la connexion

Que se passe-t-il si le composant que nous utilisons utilise les marges par défaut et les valeurs de rembourrage pour l'agent utilisateur? Cette réinitialisation peut le faire paraître corrompu, car ces valeurs par défaut sont réellement effacées.

Shadow Dom est un moyen d'éviter ces problèmes. Shadow Dom nous permet d'être pleinement convaincus que le composant sera rendu comme prévu, quelle que soit la base de code dans laquelle il se termine. Shadow Dom fournit un niveau d'encapsulation qui ne peut pas être atteint d'autres manières.

L'emballage est génial, mais nous voulons également que nos composants soient sur le thème et personnalisables. ::part facilite beaucoup.

Style Shadow Dom avec :: Part ()

Jusqu'à présent, la seule façon dont CSS peut modifier les styles d'éléments personnalisés à partir de Shadow Dom extérieur est d'utiliser les propriétés personnalisées CSS. Dans un système de conception strict, vous voulez seulement autoriser des changements limités, ce qui peut être idéal. Si vous voulez que votre composant soit plus général, il peut créer des problèmes. Vous devez utiliser des propriétés personnalisées pour définir chaque attribut CSS que vous souhaitez fournir pour le style. Cela semble très compliqué.

Si nous voulons styliser des composants de différentes manières basées sur des pseudo-classes (telles que :hover ), la situation sera encore compliquée. Fondamentalement, nous nous retrouvons avec beaucoup de propriétés personnalisées. Regardons un exemple d'Ionic (un ensemble de composants Web open source). Jetez un œil à toutes les propriétés personnalisées définies sur le composant du bouton ionique.

N'hésitez pas à le vérifier.

J'ai compté 23 propriétés personnalisées. Inutile de dire que c'est loin d'être idéal.

Voici un exemple d'utilisation de ::part() pour styliser des éléments.

Dans cet exemple, je viens de changer les propriétés de couleur, de bordure et d'arrière-plan, mais je peux utiliser n'importe quelle propriété que je veux sans être limitée par les propriétés personnalisées qui ont été définies. Notez que je peux également utiliser des pseudo-classes telles que :hover et :focus pour styliser les différents états du composant.

Dans cet exemple de bouton, l'ensemble du composant est exposé pour le paramètre de style, mais si votre composant Web contient plusieurs éléments HTML, vous pouvez exposer uniquement les parties sélectionnées du composant à ce paramètre de style - d'où la ::part . Cela empêche l'utilisateur du composant de styliser les éléments arbitraires de l'arborescence de l'ombre. Les auteurs de composants sont chargés de révéler les composants qu'ils souhaitent explicitement divulguer. D'autres parties du composant peuvent maintenir la cohérence visuelle ou utiliser des propriétés personnalisées pour obtenir moins de personnalisation.

Alors, comment pouvons-nous définir cela pour nos composants? Voyons comment utiliser ::part pour faire certains éléments d'un style de composant Web. Tout ce que nous faisons est d'ajouter une propriété part à l'élément que nous voulons exposer.

<div part="box"> ...</div>
<button>Cliquez sur moi</button>
Copier après la connexion

Dans cet exemple, div peut être personnalisé à l'aide de la portée CSS complète - tous les attributs CSS peuvent être modifiés. Mais le bouton est verrouillé - personne ne peut changer ses effets visuels à l'exception de l'auteur du composant.

Tout comme les éléments HTML peuvent avoir plusieurs noms de classe, un élément peut également avoir plusieurs noms part :

<div part="box thing"> ...</div>
Copier après la connexion

C'est ce que nous obtenons avec ::part : En exposant la "partie" de l'élément, nous pouvons offrir une certaine flexibilité sur la façon d'utiliser des composants Web tout en les protégeant dans d'autres domaines. Qu'il s'agisse de votre système de conception, de votre bibliothèque de composants ou de quoi que ce soit d'autre, le fait que CSS Shadow Parts devienne grand public nous fournit un autre outil passionnant.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel Java
1653
14
Tutoriel PHP
1251
29
Tutoriel C#
1224
24
Cartes empilées avec un positionnement collant et une pincée de sass Cartes empilées avec un positionnement collant et une pincée de sass Apr 03, 2025 am 10:30 AM

L'autre jour, j'ai repéré ce morceau particulièrement charmant sur le site Web de Corey Ginnivan où une collection de cartes se cassent les uns sur les autres pendant que vous faites défiler.

Fontes variables de polices Google Fontes variables de polices Google Apr 09, 2025 am 10:42 AM

Je vois que Google Fonts a déployé un nouveau design (tweet). Comparé à la dernière grande refonte, cela semble beaucoup plus itératif. Je peux à peine faire la différence

Comment créer un compte à rebours animé avec HTML, CSS et JavaScript Comment créer un compte à rebours animé avec HTML, CSS et JavaScript Apr 11, 2025 am 11:29 AM

Avez-vous déjà eu besoin d'un compte à rebours sur un projet? Pour quelque chose comme ça, il pourrait être naturel d'atteindre un plugin, mais c'est en fait beaucoup plus

Guide des attributs de données HTML Guide des attributs de données HTML Apr 11, 2025 am 11:50 AM

Tout ce que vous avez toujours voulu savoir sur les attributs de données dans HTML, CSS et JavaScript.

Pourquoi les zones réduites pourpre dans la disposition Flex sont-elles considérées à tort «espace de débordement»? Pourquoi les zones réduites pourpre dans la disposition Flex sont-elles considérées à tort «espace de débordement»? Apr 05, 2025 pm 05:51 PM

Questions sur les zones de slash violet dans les dispositions flexibles Lorsque vous utilisez des dispositions flexibles, vous pouvez rencontrer des phénomènes déroutants, comme dans les outils du développeur (D ...

Comment sélectionner un élément enfant avec l'élément de nom de première classe via CSS? Comment sélectionner un élément enfant avec l'élément de nom de première classe via CSS? Apr 05, 2025 pm 11:24 PM

Lorsque le nombre d'éléments n'est pas fixé, comment sélectionner le premier élément enfant du nom de classe spécifié via CSS. Lors du traitement de la structure HTML, vous rencontrez souvent différents éléments ...

Une preuve de concept pour rendre Sass plus rapidement Une preuve de concept pour rendre Sass plus rapidement Apr 16, 2025 am 10:38 AM

Au début d'un nouveau projet, la compilation SASS se produit en un clin d'œil. Cela se sent bien, surtout quand il est associé à BrowSersync, qui recharge

See all articles