2012-07-20 15 views
12

geliştirmek için: http://www.w3.org/TR/CSS21/cascade.html#specificityCSS sınıf tekrarı CSS dokümanlar göre özgüllüğü

Özelliği seçici öznitelikleri ve sözde sınıfları sayısı (diğer şeyler arasında) ile tanımlanır.

Yani, sorum şu, tekrar tekrar aynı sınıf adını tekrarlayarak özgüllüğü artırmak mümkün mü? Örneğin

:

olur

.qtxt.qtxt.qtxt.qtxt.qtxt 
{ 
} 

.qtxt.lalgn 
{ 
} 

veya

.lalgn .qtxt//(space added to create child selector) 
{ 
} 

daha yüksek özgünlük var?

+0

Bunun tarayıcıya özgü olacağını tahmin edeceğim. –

cevap

20

Evet, bu mümkün ve kasıtlı olarak mümkündür. Bu BB2 teknik özelliklerde bahsedilen olmasa da, açıkça Selectors 3 spec belirtilen:

Not: Tekrarlanan occurrances [sic], aynı basit seçicinin izin verilir ve özgünlüğünü artırmak yoktur.

nedenle sürece seçici geçerli ve uygulanabilir olduğu gibi tekrarlanan basit seçicileri karşılaştığında özgünlüğünü artırmak gerekir tarayıcılar. Bu sadece tekrarlanan sınıflar için geçerli değildir, aynı zamanda tekrarlanan kimlikler, öznitelikler ve sözde sınıflar için de geçerlidir.

Kodunuzu verdiğinizde, .qtxt.qtxt.qtxt.qtxt.qtxt en yüksek özgüllüğe sahip olacaktır. Diğer iki seçici de eşittir; combinators hiç özgüllük hesaplamalarında ilgisi yok:

/* 5 classes -> specificity = 0-5-0 */ 
.qtxt.qtxt.qtxt.qtxt.qtxt 

/* 2 classes -> specificity = 0-2-0 */ 
.qtxt.lalgn 

/* 2 classes -> specificity = 0-2-0 */ 
.lalgn .qtxt 

Ayrıca, son seçicideki uzay soyundan combinator olduğu; çocuk birleştirici >'dir.

+1

Materyal Tasarımı Lite ile karşılaştım ve bunun şimdiye kadar karşılaştığım en garip CSS spagetti iğrençliği olduğunu söylemeliyim. Aklımda bazı insanların CSS kitaplığında böyle bir şey kullanmanın iyi bir fikir olacağını düşündüklerini söyleyemem. – Senthe

-3

Böyle bir özelliği zorlamak zorunda kalmamanız gerekirse, özgüllüğü kesmeniz gerekmez ... !important'u kullanın. Eğer sınıf adını kez daha tekrarlayın eğer

+0

Öneriniz için teşekkürler, ve büyük ihtimalle bunu kullanacağım, ama ... –

+0

sorumunun cevabını hala bilmiyorum, önemli bir şekilde kullanılmamalıdır. Gerçekten, özgüllük kullanımının başka bir yolu olmadığını düşünmelisiniz.Ancak o zaman kullanmalısınız! – brunoais

+0

Sınıfları birleştirmek, bir kesmek değil, özgüllüğü arttırmak için resmi CSS belirtimidir. '! Önemli' kullanarak noob durumu ve css bilgisizliği. Çok nadiren herkes kullanmalıdır! Önemli çünkü CSS özgüllüğü noktasını yener. Aynı mülkte "önemli" ilan eden 5 sınıfa sahip olduğunuzda, aklınızı nasıl buluyorsunuz? Ben sadece son bir çare olarak ya da diğer noobs korkunç css ile uğraşırken '' önemli '' kullanın ve onun tüm kütüphane – TetraDev

1

.qtxt.qtxt.qtxt en yüksek özgüllük olurdu ... Ancak

http://jsfiddle.net/nXBTp/1/

, bu durum yalnızca olduğuna örneğin başka seçici,:

http://jsfiddle.net/nXBTp/2/

+0

Thankyou yeniden yazmadan çalışması için tek yolu! :) Hangi tarayıcıdan merakı kullandın? Burada safari üzerinde çalışıyorum, firefox –

+0

'u test etmeye gidiyorum. En yeni Chrome, Firefox, Safari ve IE sürümlerinde test ettim. Her biri için aynı sonuçları aldım. – smilledge

+0

Bu davranış tarayıcıların amaçlanmıştır ve gereklidir. Referans için cevabımı görün. – BoltClock