Примечание:SCSS: Отправить атрибут и значение для функции
Я новичок в веб-разработке и объектно-ориентированном программировании. Я новичок в SCSS и еще не понял прочного понимания синтаксиса. У меня есть общее представление о том, как использовать functions in SCSS.
Позвольте мне начать с определения результата, которого я хочу достичь.
_body.scss
body {
background-color: red;
}
Теперь я знаю, что если бы я хотел, чтобы получить этот результат Javascript я мог бы:
Вариант 1: написать строку HTML-кода и заменить существующий HTML тэг.
Не собираюсь кодировать это, поскольку это грязный способ записи Javascript, но по существу используя метод document.write().
Вариант 2: использовать «SetAttribute()» метод
// assuming <head> and <body> are the only tags within <html>
var bodyTag = document.firstElementChild.lastElementChild;
bodyTag.setAttribute("bgcolor", "red");
Я знаю, что есть дополнительные способы сделать это в Javascript, но для этого примера, я остановлюсь на этих двух.
Поэтому я хочу создать функцию SCSS, которая может возвращать как атрибут, так и значение.
_body.scss (псевдокод пример строки)
@function makeAttribute($attribute, $value)
{
@return $attribute + ":" + $value + ";";
}
body {
makeAttribute(background-color, red);
}
Я до сих пор найти встроенную функцию, которая решает эту проблему (по аналогии с «SetAttribute()» метод в JavaScript), или на примере строки выше ,
Я знаю, что функции могут принимать: число, строка, bool, цвет, список, карта или нуль; но я не знаю, является ли атрибут подходящим для любого из этих типов значений (например: строка).
Мне кажется, что статья: Bringing Configuration Objects To Sass может объяснить, что я пытаюсь сделать, но мне трудно понять эту статью (так что это может быть не объяснение для решения).
Моя конечная цель - создать функцию, которая будет писать следующий css. Раньше я не упоминал о поддержке браузера, поскольку он добавляет еще один уровень сложности, который может быть или не быть легко объяснен.
body {
background-color: red;
-o-background-color: red;
-ms-background-color: red;
-moz-background-color: red;
-webkit-background-color: red;
}
Вы вводите в заблуждение CSS, Javascript и HTML - они очень разные языки, а функции setAttribute не имеют большого смысла в CSS, так как «background: red;» _is по существу setAttribute_. Не пытайтесь перевести свой CSS с Javascript или даже наоборот - все будет запутываться быстро. – somethinghere
Да, я просто приводил примеры Javascript и HTML. Я никоим образом не предлагал взять код с одного языка и поместить его в другой. Я пытаюсь выяснить, имеет ли SASS/SCSS либо встроенные методы/функции, либо способ записи пользовательской функции для получения желаемого результата. –
Хорошо, вот хорошая стартовая статья: http://thesassway.com/advanced/pure-sass-functions - и я поддержал ответ ниже, поскольку он также объясняет предпосылку. – somethinghere