CSS: Yalancı öğeler nasıl kaldırılır (sonra, önce,…)?


236

Bir web sayfasındaki paragraf etiketlerinin yerleşimi için bir anahtar kullanmak istiyorum.

After pseudoelement kullanıyorum:

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

Şimdi bu CSS kodunu sayfadan kaldırmam gerekiyor.

Bu nasıl kolayca yapılabilir?

Bunu eklemek istiyorum:

  • jQuery zaten sayfada kullanılıyor

  • ve CSS içeren dosyaları dahil etmek veya kaldırmak istemiyorum.


Yanıtlar:


455
p:after {
   content: none;
}

hiçbiri , belirtilirse içeriği hiçbir şeye ayarlamak için resmi değer değildir.

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


2
Bu, içerikle ilgili diğer stilleri gerçekten temizliyor mu?
Ryan Williams

Bu kabul edilen cevap olmalı. İçerik kullanma: ''; önceden ayarlanmış bir içerik özelliğini geçersiz kılmaya çalışırken beklenmedik sonuçlara yol açabilir.
Roy Milder

Sadece yapamaz display: nonemısın?
MDTech.us_MAN

@ MDTech.us_MAN evet "display: none" yapabilirsiniz, ancak yine de DOM ağacında saklanacaktır. İçerik ayarlama: hiçbiri onu DOM ağacına bile
koymaz (

29

Sonraki içeriği ( bir sınıf aracılığıyla ) kaldıran bir css kuralı eklemeniz gerekir .


Bir güncelleme bazı geçerli yorumlar nedeniyle.

:afterKuralı tamamen kaldırmak / devre dışı bırakmak için en doğru yol

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

olarak Gillian Lo Wong cevap verdi .


Orijinal cevap

Sonraki içeriği ( bir sınıf aracılığıyla ) kaldıran bir css kuralı eklemeniz gerekir .

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

ve pbu satırla istediğiniz zaman o sınıfı

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

çalışan bir örnek: http://www.jsfiddle.net/G2czw/



9

Gillian'ın cevabında belirtildiği gibi , sorunu çözmek noneiçin atama content:

p::after {
   content: none;
}

CSS3'te , W3C'nin önceki veya sonraki gibi sahte elemanlar:: için iki sütun ( ) kullanmasını önerdiğini unutmayın .

Gönderen sözde elemanları MDN web doc

Not: Kural olarak, tek bir iki nokta üst üste ( ::) yerine çift ​​iki nokta üst üste ( ) kullanılmalıdır :. Bu sözde sınıfları sözde unsurlardan ayırır. Ancak, bu ayrım W3C spesifikasyonunun eski sürümlerinde mevcut olmadığından, çoğu tarayıcı uyumluluk için her iki sözdizimini de destekler. Bunun ::selectionher zaman çift sütunlu ( ::) ile başlaması gerektiğini unutmayın .


5

Bu, yalancı seçiciler tarafından gerçekte nelerin eklendiğine bağlıdır. Sizin durumunuzda, içeriği ayarlamak ""bundan kurtulur, ancak sınırlar veya arka planlar veya başka bir şey ayarlarsanız, bunları özellikle sıfırlamanız gerekir. Bildiğim kadarıyla, ne olursa olsun bir önceki / sonraki öğeyle ilgili her şeyi kaldırmak için tek bir tedavi yok.


0

Birkaç dakika önce aynı sorunu vardı ve sadece content:none;işi ama ekleyerek yapmadı content:none !important;ve display:none !important;benim için çalıştı


-3
p:after {
  content: none;
}

Bu, kaldırmanın bir yoludur :afterve aynısını aşağıdakiler için de yapabilirsiniz::before


1
Bu cevap, birkaç yıl önce kabul edilmiş olanla aynı çözümü tekrarlıyor gibi görünüyor. Ekleyeceğiniz bir şey olduğunu düşünüyorsanız, lütfen orijinal cevaba bir yorum olarak bırakın. Alternatif olarak, farklı bir çözümünüz varsa, lütfen neden farklı (ve muhtemelen daha iyi) olduğunu açıklayın.
MTCoster
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.