2014-05-19 34 views
10

Aşağıdaki gibi bir yer tutucu karışımı oluşturmak istiyorum. Ancak, bu LESS sürüm 1.7.0'da derleme başarısız olur.CSS LESS Yer Tutucu Karıştırıcı

.placeholder(...) { 
    ::-webkit-input-placeholder: @arguments; 
    :-moz-placeholder: @arguments; 
    ::-moz-placeholder: @arguments; 
    :-ms-input-placeholder: @arguments; 
} 
+0

o bozuk biçimli CSS oluşturmak çalışması nedeniyle derleme değil. – helderdarocha

cevap

13

Girdi yer tutucular seçiciler, değil nitelik vardır ve böylece onların CSS sözdizimi, oluşturmak çalışıyoruz placeholder: ...placeholder { ... } değildir.

Bunu düzeltmek ise:

.placeholder(...) { 
    ::-webkit-input-placeholder {border:@arguments} 
    ::-moz-placeholder {border:@arguments} 
    :-ms-input-placeholder {border:@arguments} 
} 

O derlemek olacak ve bunu çağırdığınızda:

::-webkit-input-placeholder { 
    border: solid 1px #0000ff; 
} 
::-moz-placeholder { 
    border: solid 1px #0000ff; 
} 
:-ms-input-placeholder { 
    border: solid 1px #0000ff; 
} 

(Sadece dahil:

.placeholder(solid; 1px; blue;); 

bu CSS üretecektir border:, bir giriş nesnesindeki gerçek etkisinden bağımsız olarak genel bir CSS özelliği örneğidir)

+0

Bu, @arguments parametresinin kullanımını açıklar ve açıklar. Bu, herhangi bir yer tutucu kuralına izin veren son karışımımı elde etmeme yardımcı oldu. –

2

Sen tutucu seçicileri etrafında süslü parantez eksik. aşağıdaki gibi

stilleri olmalıdır:

.placeholder(@color) { 
    ::-webkit-input-placeholder { 
     color: @color; 
    } 
    :-moz-placeholder { 
     color: @color; 
    } 
    ::-moz-placeholder { 
     color: @color; 
    } 
} 
55

Mixin, herhangi bir yer tutucu css kurallarına izin verir.

.placeholder(@rules) { 

    &::-webkit-input-placeholder { 
     @rules(); 
    } 
    &:-moz-placeholder { 
     @rules(); 
    } 
    &::-moz-placeholder { 
     @rules(); 
    } 
    &:-ms-input-placeholder { 
     @rules(); 
    } 
} 

Örnek kullanım:

.placeholder({ 
    color: #0000FF; 
    text-transform: uppercase; 
}); 
+1

hangi LESS sürümünü kullanıyorsunuz - bu benim için derleme yapmıyor –

+2

benim için "lessc -v" 2.0.0 ile çalışıyor. Ve işareti ve geçiş kuralları, bu şekilde kabul edilen yanıttan daha kullanışlı hale getirir. – amwinter

+0

Güzel sözdizimi için teşekkürler! Parenler @rules() 'den sonra hangi amaca hizmet ediyor? Parenslerin sadece parametrik karışımlar için kullanıldığını düşündüm. – ptim