Nasıl geçersiz kılınır!


250

Wordpress şablonum için orijinal CSS'yi geçersiz kılan özel bir stil sayfası oluşturdum. Ancak, takvim sayfamda, orijinal CSS, !importantbildirimle birlikte ayarlanan her tablo hücresinin yüksekliğine sahiptir :

td {height: 100px !important}

Bunu geçersiz kılabilmemin bir yolu var mı?


3
Sen !importantde kullanmayı denedin mi? CSS sayfanız orijinal şablondan sonra tanımlanmışsa, düzgün çalışması gerekir.
Petr Janeček

1
En son hangi sayfa, sizin veya şablonunuz?
j08691

67
Bu yüzden !importantzararlı olarak kabul edilir.
Spudley

8
En güçlü yol şöyledir: td [style] {height: 110px! İmportant; }. Etiketi gerçek stil özniteliğine stiller uyguladığınız için stili html'ye satır içi enjekte etmişsiniz gibi davranır.
DMTintner

Yanıtlar:


352

! Önemli değiştiriciyi geçersiz kılma

  1. Sadece başka bir CSS kuralı ekleyin !importantve seçiciye daha yüksek bir özgüllük verin (seçiciye ek bir etiket, kimlik veya sınıf ekleme)
  2. varolandan daha sonraki bir noktada aynı seçiciye sahip bir CSS kuralı ekleyin (bir kravatta, sonuncusu kazanır).

Daha yüksek özgüllüğe sahip bazı örnekler (birincisi en yüksek / geçersiz kılmalar, üçüncüsü en düşüktür):

table td    {height: 50px !important;}
.myTable td {height: 50px !important;}
#myTable td {height: 50px !important;}

Veya mevcut seçiciden sonra aynı seçiciyi ekleyin:

td {height: 50px !important;}

Yasal Uyarı:

Kullanmak neredeyse hiç iyi bir fikir değildir !important. Bu, WordPress şablonunun yaratıcıları tarafından kötü bir mühendisliktir. Viral tarzda, şablonu kullanıcıları !importantonu geçersiz kılmak için kendi değiştiricilerini eklemeye zorlar ve JavaScript aracılığıyla geçersiz kılma seçeneklerini sınırlar.

Ancak, bazen yapmanız gerekiyorsa, nasıl geçersiz kılınacağını bilmek faydalıdır .


7
Bunun cevapların eski tarafında olduğunu biliyorum, ama belki de bu CSS'nizi yazmanın son derece kötü bir yolu olduğu yorumunu ekleyebilir misiniz (ya da katılmıyorsanız kabul edilebilir olduğunu belirtin)? İnsanların bu cevaba atıfta bulunduğunu gördüm ... :)
ZenMaster

Mükemmel cevap. Katılıyorum, bu bir karmaşa. Beni onların hack etrafında kesmek için zorlar, sonra birisi benim hack etrafında kesmek için, vb .. Benim durumumda bir yerde bir veritabanından CSS çeken şablonları ile uğraşmak zorunda. DB dökümü grep ve bana 1MB json blob geliyor gösterir. Nerede değiştireceğimi bulmamda çok yararlı değil, bu kötü hack'lerin dışında bir kod dosyasına CSS eklemem için beni zorlamalı.
Josh Ribakoff

Ayrıca bakınız
:! İmportant

css'i yavaşlatsa bile etiket tanımlayıcıyı eklemek iyi bir fikir olabilir. Sadece div # header.class {style:; } alması için ... çok sinir bozucu
Sparatan117

Bunun için iyi kullanımlar vardır !important. Bir Şık, AdBlock veya uBlock komut dosyasından tarayıcı veya site genelinde bir stil geçersiz kılma gibi. Veya çok karmaşık olabilen, birçok dosyaya yayılan ve zaman içinde değişebilen (ve aynı zamanda da kullanabilir !important) temel CSS'ye makul ölçüde kolay erişiminiz olmadığında . Herhangi bir araç gibi, pozitif veya negatif potansiyel onu nasıl kullandığınıza bağlıdır. İnsanların böyle şeyler olduğunda ya da git / eval / globals / vb. bahsedilen. "WordPress'ten kaçının" veya "CSS'den kaçının" da söylenebilir, çünkü "işleri karıştırmak" potansiyeli çok büyüktür.
Beejor

30

!importantEğer çakışan ile biçembendindeki seçiciler varken sadece kullanılmalıdır özgünlüğünü .

Ancak, çelişkili bir özgüllüğünüz olsa bile, istisna için daha spesifik bir seçici oluşturmak daha iyidir. Sizin durumunuzda class, HTML'nizde !importantkurala ihtiyaç duymayan daha spesifik bir seçici oluşturmak için kullanabileceğiniz bir daha iyi olur .

