Вы ищете @content
директиву:
@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 содержит дополнительную информацию, которую можно найти здесь:
http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#mixin-content
Начиная с Sass 3.4, этот миксин может быть написан так, чтобы он работал как вложенным, так и невложенным:
@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;
}
}
Использование:
.foo {
@include placeholder {
color: green;
}
}
@include placeholder {
color: red;
}
Вывод:
.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;
}
&
необходимо, если вы хотите иметь селектор, как в случаеinput::-webkit-input-placeholder
с миксином, но он не позволит вам использовать его на корневом уровне. sassmeister.com/gist/9469073 . Теперь, если вы используете LibSass, это другая история.Я обнаружил, что подход, предложенный cimmanon и Куртом Мюллером, почти работает, но мне нужна родительская ссылка (т.е. мне нужно добавить префикс '&' к каждому префиксу поставщика); как это:
Я использую миксин так:
При наличии родительской ссылки создается правильный css, например:
Без родительской ссылки (&) перед префиксом поставщика вставляется пробел, и обработчик CSS игнорирует объявление; это выглядит так:
источник
&
совершенно необходимо. Отредактировал популярный ответ, чтобы отразить это.::placeholder
теперь поддерживают официальное свойство, поэтому я бы рекомендовал добавить его вверху:&::placeholder {@content}
Это для сокращенного синтаксиса
используйте это как
источник
Почему не что-то подобное?
Он использует комбинацию списков, итераций и интерполяции.
источник
Чтобы избежать ошибок типа «Незакрытый блок: CssSyntaxError» компиляторами sass добавьте «;» до конца @content.
источник
Я использую точно такой же заполнитель sass mixin, как написал NoDirection. Я нахожу его в коллекции Sass Примеси здесь , и я очень доволен этим. Есть текст, который больше объясняет опции миксинов.
источник