Cet article ne concerne pas la fa?on de créer des composants Web, Caleb Williams a récemment écrit un guide détaillé. Discutons de la fa?on de les utiliser, quels facteurs doivent être pris en compte lors de la construction et comment les utiliser efficacement dans votre projet.
Si vous êtes nouveau dans les composants Web, le guide de Caleb vaut la peine d'être lu, mais voici quelques ressources qui peuvent vous aider à démarrer rapidement:
- Composants Web - l'approche "correcte"
- Shadow Dom v1: composants Web autonomes
- Composants Web sur MDN
- Composants Web impressionnants
- Composants Web ouverts recommandés
Avec les composants Web, désormais largement pris en charge (grace au travail acharné de beaucoup de coulisses) et considérant que Edge passera bient?t à la plate-forme de chrome - les gens voient désormais les composants Web comme un moyen ?natif? et compatible avec la plate-forme de créer des composants d'interface utilisateur réutilisables pour maintenir la cohérence entre les systèmes de conception et les projets Web lui-même.
C'est à la fois bien et mal. Mais d'abord, jetons un coup d'?il au triangle de calque abstrait .
Triangle de couche abstraite
Techniquement, nous devons considérer les composants Web comme une extension de notre langage de balisage préféré HTML (oui!). L'API du composant Web nous permet de créer des éléments HTML personnalisés qui n'existent pas dans HTML (par exemple<foo-bar></foo-bar>
).
Certains disent que les composants Web sont essentiellement de nouveaux éléments HTML, nous devons donc les considérer comme faisant partie de la spécification HTML, nous devons donc suivre son paradigme, ses concepts de base et son utilisation. Si nous supposons tous ces points, nous constatons que nos composants existeront au niveau le plus bas de la pile de plate-forme Web, c?te à c?te avec HTML, CSS et JavaScript. Des cadres et des bibliothèques (tels que React, Vue, Angular, Sveltejs) fonctionnent sur leur couche d'abstraction et s'asseyent au-dessus d'autres outils qui sont dans une sorte de "terre du milieu" tels que les stickjs, les hybrides et éclairés. Sous ces couches d'abstraction, nous pouvons trouver nos technologies Web de base… et les composants Web natifs. Nous pouvons utiliser le diagramme alt ( abstraction la ayer t riangle) pour représenter ce concept:
Pourquoi est-ce important? Il nous aide à visualiser les couches qui existent au-dessus des composants indigènes et à comprendre leur environnement d'utilisation afin qu'ils puissent être construits dans l'environnement prévu. Qu'est-ce que l'environnement? C'est notre objectif.
Même technologie, différents environnements
Shadow Dom est un facteur clé de l'API du composant Web. Il nous permet de regrouper JavaScript et CSS en éléments personnalisés pour empêcher les opérations d'interférence et de style externes, sauf si nous le permettons explicitement. Les développeurs peuvent en effet suivre certains moyens pour permettre aux CSS externes de fuir dans des racines et des composants de l'ombre, y compris les propriétés personnalisées ainsi que :: Part et :: pseudo-éléments du thème, que Monica Dinculescu a une bonne introduction.
Une autre chose à considérer: l'environnement que nous utilisons. Trois ans après avoir personnellement construit mes composants Web, je peux identifier deux environnements: des environnements privés (tels que des systèmes de conception) et des environnements standard (tels que HTML, CSS et JavaScript simples sans styles personnalisés).
Avant de concevoir des composants, nous devons comprendre comment ils seront utilisés, donc la détermination du type d'environnement est la clé de tout cela. Le moyen le plus simple est de cibler un seul environnement, mais avec une petite astuce CSS, nous pouvons construire des composants pour les deux .
Avant de creuser plus profondément, regardons la différence entre les deux environnements.
Environnement privé
Un environnement privé est un écosystème fermé qui fournit des composants avec leurs propres styles et doit être utilisé tel quel. Donc, si nous construisons une bibliothèque de composants à partir d'un guide de style ou d'un système de conception spécifique, chaque composant reflétera un style personnalisé, il n'est donc pas nécessaire de le coder chaque fois que vous en avez besoin.
Il en va de même pour la logique JavaScript. Par exemple, nous pouvons attacher une racine d'ombre fermée pour empêcher les autres de percer accidentellement la limite de l'ombre avec QuerySelector. Par conséquent, nous pouvons simplement sélectionner et utiliser n'importe quel composant pour éviter des problèmes tels que l'incohérence dans les styles et les conflits CSS. En tant qu'auteur, vous pouvez également définir un ensemble de propriétés personnalisées CSS (ou :: parties) qui peuvent être utilisées pour styliser des composants pour un cas d'utilisation spécifique, mais ce n'est pas au centre de la conception du système.
Ceci est un exemple d'utilisation des composants Web dans un environnement privé. Tous ses styles et sa logique sont contenus dans sa racine d'ombre et peuvent être simplement ajoutés à n'importe quelle page.
Cet exemples et ultérieurs sont à des fins de démonstration uniquement et ne sont pas destinés aux environnements de production, car ils ne prennent pas en compte des situations critiques telles que l'accessibilité et d'autres optimisations.
Les composants dans des environnements privés sont rarement utilisés en dehors de cet environnement. Par exemple, si nous essayons d'obtenir un élément d'un système de conception (avec son propre style forcé), nous ne pouvons pas simplement l'ajouter au projet et nous attendre à le personnaliser. Savez-vous comment Bootstrap peut configurer et personnaliser le thème en fonction de vos préférences? C'est exactement le contraire. Ces composants sont destinés à fonctionner dans leur environnement et uniquement dans leur environnement.
Environnement standard
Les environnements standard sont probablement le type de composant le plus complexe, non seulement parce que les environnements peuvent aller des cadres matures tels que Vue et réagir à un HTML natif ordinaire, mais parce que tout le monde devrait être en mesure d'utiliser ce composant comme s'il s'agissait d'un autre élément.
Par exemple, lorsqu'un composant est ajouté publiquement (comme l'ajout de NPM), ceux qui l'utilisent s'attendront à pouvoir le personnaliser, au moins dans une certaine mesure.
Connaissez-vous des éléments HTML avec leur propre style de démonstration? La réponse doit être ?non?, car les éléments doivent être stylés explicitement à l'aide de CSS. Il en va de même pour les composants Web fabriqués dans un environnement standard. Un seul composant Web doit être personnalisable en ajoutant des classes et des propriétés ou d'autres méthodes.
C'est la même chose que nous le voyons dans l'exemple de l'environnement fermé<todo-list></todo-list>
élément, mais il est con?u pour des environnements standard. Il fonctionne tel quel, sans styles de démonstration dans sa racine d'ombre. En fait, il ne contient que la logique nécessaire et le CSS de base pour assurer sa fonctionnalité. Sinon, il peut être personnalisé comme n'importe quel élément HTML standard (comme un div).
Les deux exemples que nous considérons pour chaque environnement ont été fabriqués en utilisant les mêmes composants. La différence est que les composants dans un environnement standard peuvent être personnalisés et sélectionnés à l'aide de CSS externe.
Composants et compositions Web
OK, donc l'utilisation de composants Web est en fait la même que l'utilisation de HTML ordinaire, bien que comme nous pouvons le voir, il est très important de suivre les paradigmes et les principes d'un contenu donné. Ce à quoi nous devons faire attention, c'est la combinaison de composants Web.
Comme l'explique les fondamentaux de Google Web:
Les combinaisons sont l'une des caractéristiques les moins connues de Shadow Dom, mais elles sont sans doute les plus importantes.
Dans notre monde de développement Web, la composition est la fa?on dont nous créons des applications de manière déclarative à l'aide de HTML. Différents blocs de construction (
<div> ,<code><s></s>
,<em></em>
,<strong></strong>
) assembler pour former une application. Certaines de ces balises peuvent même être utilisées entre elles. La combinaison est pourquoi<select></select>
,<details></details>
,<summary></summary>
et<video></video>
La raison pour laquelle ces éléments indigènes sont si flexibles. Chaque balise accepte certains HTML en tant qu'éléments enfants et effectue des opérations spéciales sur eux. Par exemple,<select></select>
Savoir comment<option></option>
et<optgroup></optgroup>
Rendu comme une liste déroulante et un widget multi-sélection.<details></details>
L'élément sera<summary></summary>
Présenté comme des flèches extensibles. même<video></video>
Sachez également comment gérer certains éléments enfants:<track></track>
Les éléments ne sont pas rendus, mais ils affectent le comportement de la vidéo. Comme c'est incroyable! La composition est ce que nous faisons habituellement lors de l'utilisation de HTML. étant donné qu'un composant Web n'est qu'un élément HTML avec une référence DOM (pas un conteneur logique), nous devons nous fier à des combinaisons pour construire nos composants et tous les sous-composants. Si vous considérez
et
<select></select>
, vous remarquerez que vous combinez de manière déclarative ces éléments pour obtenir la sortie finale, et vous avez des propriétés spécifiques qui peuvent être utilisées pour le composant principal (par exemple[readonly]
) ou le composant enfant (par exemple[selected]
). Il en va de même pour les composants Web, si vous construisez une liste personnalisée, envisagez de construire le composant principal (<custom-list></custom-list>
) et les sous-composants (<custom-li></custom-li>
). utiliser<slot></slot>
éléments, vous pouvez définir où les éléments enfants seront placés et le contenu de l'espace réservé qui sera affiché lorsque les éléments enfants ne seront pas passés.Composants Web et accessibilité
Une autre chose à considérer est ce que nous appelons le ?petit? thème de l'accessibilité . étant donné que nous créons un nouvel élément HTML, nous devons considérer l'accessibilité de l'élément afin de fournir des r?les sémantiques de base, toute navigation par clavier et les préférences du système d'exploitation de l'utilisateur telles que les paramètres de mouvement réduits et de contraste élevé.
Je recommande fortement les ressources suivantes comme référence pour construire des composants accessibles et inclusifs, comment définir les balises sémantiques et comment implémenter la navigation de base au clavier.
- Composants inclusifs
- "Effet pour tout le monde" sur web.dev
- Pratique créative Wai-Aria
- Liste de contr?le WebAiM WCAG
en conclusion
Les composants Web sont une technologie émergente dans le développement Web, il n'y a donc pas de meilleures pratiques bien définies pour nous guider lorsqu'il s'agit de les construire en fonction de leur utilisation ou de leur utilisation maximisée. Lorsque vous vous retrouvez à les utiliser, la seule chose que vous pourriez obtenir de ce post est de déterminer s'ils sont des environnements fermés ou standard et de vous demander :
- Qui utilisera ce composant?
- Dans une grande flexibilité que cette personne devrait avoir à la personnaliser?
- Ce composant convient -il à tout le monde ou à un public spécifique?
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!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

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

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

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Il existe trois fa?ons de créer un rotateur de chargement CSS: 1. Utilisez le rotateur de base des frontières pour obtenir une animation simple via HTML et CSS; 2. Utilisez un rotateur personnalisé de plusieurs points pour atteindre l'effet de saut à travers différents temps de retard; 3. Ajoutez un rotateur dans le bouton et basculez les classes via JavaScript pour afficher l'état de chargement. Chaque approche souligne l'importance des détails de conception tels que la couleur, la taille, l'accessibilité et l'optimisation des performances pour améliorer l'expérience utilisateur.

