SASS编译保留符号
当我使用sass 3.4.1将fontawesome.scss编译为css文件时SASS编译保留符号,sass,font-awesome,Sass,Font Awesome,当我使用sass 3.4.1将fontawesome.scss编译为css文件时 $fa-var-music: "\f001"; .#{$fa-css-prefix}-music:before { content: $fa-var-music; } 它被编译为 .fa-music:before { content: ""; } 由于我在项目中主要使用Win1252编码,我想知道如何在css文件中保留“\f001”。为什么SASS要重写?摘自SASS 3.4.0: Sass现在遵循CS
$fa-var-music: "\f001";
.#{$fa-css-prefix}-music:before { content: $fa-var-music; }
它被编译为
.fa-music:before {
content: "";
}
由于我在项目中主要使用Win1252编码,我想知道如何在css文件中保留“\f001”。为什么SASS要重写?摘自SASS 3.4.0:
Sass现在遵循CSS语法级别3规范来确定样式表的编码。此外,它现在只发出UTF-8 CSS,而不尝试匹配源编码
现在没办法用老方法了
论SASS回购
对我来说,回滚到SASS 3.3.14修复此问题如果您使用Gulp编译CSS,您可以安装此Gulp插件,它将自动为您修复此问题。无需更改Sass代码
var-sass=require('gulp-sass');
var sassUnicode=require('gulp-sass-unicode');
gulp.task('sass',function(){
gulp.src('style.scss'))
.pipe(sass())
.pipe(sassUnicode())/\f001会在代码点f001(十六进制)处生成字符,这在Windows-1252中无效。您要生成的字符是什么?不知道原因,但值得注意的是,Sass在执行此操作时也会注入字符集信息:@charset“UTF-8”
(请参阅:)@ljacqu我自己不想生成字符。我想使用font awesome提供的字符。我担心的是,当文件包含unicode字符时,某些浏览器可能无法正确呈现fa符号。因为SASS正确输出@charset“UTF-8”;
在第一行,只要生成的文件没有与其他css文件合并,并且不是第一个,就没有真正的问题。我只是简单地做了$fatag:“\f02b”
(添加引号),这就为我解决了问题。无需恢复到3.3.14。我使用的是4.2.0。我添加了@charset“UTF-8”在_variables文件的顶部,所有的UTF/PUA字符代码都已经在双引号中了,但我仍然得到了相同的时髦形状。有人有任何进一步的信息吗?顺便说一句,我运行了一个旧版本的yui压缩器。同时它也发生了变化。@charset“UTF-8”
现在被拉到组合压缩css文件的最顶端,因此被正确解析和使用。
var sass = require('gulp-sass');
var sassUnicode = require('gulp-sass-unicode');
gulp.task('sass', function(){
gulp.src('style.scss')
.pipe(sass())
.pipe(sassUnicode()) // << This line is what does the magic
.pipe(gulp.dest( "css/" ));
});