Réglage CSS pseudo-règles de classe à partir de JavaScript
Je suis à la recherche d'un moyen de modifier les règles CSS pour les pseudo-sélecteurs de classe (comme :link, :hover, etc.) à partir de JavaScript.
Donc un analogue du code CSS: a:hover { color: red }
en JS.
Je ne pouvais pas trouver la réponse ailleurs, si quelqu'un sait que c'est quelque chose que les navigateurs ne prennent pas en charge, ce serait un résultat utile ainsi.
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas le style de la pseudo-classe sur un seul élément, de la même manière que vous ne pouvez pas avoir une pseudo-classe dans un inline style="..." attribut (comme il n'y a pas de sélecteur).
Vous pouvez le faire en modifiant la feuille de style, par exemple par l'ajout de la règle:
en supposant que chaque élément que vous souhaitez affecter a un ID unique pour lui permettre d'être sélectionné.
En théorie, le document que vous voulez est http://www.w3.org/TR/DOM-Level-2-Style/Overview.html qui signifie que vous pouvez (étant donné un pré-existants incorporé ou lié feuille de style) à l'aide d'une syntaxe du type:
C'est à dire, bien sûr, nécessite sa propre syntaxe:
Plus âgés et les navigateurs mineurs sont susceptibles de ne pas l'appui de la syntaxe. Dynamique de la feuille de style-manipulation se fait rarement parce que c'est assez ennuyeux pour obtenir le droit, rarement nécessaire, et historiquement gênants.
function sameOrigin(url) { var loc = window.location, a = document.createElement('a'); a.href = url; return a.hostname === loc.hostname && a.port === loc.port && a.protocol === loc.protocol; }
J'ai jeté un petite bibliothèque pour cette depuis je ne pense qu'il y a valide les cas d'utilisation pour la manipulation de feuilles de style en JS. Des raisons d'être:
Une fonction pour faire face à la croix-navigateur trucs:
Mon truc, c'est à l'aide d'un sélecteur d'attribut. Les attributs sont les plus faciles à mettre en place par javascript.
css
javascript
html
Il suffit de placer le css dans un modèle de chaîne de caractères.
Puis créer un élément de style et placez la chaîne dans le style de la balise et de la joindre au document.
Spécificité prendra soin du reste. Ensuite, vous pouvez supprimer et ajouter des balises de style de façon dynamique. C'est une alternative simple aux bibliothèques et de jouer avec la feuille de style de tableau dans les DOM. Amusez-Vous Bien!
insertAdjacentElement
nécessite 2 arguments dans les principaux navigateurs (Chrome, Firefox, Edge), le premier établissement de la position par rapport à l'élément de référence (voir ici). Est-ce un changement récent ? (Ajouté 'beforeend" pour la réponse).Il est une autre alternative. Plutôt que de manipuler les pseudo-classes directement, de créer de véritables classes qui modèle les mêmes choses, comme un "hover" de la classe ou un "visité" de la classe. Style les classes avec l'habituel "." syntaxe et puis vous pouvez utiliser JavaScript pour ajouter ou supprimer des classes à partir d'un élément lorsque l'événement se déclenche.
Au lieu de directement paramètre de pseudo-règles de classe avec le javascript, vous pouvez définir les règles différemment dans les différents fichiers CSS, puis l'utilisation de Javascript pour passer une feuille de style et de basculer dans une autre. Une méthode est décrite à Une Liste À Part (qv. pour plus de détails).
Configurer les fichiers CSS, comme,
Puis basculer entre eux à l'aide de javascript:
Comme déjà dit ce n'est pas quelque chose que les navigateurs prennent en charge.
Si vous n'êtes pas venir avec des styles de manière dynamique (c'est à dire en la tirant d'une base de données ou quelque chose), vous devez être en mesure de contourner ce problème en ajoutant une classe pour le corps de la page.
Le css devrait ressembler à quelque chose comme:
Et le javascript pour le changer ce serait quelque chose comme:
element.classList.add
pas bien pris en charge? Je continue à voir des gens faire deselement.className +=
.De commutation des feuilles de style à l'intérieur est la façon de le faire. Ici, c'est une bibliothèque pour construire les feuilles de style de manière dynamique, de sorte que vous pouvez définir des styles à la volée:
http://www.4pmp.com/2009/11/dynamic-css-pseudo-class-styles-with-jquery/
En jquery, vous pouvez facilement régler passez pseudo classes.
Si vous utilisez RÉAGIR , Il ya quelque chose appelé radium. Il est donc utile ici :
voici une solution à deux fonctions: addCSSclass ajoute une nouvelle classe css à un document, et toggleClass il tourne sur
Le montre l'exemple de l'ajout d'une barre de défilement personnalisée à un div
JS:
HTML: