2014-05-19 6 views
10

Ich möchte einen Platzhalter Mixin wie folgt erstellen. Dies kann jedoch in der LESS-Version 1.7.0 nicht kompiliert werden.CSS WENIGER Platzhalter Mixin

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

Diese nicht kompilieren, weil es versucht, fehlerhafte CSS zu generieren. – helderdarocha

Antwort

13

Eingangs Platzhalter Selektoren sind, nicht Eigenschaften, und so ist ihre CSS-Syntax placeholder { ... }, nicht placeholder: ..., die Sie erzeugen wollen.

Wenn Sie beheben, dass:

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

Es kompiliert, und wenn Sie es nennen:

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

es wird diese CSS erzeugen:

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

(ich gerade inbegriffen border: als Beispiel für eine generische CSS-Eigenschaft, unabhängig von der tatsächlichen Auswirkung auf ein Eingabeobjekt.

+0

Dies funktioniert und verdeutlicht die Verwendung des Parameters @arguments. Dies half mir, zu meinem endgültigen Mix zu kommen, der Platzhalterregeln erlaubt. –

2

Ihnen fehlen die geschweiften Klammern um die Platzhalterselektoren.

Die Stile sollte wie folgt lauten:

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

Mixin ermöglicht Platzhalter-CSS-Regeln.

.placeholder(@rules) { 

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

Beispiel Nutzung:

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

welche weniger Version verwenden Sie - es kompiliert nicht für mich –

+2

funktioniert für mich mit 'lessc-v' 2.0.0. Ampersand- und Pass-In-Regeln machen diesen Weg nützlicher als die akzeptierte Antwort. – amwinter

+0

Danke für die nette Syntax! Welchen Zweck haben die Parens nach '@rules()'? Ich dachte, Parens würden nur für parametrische Mixins verwendet? – ptim