2011-01-15 32 views
15

Ancak bu çalışmaz! Blah'ın genişliği, "daha geniş" sınıfını iptal eder.Bir sınıfa bir kimliğin önceliğini nasıl verebilirim?

+3

Huh? Lütfen örneğinizde daha açık olun. –

+4

".wider" için bildirilen genişliğin "# normal" için ilan edilenin önüne geçmesini istediğinden şüpheleniyorum. –

cevap

29

Sizin neyiniz var CSS specificity sorunu.

.wider, 0,0,1,0 özgünlüğüne sahiptir. #normal0,1,0,0 içeriğine sahiptir. Bir ID'yi ID'den başka bir şeyle (veya satır içi tanımlarla değil) geçemezsiniz, fakat bu durum böyle değildir. Eğer #normal seçicinin gerekli width beyanı koyamazsınız eğer

ben öneriyoruz ne, bu da mümkün değilse, bir tespit kapsayıcı olduğu gibi yüksek, #container demek, #normal.wider koymak veya etmektir hiyerarşiyi (belki de vücuttaki bir kimlik?) ve .wider'u #container .wider ile değiştirin. Bu yeni seçici, 0,1,0,0'dan biraz daha yüksek olan 0,1,1,0 özgüllüğüne sahip olacak. !important kullanmak da işe yarayacaktır, ancak sadece son çare olarak kullanılmalıdır.

Örnek: olacaktır özgüllük azalan bazı olası seçiciler pasajı, bu HTML için

<div id="container" class="wrapper"> 
    <div id="normal" class="wider"> 
</div> 

:

kişi önce belirtildiği gibi
CSS Selector   -> Specificity 
--------------------------------------- 
#container #normal -> 0,2,0,0 
#container .wider -> 0,1,1,0 // These two have the same specificity so 
#normal.wider  -> 0,1,1,0 // the last declared value will be used 
#normal    -> 0,1,0,0 
.wrapper .wider  -> 0,0,2,0 
.wider    -> 0,0,1,0 
+1

+1 – ChrisR

3

kullanım # blah.wider yerine Sen !important ile özelliklerini dekore edebilirsiniz

+0

benim için çalıştı! thakns – Toadums

3

bu onların ... önemini artırmayı çözmek için.

.wider 
{ 
    width:9000px !important; 
} 
+2

Not: Önemi artırmaz veya azaltmazsınız. Sadece onları * önemli kılıyorsun *. Onları iki katına çıkaramazsın. Bunları önemli kılarak, önemli olmayanlardan öncelikli olduklarını söylüyorsunuz, ancak hem önemli hem de önemsiz olan iki beyandan hangisinin seçicilik dediği ve seçicinin yapısı tarafından belirlendiğini belirleme aracı. –

+0

İyi bir nokta. Ve bundan daha fazlası var - bir stilin kökenini de etkiler. Örneğin, kullanıcı önemli stilleri, özgüllükten bağımsız olarak, yazarın önemli stillerini geçersiz kılar. Baskın önceliği denebilecek daha iyi olabileceğini düşündüğüm şey anlamını belli belirsiz bir şekilde kullandım. Özgünlüğü açıklamak için –

0

, bir kimlik 100 bir özgüllüğe sahiptir, oysa Bir sınıf sadece 10'dur.

Önerilen yanıtlara bir alternatif (!important kullanmayan), özelliğiürününden kaldırmaktır.çelişiyor (genişlik) ve bunu ikinci bir sınıfa uygulayın.

#normal { 
    padding : 0; 
    margin : 0; 
} 

.normal { 
    width : 400px; 
} 

.wider { 
    width : 1000px; 
} 

olmak için asıl işaretlemeyi bırakmak: İstediğiniz

<div id="normal" class="normal"> 
</div> 

'normal genişliğe' ve: Yani benzeyecektin

<div id="normal" class="wider"> 
</div> 

istediğiniz Nerede ekstra geniş eleman. .normal sınıfını eklemek için #normal'u kullanan sayfalarınıza geri dönmeniz gerekebilir, ancak bu sorunu düzeltir.

Ayrıca Gerben'in cevabının da işe yaradığını düşünüyorum - #normal genişlik özelliğini geçersiz kılan ID özelliğine (tamamen 110) daha fazla özgüllük ekler.

#normal.wider { 
    1000px; 
} 
+1

Bir kimlik aslında 100 bir özgüllük ve 10 sınıftan birine sahip değil, yalnızca insanların anlaması için ortak bir benzetme. Sırasıyla 0,1,0,0 ve 0,0,1,0 özgüllükleri vardır. Çoğu durumda 100 ve 10 kullanarak hesaplayabilmeniz, 9'dan fazla kimlik veya sınıf kullanmayan kişilerden kaynaklanmaktadır. 11 sınıfın hala tek bir kimlikten daha düşük özgüllüğe sahip olduğunu unutmayın. Eğer titiz olmak istiyorsanız 'a, b, c, d 'notasyonu kullanmalısınız. –

+0

Bom. Alin konuştu;) Teşekkürler, CSS özgüllüğünü daha iyi anladığımı düşünüyorum. – jlmakes

İlgili konular