2011-07-25 10 views
10

Genellikle tarayıcı yeteneklerini öğrenmek için modernizr kullanın. Aynı zamanda, css'yi daha okunabilir ve sürdürülebilir yapmak için LESS CSS kullanıyorum. DAHA AZ iç içe kurallarını kullanarak Ortak stil şuna benzer:Modernizr için yararlı LESS CSS sözdizimi

#header { 
    color: black; 

    .logo { 
    width: 300px; 
    color: rgba(255,255,255,.6); 
    &:hover { text-decoration: none } 
    } 
} 

Sonra ben modernizr stil sonbahar-geri kullanırsanız, önceki blok için bu metni ekleyin: Yani

.no-js #header, 
.no-rgba #header { 
    .logo { 
    color: white; 
    } 
} 

ben var gibi, görünüşe iki kod kodu ve her seferinde başka bir uyumluluk açısından bakmam gerektiğinde, braketlerin sayısı artacaktır. Bu kod daha az sürülebilirdir, çünkü her öğeye uygulanan tüm stilleri bulmanız gerekir ve iç içe geçmiş sınıfları kullanarak elde ettiğimiz fayda ortadan kalkar.

Soru: LESS sözdiziminde, bu gibi geri-destekleri içerecek ve .no-js ve diğer .no-smth sınıfları için yeni bir kod dalı başlatmanın bir yolu var mı?

cevap

20

Artık bu sorunu çözmek için & operatörünü kullanabilirsiniz. Aşağıdaki sözdizimi, less.js içinde lessphp ve dotless çalışması gerekir:

#header { 
    .logo { color:white; } 
    .no-rgba &, 
    .no-js & { 
     .logo { color:green; } 
    } 
} 
: Aşağıdaki sözdizimini kullanabilirsiniz verilen örneğin

a b { color:red; } 

Yani:

b { 
    a & { 
    color: red; 
    } 
} 

Bu derlenir.Bu

... hangi dilde derlenebilir:

#header .logo { 
    color:white; 
} 
.no-rgba #header .logo, 
.no-js #header .logo { 
    color:green; 
} 
+1

Çok havalı ... less.js buna gerçekten ihtiyacı var! Paylaşım için teşekkürler! – Jonathan

+1

Bu ana LESS projesinde olduğu gibi, PHP sürümü https://github.com/cloudhead/less.js/issues/127 – Chao

+1

yayında da görünüyor! Bunun olması gerektiğini biliyordum :-) 'daha az seçiciden atlamak' ya da 'daha az seçiciden kaçmak' ya da 'daha az seçicideki referans kökü' aramak istedim ama sonunda 'modernizr daha az' fark ettim ki şunu buldum: -) –

1

Yaklaşmayı düşünebilmemin en iyi yolu, bu geri dönüşler için ayrı bir .less dosyasına sahip olmaktır. Bence bu, yönetilmesi daha kolay olacaktı, bu yüzden birçok yerde .no-rgba için etrafa bakmanıza gerek yok.

.no-rgba { 
    #header {} 
    #footer {} 
} 

.no-js { 
    #header {} 
    #footer {} 
} 

Bunu istedim ama ugursuz oldugunu nasıl bir çözüm ile geliyor çalıştım.

+0

Bu sefer en iyi yaklaşım olduğunu düşünüyorum. Bir sonraki projemde denemeliyim. Daha iyi bir şey bulursan - bana bir kelime yaz. Denediğiniz için teşekkürler! – Bardt