指南针不要编译@charset规则

时间:2014-03-22 03:57:33

标签: sass compass-sass

我的_base.scss部分有@charset "utf-8"规则,当我在主文件@charset规则中导入_base.scss时,不编译。 我尝试@viewport {width:device-width;}并且它编译得很好,但@charset没有。知道问题在哪里吗?

是的,这是我的_base.scss部分中的第一个规则,我尝试其他CSS @rules并且它们工作正常,但@charset不想在.css文件中编译。

2 个答案:

答案 0 :(得分:5)

好的,我花了一些时间来解决这个问题。这是我认为是一个bug,虽然它可能被认为是一个真正的"功能"在SASS内。

因此,即使您使用以下命令在SASS文件中指定utf-8编码:

@charset "UTF-8";

...如果您不使用任何非ascii字符,那么它实际上会删除字符集定义。目前(据我所知)在任何SASS发行版中都没有解决这个问题 - 我看起来很难。

因此,为了强制将charset定义呈现给输出.css文件,我添加了以下包含非ascii字符的虚拟类,并使其立即开始吐出charset:

//In your main .scss file - first line, first character:
@charset "UTF-8";
[more code...]

然后,在SASS编译的任何文件中,添加以下规则:

.force-UTF-8{
    content: "¡";
}

您可以将规则命名为您想要的任何名称,只要它是非ascii字符,您就可以将该反转感叹号更改为您想要的任何其他内容。您可以通过按住" alt"来键入该字符(至少在Windows上)。和击中" 0-1-6-1"在小键盘上。只是谷歌非ascii字符,你应该能够搞清楚。

我知道这不太理想,但它确实有效。

答案 1 :(得分:0)

根据@charset的{​​{3}},它看起来必须位于样式表的第一行:

  

添加@charset" encoding-name&#34 ;;在样式表的开头   (在任何空格或评论之前)和萨斯将其解释为   给定编码。请注意,无论使用何种编码,都必须如此   可转换为Unicode。