2011-03-14 10 views
7

Pusula çerçevesi ve plan/kılavuz bağımlılığı aracılığıyla saa kullanıyorum.CSS 3 medya sorgusu içinde SASS mantığı nasıl kullanılır?

// /src/partials/_base.scss 
$blueprint-grid-columns: 18; 

@media screen and (max-width: 1024px){ 
    // If screen res is 1024 or lower, then set grid width to 46px 
    $blueprint-grid-width: 46px; 
} 
@media screen and (max-width: 1280px){ 
    $blueprint-grid-width: 50px; 
} 
@media screen and (max-width: 1600px){ 
    $blueprint-grid-width: 76px; 
} 

$blueprint-grid-margin: 8px; 

Bu /stylesheets/screen.css te derler: Öyle gibi bir medya sorgu içeren bir sütunun genişliğini ayarlamak mümkün istiyorum

@media screen and (max-width: 1024px) {} 
@media screen and (max-width: 1280px) {} 
@media screen and (max-width: 1600px) {} 

Ama değerler screen.css geri kalanı buna göre ayarlanmamıştır. Tahmin ediyorum ki, blueprint-grid-width değişkeni derleme zamanında okunduğundan, zamandan değil.

Ekran çözünürlüğünü almak için medya sorgusu kullanarak farklı ızgara genişliklerine sahip bir düzen çıktı almanın bir yolu var mı?

İlgili github sorunu: Ben de aynı şeyi anlamaya çalışıyorum ama istediğiniz şekilde çalıştığından bu almak için iyi bir yol olarak görünmüyor
https://github.com/chriseppstein/compass/issues/302

+0

Şimdiye kadar, aklıma gelen tek çözüm 3 ayrı stil derlemek etmektir - 1 Her ekran çözünürlüğü için. Ardından çıktı css'sini medya sorguları içindeki bir stil sayfasına kopyalayıp yapıştırın. Bu berbattı. – Adam

+0

Ruby ile daha becerikli olsaydım, derleyiciyi üç stil sayfasını bir araya getirecek şekilde özelleştirirdim. – Adam

cevap

5

Bu, SASS'ta bir hataydı. Bu sürümü 3.1.0 olarak düzeltildi ediyor:

http://sass-lang.com/docs/yardoc/file.SASS_CHANGELOG.html#310

+1

Bunu kendim yapmaya çalışıyorum ve yine de anlayamıyorum dışarı. Değişim sürecinin hangi kısmının açıkça bu düzeltmeyi ifade ettiğini işaret edebilir misiniz? Teşekkürler! – sguha

+0

Nereye yazıyorsa bakın: @import şimdi CSS veya medya kuralları içinde kullanılabilir. İçe aktarılan dosya, kuralın içine yerleştirilmiş gibi ele alınır. Karışımlara sahip dosyalar iç içe bağlamlarda içe aktarılamaz. İşte şimdi nasıl yapacağımın bir bağlantısı: http://jsfiddle.net/9bdRp/ – Adam

2

. Dediğin gibi, değişkenler derleme zamanında ayarlanıyor, çalışma zamanı değil, bu yüzden zor.

@media screen and (max-width: 1024px) { 
    $blueprint-grid-width: 46px; 
    @import 'blueprint'; 
    // do everything else you need to with this size 
} 

Ama sonra çalıştırmak istediğiniz her medya sorgu için Blueprint sıfırlanması aynı, kaba kuvvet tür yapmak olurdu: Ben böyle bir şey yapabileceğini düşünüyorum.

+1

Bunu denediğimde hatayı alıyorum: hata src/screen.scss (Satır 3: İçe aktarım yönergeleri yalnızca bir belgenin kökünde kullanılabilir.) – Adam