2016-03-06 2 views
1

Я хочу, чтобы иметь возможность проверить два цвета для их контраста и испустить предупреждение, если контраст ниже определенного порога. Вот мой код:функция вызова без возвращаемого значения в Sass

@function contrast-check($color1, $color2, $threshold: 4.5) { 
    @if contrast($color1, $color2) < $threshold { 
    @warn 'contrast #{$contrast} between #{$color1} and #{$color2} too low!'; 
    } 
} 

Проблема в том, что я не могу назвать эту функцию нигде. Вот то, что я пробовал:

  • contrast-check(#fff, #000); - Ошибка: недопустимый CSS после того, как '...': ожидается 1 селектор или властвуй, был "Раст-чек (#fff ..."
  • $: contrast-check(#fff, #000); - Ошибка: Функция контрастная проверка не возвращает значение
  • * {test: contrast-check(#fff, #000);} - Ошибка: Функция контраст проверка не возвращает значение

Я мог бы преобразовать функцию к смешиванию Тогда можно было бы назвать его. как и предполагалось. Но mixins не могут использоваться из других функций.

Другим вариантом может быть возврат произвольного значения. Это будет работать, но также будет крайне хаки, потому что при каждом вызове функции вам придется присваивать это значение переменной throw-away.

Есть ли хороший способ сделать это?

+0

Возвращение 'null' в качестве произвольного значения может быть хорошим вариантом, поскольку любые свойства со значением' null' будут пропущены на выходе. – tobib

+0

Ошибка сообщает вам, что именно вы должны делать. Вы просто просите мнения на этот момент (и просить мнения не по теме). – cimmanon

+0

Cimmanon. Я совершенно уверен, что он может понять сообщение об ошибке, но не хочет использовать возвращаемое значение, потому что ничего не вернуть. Он спрашивает, есть ли лучший способ сделать это, и это общая проблема, которая обсуждалась на странице проблем SASS Github, поэтому это очень полезный и полезный вопрос. Прекратите троллинг тега SASS. Если у вас нет ничего полезного, чтобы внести свой вклад .... – jonhobbs

ответ

1

К сожалению, это невозможно сделать, обсуждение этого вопроса происходит на странице Git проекта.

https://github.com/sass/sass/issues/1348

Вы можете вернуть нуль из функции, но это, кажется, как будто создатели SASS просто не хочу, чтобы ты делал такого рода вещи, так лучше всего будет просто использовать подмешать, даже если вы не смешивая ничего. Я знаю, что это семантически неправильно, но ...

Это была проблема, которая заставила меня понять, что САСС просто не справился с задачей делать то, что мне нужно, и я сейчас пишу postcss, чтобы выполнить задание. Не знаю, будет ли у этого маршрута пробег для вас.

+0

Спасибо за ссылку! Я думаю, что аргумент, который функционирует без возвращаемого значения, не является общим случаем. – tobib

Смежные вопросы