Pour faire face à la compatibilité du navigateur CSS et aux problèmes de préfixe, vous devez comprendre les différences de prise en charge du navigateur et utiliser raisonnablement les préfixes des fournisseurs. 1. Comprendre les problèmes communs tels que Flexbox et le support de la grille, Position: Sticky Invalid et les performances d'animation sont différentes; 2. Vérifier l'état du support de la fonction de confirmation de Caniuse; 3. Utilisez correctement -webkit-, -moz-, -ms-, -o- et autres préfixes du fabricant; 4. Il est recommandé d'utiliser AutopRefixer pour ajouter automatiquement les préfixes; 5. Installez PostCSS et configurez le navigateur pour spécifier le navigateur cible; 6. Gérer automatiquement la compatibilité pendant la construction; 7. Les fonctionnalités de détection modernizr peuvent être utilisées pour les anciens projets; 8. Pas besoin de poursuivre la cohérence de tous les navigateurs,

HEMAINDIFFERENCESBetweendisplay: Inline, Block, Andinline-BlockInhtml / CSSareLayoutBehavior, SpaceUsage et StylingControl.1.InlineElementsflowWithText, Don'tStartNewLines, Ignorewidth / Height, AndonlyApplyhorizontalPadding / Marges - IdealForninetLetetStyLinSing

