Réglage Complexe réagir styles en ligne tels que hover, active sur react éléments tels que les boutons
J'ai la suite de styles css pour mes boutons. Je suis également en utilisant bootstrap.
.btn-primary {
background-color: #229ac8;
background-image: linear-gradient(to bottom, #23a1d1, #1f90bb);
background-repeat: repeat-x;
border-color: #1f90bb #1f90bb #145e7a;
color: #ffffff;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
}
.btn-primary:hover, .btn-primary:active, .btn-primary.active, .btn-primary.disabled, .btn-primary[disabled] {
background-color: #1f90bb;
background-position: 0 -15px;
}
J'ai défini un bouton comme un composant de réagir.
const MyButton = ({children, onClick, classNames, ...rest }) =>
(
<button
onClick = {onClick}
className = {`${classNames}`}
{...rest}
>
{children}
</button>
);
Basé sur la valeur récupéré depuis le serveur, je veux changer le remplir de la couleur du bouton.
Question 1:
Comment puis-je régler le bouton complet de style de style en ligne?
Question 2:
Aussi, puis-je utiliser des scss
fonctionnalités comme mixins
dans react
pour générer des styles de bouton dynamiquement en passant couleur comme variable ?
Question 3:
Dois-je utiliser des styles en ligne ou les noms de classe à l'aide de css, js?
Pour un composant générique, tel qu'un bouton doit-on utiliser une classe globale qui peut être réutilisée dans tous les endroits où le bouton est défini ou l'utilisation d'un local de style en ligne et de créer des styles en ligne dans tous les endroits?
Vous devez vous connecter pour publier un commentaire.
CSS, JS (avec pseudo classes & MQ support)
Il y a beaucoup de libs pour écrire CSS à Réagir qui prend en charge la pseudo-classes, mais de tous, si tous ne vous oblige à en ligne ou écrire votre CSS, JS que je recommande fortement
Des Modules CSS (Écrire votre code CSS comme d'habitude, mais en mieux)
Il est également Des modules CSS qui, si vous êtes déjà à l'aide de Webpack devrait être simple à configurer, qui vous permettent de
import
/require
votre CSS comme un objet utiliser votre composant comme suit:Découplage des composants
Je voudrais aussi ajouter que vous ne devriez pas passer des classes de l'
<Button />
et de traiter avec les conditions à l'intérieur du composant lui-même. Par exemple à l'aide de les noms de classe lib vous pouvez faire quelque chose comme ce qui suit.Vous pouvez même combiner des Modules CSS &
classnames
lib pour créer de puissantes combinaisons..btn-primary
si vous passez<Button type="primary" />
etc...Personnellement, je voudrais utiliser le CSS et fil avec Webpack. Il gardera votre Réagissent beaucoup plus propre et bien plus modulaire et facile à éditer.
Au meilleur de ma connaissance, SCSS ne peut pas être utilisé en ligne avec vos Réagir.
Si vous avez besoin de définir des styles en ligne à Réagir comme ceci;
hover:
avec l'aide de crochets:Vous pouvez utiliser la même technique pour des scénarios plus complexes.
Vous pouvez définir un objet javascript avec des styles en ligne dans le bouton pour changer la couleur de façon dynamique. Par exemple:
Pas testé, mais quelque chose comme ça. Jetez un oeil à la façon dont Matériel de l'INTERFACE utilisateur t-il.
De l'officiel docs:
Donné le code css suivant
Style en ligne représentation de ce qu'il serait
Réagir de style en ligne est qu'une abstraction de la css. Il n'a pas d'autres caractéristiques de fantaisie. Mais depuis une ligne de style est simplement un objet, il peut être généré dynamiquement dans une manière que vous pouvez simuler scss mixin et, bien sûr, vous pouvez utiliser des variables.
Un scss mixin comme celui-ci
Peut être accompli avec quelque chose comme
De celui-ci, vous ne pouvez pas obtenir une réponse définitive. Mais je recommande l'utilisation d'un nom de classe des médicaments génériques et des styles en ligne pour plus de détails. C'est à vous de la façon de gérer le code pour répondre à vos besoins.