首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从CSS中删除不需要的@charset "UTF-8“(在编译SASS文件后显示)

如何从CSS中删除不需要的@charset "UTF-8“(在编译SASS文件后显示)
EN

Stack Overflow用户
提问于 2014-05-20 20:50:22
回答 2查看 5.8K关注 0票数 12

快速总结一下我们的问题:

我们有一个@ compilation

  • One声明放在我们编译的CSS文件前面,我们的SCSS文件没有这个声明,所以它是在的时候添加的,我的同事说,如果我们有这个声明,我们的网站在Safari中中断

SASS文档说:

输出编码

通常,Sass将尝试使用与输入样式表相同的编码对输出样式表进行编码。为此,输入样式表必须有一个@charset声明;否则,Sass将默认将输出样式表编码为UTF-8。此外,如果不是纯ASCII,它将在输出中添加@charset声明。

当其他带有@charset声明的样式表被@imported时,Sass会将它们转换成与主样式表相同的编码。

来源:http://sass-lang.com/documentation/file.SASS_REFERENCE.html

有没有人知道防止SASS添加它的方法?

有谁知道我们如何在所有的SCSS文件上检查“如果不是普通的ASCII”假设?

还有其他想法吗?

EN

回答 2

Stack Overflow用户

发布于 2018-08-17 07:11:06

更重要的是,我最近遇到了这个问题。我们使用gulp-sass来编译我们的CSS。据我所知,如果你的CSS上有非ascii字符,gulp-sass (使用节点-sass)没有提供任何方法来阻止@charset "UTF-8";。这对我们来说是个问题,因为我们想对AMP页面使用相同的CSS。AMP页面上不允许@charet。请参阅此问题。

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

我们的解决方案

我所做的是添加一个简单的gulp任务,以便从编译后的CSS中删除编码属性。

代码语言:javascript
复制
gulp.task('amp-sass-clean-up', ['amp-sass' /*Add gulp-sass task that compiles CSS*/], function() {
    return gulp
        .src(['/public/amp.min.css' /*This is the full path and file name to where your final css is*/], {cwd: '/public' /*This is the full path to where final css file is*/)
        .pipe(replace('@charset "UTF-8";', ''))
        .pipe(gulp.dest('/public' /*This is the full path to where final css file is*/);
});
票数 4
EN

Stack Overflow用户

发布于 2015-04-12 07:07:48

据我所知,@charset对所有浏览器都有很好的支持,另请参阅:https://developer.mozilla.org/en-US/docs/Web/CSS/@charset。只有在CSS文件开头没有声明@charset时,才会出现“旧”问题。另请参阅:https://github.com/Compass/compass/issues/211

当你使用grunt编译你的SASS文件时,你可以在编译任务之后运行一个额外的任务来删除@charset声明。https://github.com/erickrdch/grunt-string-replace可以代替你。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23760355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档