La définition du style de liens que vous avez visité peut améliorer l'expérience utilisateur, en particulier dans les sites Web à forte intensité de contenu pour aider les utilisateurs à mieux naviguer. 1. Utilisez CSS: Pseudo-classe visité pour définir le style du lien visité, tels que les changements de couleur; 2. Notez que le navigateur permet uniquement la modification de certains attributs en raison des restrictions de confidentialité; 3. La sélection des couleurs doit être coordonnée avec le style global pour éviter la brutalité; 4. Le terminal mobile peut ne pas afficher cet effet et il est recommandé de le combiner avec d'autres invites visuelles telles que les logos auxiliaires ic?nes.

Utilisez l'attribut Clip-Path de CSS pour recadrer des éléments en formes personnalisées, telles que les triangles, les encoches circulaires, les polygones, etc., sans compter sur des images ou des SVG. Ses avantages incluent: 1. Prend en charge une variété de formes de base telles que le cercle, l'ellipse, le polygone, etc.; 2. Ajustement réactif et adaptable aux terminaux mobiles; 3. Facile à l'animation, et peut être combiné avec le survol ou le javascript pour obtenir des effets dynamiques; 4. Il n'affecte pas le flux de disposition et ne culte que la zone d'affichage. Les usages communs sont tels que le chemin de clip circulaire: cercle (50pxatcenter) et trame de clip Triangle: polygone (50% 0%, 100 0%, 0 0%). Avis

