我已经阅读了许多关于在sass中导入sass文件的文章,但我似乎无法绕过它。似乎有很多不同的方法。
我试过复制一个看起来像这样的fellas设置:
global
- style.scss
Components
- buttons.scss
- colors.scss
- fonts.scss
- etc.
Utils
- normalize.scss
所以,让我们说这是我的设置。有人说我应该用下划线命名每个scss文件:_buttons.scss
而其他人说不要这样做。
如果我在style.scss
工作,我仍然需要使用import url("components.buttons.scss")
,就像我一直在做,或者我错过了什么?如果我没有遗漏这个设置和典型的CSS设置之间的区别是什么?
答案 0 :(得分:3)
使用下划线命名您的sass文件通常意味着它已理解文件正在@import
,因此不需要(并且不会被!)编译作为一个独立的文件 - 虽然这可能取决于你的构建系统以及你的sass如何编译。
使用the command line中的sass,假设您有以下文件集:
stylesheets/
_reset.scss
_fonts.scss
_header.scss
contact-page.scss
style.css
style.scss
可能包含的位置:
@import 'reset.scss';
@import 'fonts.scss';
@import 'header.scss';
(请注意,使用sass导入时,您不需要包含下划线)
编译后,您的新stylesheets/
目录将仅包含style.css
和contact-page.css
,而style.scss
将包含reset
的所有内容,{{1 }和fonts
。下划线的文件不会自行编译。
如果您要将header
重命名为_reset.scss
,则会将其编译为reset.scss
,但其内容也会包含在reset.css
中,因为您正在导入它也是。
因此:如果您不需要文件并且style.css
将其放入另一个文件中,请在文件名中使用下划线。
答案 1 :(得分:0)
这就是我们构建sass项目的方式。
OberservableCollection

主sass文件如下
namespace ActionlessForm {
public class Form : System.Web.UI.HtmlControls.HtmlForm
{
protected override void RenderAttributes(HtmlTextWriter writer)
{
writer.WriteAttribute("name", this.Name);
base.Attributes.Remove("name");
writer.WriteAttribute("method", this.Method);
base.Attributes.Remove("method");
this.Attributes.Render(writer);
base.Attributes.Remove("action");
if (base.ID != null)
writer.WriteAttribute("id", base.ClientID);
}
}
}
答案 2 :(得分:0)
如果在文件名的开头添加下划线,Sass将不会编译它。因此,如果您不希望colors.scss
编译为colors.css
,请将文件命名为_colors.scss
。以这种方式命名的文件在Sass术语中称为partials。
有关它的更多信息,请阅读here。