J'essaie d'appliquer les styles du site Web où un composant stencilJS est inclus ... mais je ne sais pas comment.
#red{ color: red; }
Le composant est inclus comme ceci:
<link rel="stylesheet" href="css/main.css" type="text/css" /> <script src='https://unpkg.com/component@0.0.2/dist/mycomponent.js'></script> <my-component></my-component>
Dans mon fichier main.css, j'ai quelque chose comme ceci:
XXX
Je voudrais que le style soit appliqué à l'élément du composant pochoir. Est-ce possible?
3 Réponses :
Votre composant a un "Shadow DOM", qui sert à tout encapsuler, y compris les styles dans un DOM séparé, donc il existe pratiquement pour vous empêcher de remplacer ses styles.
Auparavant, il y avait des "shadow piercing "Directives CSS comme / deep /
et :: shadow
, mais elles sont obsolètes et ne sont plus fonctionnelles.
C'est donc à peu près comme ça censé être.
Maintenant pour les solutions de contournement:
var div = document.querySelector('#comp').shadowRoot.querySelector('div#red'); div.style['color'] = 'red';
Salut. Merci pour le commentaire. Inclure le css deux fois ... ce n'est pas une option pour moi. J'utilise une application dont les styles sont automatiquement inclus. Pas même écrit par moi. J'ai essayé de définir shadow: false
, mais je vois toujours le composant dans un dom # shadow-root
.
Vous devriez pouvoir utiliser le sélecteur psuedo : host
dans votre feuille de style pour appliquer les styles au niveau de l'hôte:
:host { style: value }
Vous pouvez facilement importer @ stencil.sass
pour vos feuilles de style, lien ici: https://github.com/ionic-team/stencil-sass/blob/master/readme.md
Cela vous donnera une plus grande fonctionnalité avec vos styles au pochoir. p >
EDIT:
J'ai mal compris et je vois maintenant que vous voulez manipuler en dehors du composant. Vous pouvez fournir un élément
dans votre composant Web et ajouter des éléments de style spécifiquement extérieurs au DOM des composants Web. Lien ici: https://developer.mozilla.org/en -US / docs / Web / HTML / Element / slot
Salut. Je ne pense pas avoir posé la bonne question. Supposons donc que j'utilise Bootstrap dans un projet et que je souhaite utiliser un élément Bootstrap dans un composant Stencil. Dois-je également ajouter le bootstrap css à mon composant? Ou puis-je simplement créer le composant et le rendre à l'aide du css bootstrap d'origine trouvé dans le projet?
@Ciprian avez-vous trouvé une solution pour utiliser le bootstrap dans le composant stencil?
@Dark_Knight Non. Désolé
Vous pouvez utiliser des variables css pour cela. Regardez les exemples de code suivants:
index.html
my-component.css
#red { color: var(--text-color, black); }
Dans le le style du composant vous attribuez une variable CSS comme valeur à la couleur du texte de la classe [id = "red"]
. Dans votre application, vous pouvez désormais changer la couleur en définissant la valeur de la variable.