Você está procurando a @content
diretiva:
@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;
}
A Referência do SASS tem mais informações, que podem ser encontradas aqui:
http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#mixin-content
A partir do Sass 3.4, esse mixin pode ser escrito assim para trabalhar tanto aninhado quanto não aninhado:
@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;
}
Resultado:
.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;
}
&
é necessário se você quer ser capaz de obter um seletor comoinput::-webkit-input-placeholder
com o mixin, mas vai impedi-lo de usá-lo no nível de raiz. sassmeister.com/gist/9469073 . Agora, se você estiver usando o LibSass, essa é uma história diferente.Eu achei a abordagem dada por cimmanon e Kurt Mueller quase funcionou, mas eu precisava de uma referência principal (ou seja, eu preciso adicionar o prefixo '&' a cada prefixo do fornecedor); como isso:
Eu uso o mixin assim:
Com a referência pai no local, o CSS correto é gerado, por exemplo:
Sem a referência pai (&), um espaço é inserido antes do prefixo do fornecedor e o processador CSS ignora a declaração; que se parece com isso:
fonte
&
é totalmente necessário. Editou a resposta popular para refletir isso.::placeholder
propriedade oficial agora, então eu recomendo adicioná-lo na parte superior:&::placeholder {@content}
Isto é para sintaxe abreviada
use-o como
fonte
Por que não algo assim?
Ele usa uma combinação de listas, iteração e interpolação.
fonte
Para evitar que erros 'Unclosed block: CssSyntaxError' sejam lançados de compiladores sass, adicione um ';' até o final de @content.
fonte
Eu uso exatamente o mesmo espaço reservado sass mixin que a NoDirection escreveu. Eu o encontro na coleção sass mixins aqui e estou muito satisfeito com isso. Há um texto que explica mais uma opção de mixins.
fonte