Заполнитель Mixin SCSS / CSS



Я пытаюсь создать микширование для заполнителей в sass.



Это миксин, который я создал.



@mixin placeholder ($css) {
::-webkit-input-placeholder {$css}
:-moz-placeholder {$css}
::-moz-placeholder {$css}
:-ms-input-placeholder {$css}
}


вот как я хотел бы включить mixin:



@include placeholder(font-style:italic; color: white; font-weight:100;);




это возможно?

611   6  

6 ответов:

Вы ищите

Я нашел подход к cimmanon и Курт Мюллер почти работал, но мне нужна была родительская ссылка (т. е. мне нужно добавить префикс ' & ' к каждому префиксу поставщика); вот так:

@mixin placeholder {
  &::-webkit-input-placeholder {@content}
  &:-moz-placeholder           {@content}
  &::-moz-placeholder          {@content}
  &:-ms-input-placeholder      {@content}  
}

Я использую миксин вот так:

input { @include placeholder {
    font-family: $base-font-family;
    color: red;
}}

С родительской ссылкой на месте, то правильный css генерируется, например:

input::-webkit-input-placeholder {
  font-family: Constantia, "Lucida Bright", Lucidabright, "Lucida Serif", Lucida, "DejaVu Serif", "Liberation Serif", Georgia, serif;
  color: red; }

без родительской ссылки (&), затем пробел вставляется перед префиксом поставщика и CSS процессор игнорирует объявление; Это выглядит так:

input ::-webkit-input-placeholder {
  font-family: Constantia, "Lucida Bright", Lucidabright, "Lucida Serif", Lucida, "DejaVu Serif", "Liberation Serif", Georgia, serif;
  color: red; }

Это сокращенный синтаксис

=placeholder
  &::-webkit-input-placeholder
    @content
  &:-moz-placeholder
    @content
  &::-moz-placeholder
    @content
  &:-ms-input-placeholder
    @content

использовать его как

input
  +placeholder
    color: red

почему не что-то вроде этого?

Он использует комбинацию списков, итерация и интерполяции.

@mixin placeholder ($rules) {

  @each $rule in $rules {
    ::-webkit-input-placeholder,
    :-moz-placeholder,
    ::-moz-placeholder,
    :-ms-input-placeholder {
      #{nth($rule, 1)}: #{nth($rule, 2)};
    }  
  }
}

$rules: (('border', '1px solid red'),
         ('color', 'green'));

@include placeholder( $rules );

чтобы избежать ошибок "Unclosed block: CssSyntaxError", которые выбрасываются из компиляторов sass, добавьте"; " в конец @content.

@mixin placeholder {
   ::-webkit-input-placeholder { @content;}
   :-moz-placeholder           { @content;}
   ::-moz-placeholder          { @content;}
   :-ms-input-placeholder      { @content;}
}

Я использую точно такой же заполнитель Sass mixin, как и nodirection. Я нахожу его в коллекции Sass mixins здесь и я очень доволен. Есть текст это объясняет вариант mixins больше.

Comments

    Ничего не найдено.