Sass - импортные переменные, которые будут использоваться в mixin

Is there a way to import external variables into mixins?
I would like to generate a variablename from a mixin argument
and then call it from an external source. Does this make any sense?


<Сильный> variables.scss

/* Striped status bar variables ******************************************/

$greyFirstGradientStartColor: #999999;
$greyFirstGradientEndColor: #d3cfcf;
$greySecondGradientStartColor: #ababab;
$greySecondGradientEndColor: #595959;

<Сильный> mixins.scss

@import variables.scss

[...]

@mixin gradient-repeating($color, $deg, $firstWidth, $space, $secondWidth){

  background-image:
    repeating-linear-gradient(
      $deg,
      $(#{$color}FirstGradientStartColor),
      $(#{$color}FirstGradientEndColor) $firstWidth+px,
      $(#{$color}SecondGradientStartColor) ($firstWidth+$space)+px,
      $(#{$color}SecondGradientStartColor) $secondWidth+px
  );
}

<Сильный> мой магистральный-CSS-file.scss

@import variables.scss;  
@import mixins.scss;  

[...]

@include gradient-repeating(grey, -45, 20, 0, 20);  
3
nl ja de
Вы пробовали это, и это не сработало? Или какова ваша фактическая проблема? Я не вижу причин, почему это не должно быть работа .
добавлено автор Christoph, источник
Это было бы удивительно, если это было возможно. Пожалуйста, напишите, если вы найдете решение
добавлено автор DMTintner, источник

1 ответы

Нет. Переменные переменные не существуют в Sass. Обычно используются списки или списки списков.

Ваш mixin может быть написан следующим образом:

$grey-gradient: #999999 #d3cfcf, #ababab #595959;

@mixin gradient-repeating($color, $deg, $firstWidth, $space, $secondWidth){
    $firstColor: nth($color, 1);
    $secondColor: nth($color, 2);
    background-image:
        repeating-linear-gradient(
          $deg,
          nth($firstColor, 1),
          nth($firstColor, 2) $firstWidth+px,
          nth($secondColor, 1) ($firstWidth+$space)+px,
          nth($secondColor, 1) $secondWidth+px
        );
}

.foo {
    @include gradient-repeating($grey-gradient, -45, 20, 0, 20);
}
2
добавлено
Для моего собственного кодирования я бы написал весь градиент как переменную: $ gray-gradient: -45deg, # 999999, # d3cfcf 20px, #ababab 20px + 0, # 595959 20px; .
добавлено автор cimmanon, источник
Это умно, я не был знаком с использованием списков в Sass. Использование списков, похоже, создает небольшую неясность, но я бы сказал, что удобство использования компенсирует это. Я буду использовать это решение, если я получу «ОК» от моего партнера по кодированию, чтобы изменить шаблон проекта :) Спасибо! (действительно!)
добавлено автор Amsvartner, источник
Верстка сайтов HTML/CSS/JS/PHP
Верстка сайтов HTML/CSS/JS/PHP
3 439 участник(ов)

Правила группы: напишите !rules в чате. Группа Вк: vk.com/web_structure Freelancer: @web_fl Веб Дизайн: @dev_design Маркетолог: @topmarkening Автор: @M_Boroda

CSS — русскоговорящее сообщество
CSS — русскоговорящее сообщество
1 502 участник(ов)

Сообщество любителей CSS Возникли проблемы с CSS? – пиши сюда, обсудим и предложим самое лучшее решение Работа: @css_ru_jobs Правила: https://teletype.in/@css_ru/r1EWtQ2w7 Приходите в наши чаты @javascript_ru и @frontend_ru Флуд: @css_flood

Чат — Типичный Верстальщик
Чат — Типичный Верстальщик
1 080 участник(ов)

Основной канал: @tpverstak Обратная связь: @annblok Все ссылки на соц.сети проекта: http://taplink.cc/tpverstak ПРАВИЛА ЧАТА — https://teletype.in/@annblok/BygPgC3E7

Веб-Технологи: UI/UX, Вёрстка, Фронтенд
Веб-Технологи: UI/UX, Вёрстка, Фронтенд
167 участник(ов)

Всё про веб-дизайн и вёрстку. А также: HTML, CSS, флекс и бутстрапы, шаблонизаторы, препроцессоры, методологии, аглифаеры, улучшаторы и обфускаторы. Обсуждаем темы юзабилити, устраиваем А/В тесты лендингов, и проводим аудит.

DTP :: @DTPublish
DTP :: @DTPublish
147 участник(ов)

Обсуждаемые темы: полиграфия, препресс, верстка, дизайн, иллюстрации, скрипты, плагины. Канал - @DTPublishing

css_jobs
css_jobs
26 участник(ов)

Чат для вопросов по css и html: @css_ru Флуд: @css_flood Канал с вакансиями и резюме: @css_jobs_feed

css_флуд
css_флуд
10 участник(ов)