td.a-semantic-class-name { height: 100px; }

Şahsen !importantstil sayfalarımda asla kullanmam . CSS'deki C'nin basamaklı olduğunu unutmayın. Kullanmak !importantbunu kıracaktır.


17
Bu doğru değil. Bir !importantstil kuralı normal bir kural geçersiz kılacaktır styleörneğin etiketinin. Bununla birlikte, bazı durumlarda daha spesifik bir kuralın geçersiz kıldığı görülecektir. Eğer bir set Örneğin, font-size: 24pt !importantON body, hala bir ile geçersiz kılabilirsiniz font-size: 12ptüzerinde p. Bu geçersiz kılma değildir çünkü !importantkuralı, sen örtülü geçersiz kılma font-size: inheritON p.
14'te meustrus

23

Feragatname: Her ne pahasına olursa olsun!

Bu kirli, kirli bir hack'tir, ancak önemli olanları geçersiz kılmaya çalıştığınız mülk üzerinde (sonsuz döngü veya çok uzun ömürlü) bir animasyon kullanarak!!

@keyframes forceYellow {
  from {
    background-color: yellow;
  }
  to {
    background-color: yellow;
  }
}

div {
  width: 100px;
  height: 100px;
  margin: 0 auto;
  background: red !important;
  animation: 1s linear infinite forceYellow;
}
<div></div>


2
potansiyel olarak kullanıcının CPU'sunu
zorlar

2
Görünüşe göre bu numara artık çalışmıyor. Firefox 78 ve Chrome 83'te kutu hala kırmızı renktedir.
Andy Pan

13

Tamam, burada CSS Önemi hakkında hızlı bir ders var. Umarım aşağıdaki yardımcı olur!

Her şeyden önce, stillerin her kısmı bir ağırlık olarak adlandırılır, bu nedenle bu stille ilgili ne kadar çok öğeniz varsa o kadar önemlidir. Örneğin

#P1 .Page {height:100px;}

şunlardan daha önemlidir:

.Page {height:100px;}

Bu yüzden önemli kullanırken, ideal olarak bu sadece gerçekten ihtiyaç duyulduğunda kullanılmalıdır. Bu nedenle, düşüşü atlatmak için stili daha spesifik hale getirin, aynı zamanda bir geçersiz kılma ile. Aşağıya bakınız:

td {width:100px !important;}
table tr td .override {width:150px !important;}

Umarım bu yardımcı olur!!!


İki !importantyeniden tanımlamak tarafından geçersiz kılma olabilir .old sınıf-name {bla bla bla} olarak .old sınıf-name.overrided {bla bla bla} içinde <style></style>bileşen üzerinde etiketi, benim için 's çalışması
Tarek Kalaji

11

JavaScript kullanarak geçersiz kıl

$('.mytable td').attr('style', 'display: none !important');

Benim için çalıştı.


Satır içi stillerin her zaman bir ebeveynin önemini geçersiz kıldığını düşündüm! bayrağı.
Joshua Ramirez

3
@JoshuaRamirez Hayır! Eğer önemli bayrağı da satır içine koymazsanız aslında önemli bir bayrağı geçersiz kılmazlar
Cam

1
JS'yi kullanacaksanız, uzak bir olasılık yoksa, tekrar ihtiyacınız olacak öğeyi tamamen silebilirsiniz. JS üzerinden istifleme önemli, sizi orijinal soruya geri getirir.
SilverbackNet

@SilverbackNet Anladığım kadarıyla, JS kullanarak geçersiz kılma daha doğrudur ve genellikle her şey yüklendikten sonra sırayla CSS yükleri ve JS jquery blok yükleri olarak çalışır. Bu nedenle, css dizilerinden bağımsız olarak css tarafından yapılan değişiklikleri geçersiz kılar.
Manish Shrivastava

bunun gibi geçersiz kılma stil nitelikleri için çalışmaz.
user2284570

6

Bu da yardımcı olabilir

td[style] {height: 50px !important;}

Bu, tüm satır içi stilleri geçersiz kılar


0

Her durumda, heightile geçersiz kılabilirsiniz max-height.


-5

Yukarıda belirtilenlerin hiçbirini boşuna denediğim için, daha önce bahsedilmeyen bir cevap eklemek istiyorum. Benim özel durumum, !importantelemanlar (son derece sinir bozucu) özellikleri üzerine inşa edilmiş semantik-ui kullanıyorum . Ben geçersiz kılmak için her şeyi denedim, sadece sonunda bir şey (jquery kullanarak) işe yaradı. Aşağıdaki gibidir:

$('.active').css('cssText', 'border-radius: 0px !important');

Bu işe yaramaz, attr('style', ...bunun yerine kullanılan
Manish'in
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.