SASS добавляет к юникод-контенту обратную косую черту (\)
проблема
Я пытаюсь создать некоторые символы Юникода после компиляции моего *.scss файла.
В качестве примера у меня есть следующее (SCSS):
.element:after {
content: "\a0";
}
Когда файл скомпилирован, он выводит следующее (CSS):
.element:after {
content: "\\a0";
}
Обратите внимание на дополнительную нежелательную обратную косую черту (\).
Попытка решения № 1
Я попробовал решение здесь: Sass: Unicode escape не сохраняется в файле.css, который предлагает ввести следующую функцию:
@function unicode($str) {
@return unquote("\"")+unquote(str-insert($str, "\\", 1))+unquote("\"")
}
И используя его так (SCSS):
.element:after {
content: unicode("a0");
}
Тем не менее, это приводит к следующему (CSS)
.element:after {
content: "\\" ")+unquote(str-insert($str, " \\\\ ", 1))+unquote(" \\ "";
}
Обратите внимание, это даже не вызывает функцию, как предполагалось. Это почему?
Подробности проекта
Я использую эти библиотеки в Maven:
<dependency>
<groupId>net.jawr</groupId>
<artifactId>jawr-core</artifactId>
<version>3.9</version>
</dependency>
<dependency>
<groupId>net.jawr.extensions</groupId>
<artifactId>jawr-spring-extension</artifactId>
<version>3.9</version>
</dependency>
<dependency>
<groupId>com.darrinholst</groupId>
<artifactId>sass-java-gems</artifactId>
<version>3.4.20.0</version>
</dependency>
<dependency>
<groupId>org.jruby</groupId>
<artifactId>jruby-core</artifactId>
<version>9.1.5.0</version>
</dependency>
<dependency>
<groupId>org.jruby</groupId>
<artifactId>jruby-stdlib</artifactId>
<version>9.1.5.0</version>
</dependency>
Временное решение
Не используйте юникоды в SCSS. Вместо этого используйте Font Awesome в HTML (сохраняя Font Awesome в файле CSS).
1 ответ
У меня была такая же проблема при попытке использовать собственный шрифт значков. Решение, которое я нашел, - это создание миксина, который выглядит следующим образом:
@mixin class-for-icon($name, $code) {
.icon-#{$name}::before {
content: unquote("\"\\#{$code}\"");
}
}
И тогда я могу использовать это так:
@include class-for-icon('myIcon', 'e1ff');
/* generates */
.icon-myIcon::before {
content: "\e1ff";
}
Я использую node-sass 4.5.3 для компиляции моих файлов sass в css, и это работает хорошо (в настоящее время я использую его в работе над несколькими проектами)
Надеюсь это поможет!