Estás buscando la @content
directiva:
@mixin placeholder {
::-webkit-input-placeholder {@content}
:-moz-placeholder {@content}
::-moz-placeholder {@content}
:-ms-input-placeholder {@content}
}
@include placeholder {
font-style:italic;
color: white;
font-weight:100;
}
SASS Reference tiene más información, que se puede encontrar aquí:
http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#mixin-content
A partir de Sass 3.4, este mixin puede escribirse así para trabajar tanto anidado como no anidado:
@mixin optional-at-root($sel) {
@at-root #{if(not &, $sel, selector-append(&, $sel))} {
@content;
}
}
@mixin placeholder {
@include optional-at-root('::-webkit-input-placeholder') {
@content;
}
@include optional-at-root(':-moz-placeholder') {
@content;
}
@include optional-at-root('::-moz-placeholder') {
@content;
}
@include optional-at-root(':-ms-input-placeholder') {
@content;
}
}
Uso:
.foo {
@include placeholder {
color: green;
}
}
@include placeholder {
color: red;
}
Salida:
.foo::-webkit-input-placeholder {
color: green;
}
.foo:-moz-placeholder {
color: green;
}
.foo::-moz-placeholder {
color: green;
}
.foo:-ms-input-placeholder {
color: green;
}
::-webkit-input-placeholder {
color: red;
}
:-moz-placeholder {
color: red;
}
::-moz-placeholder {
color: red;
}
:-ms-input-placeholder {
color: red;
}
&
es necesario si desea poder obtener un selector comoinput::-webkit-input-placeholder
con el mixin, pero evitará que lo use en el nivel raíz. sassmeister.com/gist/9469073 . Ahora, si estás usando LibSass, esa es una historia diferente.Encontré que el enfoque dado por cimmanon y Kurt Mueller casi funcionó, pero que necesitaba una referencia principal (es decir, necesito agregar el prefijo '&' a cada prefijo de proveedor); Me gusta esto:
Yo uso el mixin así:
Con la referencia principal en su lugar, se genera el CSS correcto, por ejemplo:
Sin la referencia principal (&), se inserta un espacio antes del prefijo del proveedor y el procesador CSS ignora la declaración; que se parece a esto:
fuente
&
es totalmente necesario. Editó la respuesta popular para reflejar esto.::placeholder
propiedad oficial ahora, por lo que recomiendo agregar esto en la parte superior:&::placeholder {@content}
Esto es para sintaxis abreviada
úsalo como
fuente
¿Por qué no algo como esto?
Utiliza una combinación de listas, iteración e interpolación.
fuente
Para evitar errores de 'Bloque no cerrado: CssSyntaxError' que se lanzan desde los compiladores sass, agregue un ';' hasta el final de @content.
fuente
Yo uso exactamente el mismo marcador de posición sass mixin que escribió NoDirection. Lo encuentro en la colección sass mixins aquí y estoy muy satisfecho con él. Hay un texto que explica una opción mixins más.
fuente