CSS: Як видалити псевдоелементи (після, перед,…)?


236

Я хотів би використовувати перемикач для компонування тегів абзаців на веб-сторінці.

Я використовую псевдоелемент:

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

Тепер мені потрібно видалити цей CSS-код зі сторінки.

Як це можна зробити легко?

Я хочу додати це:

  • jQuery вже використовується на сторінці

  • і я не хочу включати або видаляти файли, що містять CSS.


Відповіді:


455
p:after {
   content: none;
}

жодне не є офіційним значенням встановлювати вміст, якщо він визначений, нічим.

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


2
Чи справді це очищає інші стилі, пов’язані із вмістом, таким чином, навіть якщо у вас встановлені прокладки та поля, вони стають інертними?
Райан Вільямс

Це має бути прийнятою відповіддю. Використання вмісту: ''; може призвести до несподіваних результатів при спробі змінити раніше встановлений атрибут вмісту.
Рой Мілдер

Ви не можете просто зробити display: none?
MDTech.us_MAN

@ MDTech.us_MAN так, ви можете зробити "display: none", але він все одно буде збережений у дереві DOM. Встановлення вмісту: ніхто навіть не поміщає його у дерево DOM (ви можете перевірити його через інспектора DOM Chrome)
kumarharsh

29

Вам потрібно додати правило css, яке видаляє після контенту ( через клас ) ..


Оновлення з - за деякі дійсні коментарі.

Більш правильний спосіб повного видалення / відключення :afterправила - це використання

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

як відповіла Джилліан Ло Вонг .


Оригінальна відповідь

Вам потрібно додати правило css, яке видаляє після контенту ( через клас ) ..

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

і додайте цей клас до свого, pколи потрібно з цим рядком

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

робочий приклад за адресою: http://www.jsfiddle.net/G2czw/



8

Як згадується у відповіді Джилліан , призначаючи noneдля contentвирішення проблеми:

p::after {
   content: none;
}

Зверніть увагу , що в CSS3 , W3C , рекомендується використовувати два двокрапки ( ::) для псевдо-елементів , як перед тим або після того, як .

З веб-документа MDN про псевдоелементи

Примітка. Як правило, ::замість однієї двокрапки ( ) слід використовувати подвійні колонки ( :). Це відрізняє псевдокласи від псевдоелементів. Однак, оскільки цього розрізнення не було в старих версіях специфікації W3C, більшість браузерів підтримують обидва синтаксиси заради сумісності. Зауважте, що ::selectionзавжди слід починати з подвійних кольорів ( ::).


5

Це залежить від того, що насправді додають псевдоселектори. У вашій ситуації, якщо налаштувати вміст, ""ви позбудете його, але якщо ви встановлюєте рамки або фони чи будь-що інше, вам потрібно їх нульово викреслити. Наскільки я знаю, немає жодного засобу для видалення всього про елемент до / після, незалежно від того, що це.


0

була така ж проблема кілька хвилин тому, і я просто content:none;не працював, а додав content:none !important;і display:none !important;працював для мене


-3
p:after {
  content: none;
}

Це спосіб видалити :afterі ви можете зробити те ж саме:before


1
Ця відповідь, схоже, повторює те саме рішення, що і прийняте в даний час кілька років тому. Якщо ви відчуваєте, що вам щось додати, залиште це як коментар до оригінальної відповіді. Якщо ви маєте інше рішення, будь ласка, поясніть, чому воно інше (а можливо, і краще).
MTCoster
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.