2012-02-05 19 views
14
ben az css ile aşağıdaki gibi bir şey yapabileceğini merak ediyorum

: Bu eğer orada işaret etmek gerekenler sadece bir örnek, Of-kursCSS-Az sınıf sözde sınıfı ile sınıf uzatmak

.btn { 
    color : black; 
} 

.btn:hover { 
    color : white; 
} 

.btn-foo { 
    .btn; 
    &:hover { 
    .btn:hover; 
    } 
} 

İhtiyaç duyduğum her yerde :hover sözde sınıfının özelliklerini yeniden yazmaktan kaçınmak için sözde sınıfını genişletmenin herhangi bir yoludur. Bunun için bir karışma yaratabileceğimi biliyorum ama bunu önleyebilir miyim diye merak ediyorum.

Teşekkür

cevap

30

GÜNCELLEME: Harici dosyalarda değişiklik yapamaz , sadece seçicileri yeniden tanımlamak ve eksik durumlarını ekleyin: Şimdi

.btn { 
    // not adding anything here, won't affect existing style 
    &:hover { 
    // adding my own hover state for .btn 
    background: yellow; 
    ... 
    } 
} 

// this will make your foo button appear as in external style 
// and have the :hover state just as you defined it above 
.btn-foo { 
    .btn; 
} 

iyi? :)


Sen sözde sınıfını gerekmez. Sadece çalışacaktır :)

bu deneyin:

.btn { 
    background: yellow; 

    &:hover { // define hover state here 
    background: green; 
    } 
} 

button { 
    .btn; 
} 

gelme durumuna dahil tanımlandı her ne devralır Oluşturduğunuz her öğesi. Bence LESS'in en şaşırtıcı özelliklerinden biri.

Bu yardımcı olur umarım. Az 1.4.0 yılında

+0

Merhaba, Cevabınız için teşekkür ederim, bunun işe yaradığını biliyorum, bu yüzden benim örneğimde 'fakat: hover'im yok ama tanımlanmış bir tanım var. Teşekkürler – panosru

+0

emin, ama .. ayırmak için mantıklı mı (lesscss kullanırken)? – bzx

+0

Hayır, sence bunu yapmaz ama satıcının daha az dosyalarına dokunmak istemediğiniz durumlar vardır :) – panosru

6

Bu (1.4.1?):

.btn { 
    color : black; 
} 

.btn:hover { 
    color : white; 
} 

.btn-foo:extend(.btn all) { 
} 

bu genişler:

.btn, 
.btn-foo { 
    color: black; 
} 
.btn:hover, 
.btn-foo:hover { 
    color: white; 
} 

olsa dikkatli olun, bu:

.btn { 
    color : black; 
} 

.btn:hover { 
    color : white; 
} 

.abc .btn { 
    margin: 2px; 
} 

.btn-foo:extend(.btn all) { 

} 

Bunu verecek:

.btn { 
    color : black; 
} 

.btn:hover { 
    color : white; 
} 

.abc .btn { 
    margin: 2px; 
} 

.btn-foo:extend(.btn all) { 

} 

SASS'e yarım saatten fazla bakmadım, ancak sonraki durumun varsayılan (veya yalnızca) @extend davranışı olduğuna inanıyorum.

+0

Bu henüz herhangi bir yerde belgelenmiş mi? Resmi sitede bulamıyorum. – ehdv

+0

@ehdv Evet. Şimdi uzatmak en azından Github sayfasında belgelenmiştir. Mesele şu ki, bu belge onun geliştirilmesinin çok gerisindedir. Tartışmalara göz atmanız gerekebilir (https://github.com/less/less.js/issues?labels=ReadyForImplementation&milestone=&page=1&state=open gibi) – John

İlgili konular