290 votes

CSS: Comment enlever les pseudo-éléments (after, before,...) ?

Je voudrais utiliser un interrupteur pour la mise en page des balises de paragraphe sur une page web.

J'utilise le pseudo-élément after :

p:after {content: url("../img/paragraph.gif");}

Maintenant, j'ai besoin de supprimer ce code CSS de la page.

Comment cela peut-il être fait facilement ?

Je tiens à ajouter que :

  • jQuery est déjà utilisé sur la page

  • et je ne veux pas inclure ou supprimer des fichiers contenant du CSS.

558voto

Gillian Lo Wong Points 1792
p:after {
   content: none;
}

none est la valeur officielle pour définir le contenu, s'il est spécifié, à rien.

http://www.w3schools.com/cssref/pr_gen_content.asp

33voto

Gaby aka G. Petrioli Points 85891

Vous devez ajouter une règle css qui supprime le contenu après (grâce à une classe)..


Une mise à jour en raison de commentaires valides.

La manière la plus correcte pour supprimer/désactiver complètement la règle :after est d'utiliser

p.no-after:after{content:none;}

comme l'a répondu Gillian Lo Wong.


Réponse originale

Vous devez ajouter une règle css qui supprime le contenu après (à travers une classe)..

p.no-after:after{content:"";}

et ajoutez cette classe à votre p lorsque vous le souhaitez avec cette ligne

$('p').addClass('no-after'); // remplacez le sélecteur p par ce dont vous avez besoin...

Un exemple fonctionnel à : http://www.jsfiddle.net/G2czw/

17voto

$('p:after').css('display','none');

13voto

simhumileco Points 5383

Comme mentionné dans la réponse de Gillian, attribuer none à content résout le problème :

p::after {
   content: none;
}

Remarquez qu'en CSS3, le W3C recommande d'utiliser deux deux-points (::) pour les pseudo-éléments comme ::before ou ::after.

De la documentation web MDN sur les Pseudo-éléments:

Note : En règle générale, les doubles deux-points (::) devraient être utilisés au lieu d'un seul deux-points (:). Cela permet de distinguer les pseudo-classes des pseudo-éléments. Cependant, étant donné que cette distinction n'était pas présente dans les anciennes versions de la spécification du W3C, la plupart des navigateurs prennent en charge les deux syntaxes pour des raisons de compatibilité. Notez que ::selection doit toujours commencer par des doubles deux-points (::).

5voto

drewww Points 527

Cela dépend de ce qui est réellement ajouté par les pseudosélecteurs. Dans votre situation, définir le contenu sur "" va s'en débarrasser, mais si vous définissez des bordures ou des arrière-plans ou autre chose, vous devez les annuler spécifiquement. Autant que je sache, il n'y a pas de remède universel pour supprimer tout ce qui concerne un élément before/after, peu importe ce que c'est.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X