Pour créer des images réactives à l'aide de CSS, elle peut être principalement réalisée grace aux méthodes suivantes: 1. Utilisez la largeur maximale: 100% et hauteur: Auto pour permettre à l'image de s'adapter à la largeur du conteneur tout en maintenant la proportion; 2. Utilisez les attributs SRCSET et tailles de HTML pour charger intelligemment les sources d'image adaptées à différents écrans; 3. Utilisez l'objet-ajustement et la position d'objet pour contr?ler le recadrage d'images et l'affichage de la mise au point. Ensemble, ces méthodes garantissent que les images sont présentées clairement et magnifiquement sur différents appareils.

Le choix des unités CSS dépend des exigences de conception et des exigences réactives. 1.PX est utilisé pour la taille fixe, adaptée à un contr?le précis mais au manque d'élasticité; 2.EM est une unité relative, qui est facilement causée par l'influence de l'élément parent, tandis que REM est plus stable en fonction de l'élément racine et convient à la mise à l'échelle globale; 3.VW / VH est basé sur la taille de la fenêtre, adaptée à la conception réactive, mais l'attention doit être accordée aux performances sous des écrans extrêmes; 4. Lors du choix, il doit être déterminé en fonction de la question de savoir si les ajustements réactifs, les relations de hiérarchie d'éléments et la dépendance de la fenêtre. Une utilisation raisonnable peut améliorer la flexibilité et la maintenance de la disposition.

Différents navigateurs ont des différences dans l'analyse CSS, ce qui entra?ne des effets d'affichage incohérents, y compris principalement la différence de style par défaut, la méthode de calcul du modèle de bo?te, le niveau de support Flexbox et la disposition de la grille et le comportement incohérent de certains attributs CSS. 1. Le traitement de style par défaut est incohérent. La solution consiste à utiliser cssreset ou normaliser.css pour unifier le style initial; 2. La méthode de calcul du modèle de bo?te de l'ancienne version de IE est différente. Il est recommandé d'utiliser la taille d'une bo?te: Border-Box de manière unifiée; 3. Flexbox et Grid fonctionnent différemment dans les cas de bord ou dans les anciennes versions. Plus de tests et utilisent Autoprefixer; 4. Certains comportements d'attribut CSS sont incohérents. Caniuse doit être consulté et rétrogradé.
