CSS: Come rimuovere gli pseudo elementi (dopo, prima, ...)?


236

Vorrei utilizzare un interruttore per il layout dei tag di paragrafo in una pagina Web.

Uso lo pseudoelemento post:

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

Ora devo rimuovere questo codice CSS dalla pagina.

Come può essere fatto facilmente?

Voglio aggiungere che:

  • jQuery è già utilizzato nella pagina

  • e non voglio includere o rimuovere file contenenti CSS.


possibile duplicato di pseudo-elementi CSS
Blazemonger,

Risposte:


455
p:after {
   content: none;
}

none è il valore ufficiale per impostare il contenuto, se specificato, su niente.

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


2
Questo in realtà cancella altri stili relativi al contenuto, quindi anche se si hanno padding e margini impostati diventano inerti?
Ryan Williams,

Questa dovrebbe essere la risposta accettata. Utilizzando il contenuto: ''; potrebbe portare a risultati imprevisti quando si tenta di sostituire un attributo di contenuto precedentemente impostato.
Roy Milder,

Non puoi farlo display: none?
MDTech.us_MAN

@ MDTech.us_MAN sì, puoi fare "display: none", ma sarà comunque mantenuto nella struttura DOM. Contenuto dell'impostazione: nessuno nemmeno lo inserisce nell'albero DOM (puoi controllarlo tramite la
finestra di

29

Devi aggiungere una regola CSS che rimuove il contenuto after ( attraverso una classe ).


Un aggiornamento a causa di alcuni commenti validi.

Il modo più corretto per rimuovere / disabilitare completamente il file :after regola è utilizzare

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

come ha risposto Gillian Lo Wong .


Risposta originale

Devi aggiungere una regola CSS che rimuove il contenuto after ( attraverso una classe ).

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

e aggiungi quella classe alla tua pquando vuoi con questa linea

$('p').addClass('no-after'); // replace the p selector with what you need...

un esempio funzionante su: http://www.jsfiddle.net/G2czw/



9

Come menzionato nella risposta di Gillian , assegnando nonea contentrisolve il problema:

p::after {
   content: none;
}

Si noti che in CSS3 , W3C ha raccomandato di usare due due punti ( ::) per pseudo-elementi come ::beforeo ::after.

Dal documento web MDN sugli pseudo-elementi :

Nota: di norma, utilizzare due punti ( ::) anziché due punti ( :). Ciò distingue le pseudo-classi dagli pseudo-elementi. Tuttavia, poiché questa distinzione non era presente nelle versioni precedenti delle specifiche del W3C, la maggior parte dei browser supporta entrambe le sintassi per motivi di compatibilità. Nota che ::selectiondeve sempre iniziare con i due punti ( ::).


5

Questo dipende da ciò che viene effettivamente aggiunto dagli pseudoselettori. Nella tua situazione, impostando il contenuto su ""ti sbarazzerai di esso, ma se stai impostando bordi o sfondi o altro, devi azzerarli specificamente. Per quanto ne so, non esiste un unico rimedio per rimuovere tutto ciò che riguarda un elemento prima / dopo, indipendentemente da ciò che è.


0

ha avuto lo stesso problema pochi minuti fa e semplicemente content:none;non ha funzionato ma l'aggiunta content:none !important;e ha display:none !important;funzionato per me


-3
p:after {
  content: none;
}

Questo è un modo per rimuovere :aftere puoi fare lo stesso per:before


1
Questa risposta sembra reiterare la stessa soluzione di quella attualmente accettata di diversi anni fa. Se ritieni di avere qualcosa da aggiungere, ti preghiamo di lasciarlo come commento sulla risposta originale. In alternativa, se hai una soluzione diversa, spiega perché è diversa (e forse migliore).
MTCoster
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.