首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何避免SCSS中样式的重复?

如何避免SCSS中样式的重复?
EN

Stack Overflow用户
提问于 2014-06-12 11:00:58
回答 4查看 10K关注 0票数 17

我想要一个.scss文件,其中包含一些其他.scss文件的变量。但是,如果我这样做,它的.scss样式将在我的所有.scss文件中复制:

global.scss -我的全局变量和样式文件

代码语言:javascript
运行
复制
$white: #FFF;
$black: #000;
$bg_red: red;

.mt30 {
    margin-top: 30px;
}

header.scss -我想在这个文件中使用全局vars和样式。

代码语言:javascript
运行
复制
@include "global"

.foo {
    width: 100px;
    height: 50px;
    backgrounnd-color: $bg_red;
}

main.scss -我也想在这个文件中使用全局vars和样式。

代码语言:javascript
运行
复制
@include "global"

.boo {
    width: 100px;
    height: 50px;
    backgrounnd-color: $white;
}

但是每个最终的.css文件都有来自.css的样式。所以我的页面上有几种.mt30样式。如何避免呢?

EN

回答 4

Stack Overflow用户

发布于 2014-08-11 19:38:03

问题似乎不在于样式的复制,而在于库或配置文件的复制。为此,只需稍微改变一下代码的结构就可以了。首先,将global.scss文件的名称(以及所有其他部分)更改为以下划线_global.scss开头的部分。然后,创建一个清单文件,如app.scss。在里面,导入_global.scss和您需要的任何其他文件。这些其他文件现在可以访问app.scss可以访问的所有内容:

_global.scss

代码语言:javascript
运行
复制
$white: #FFF;
$black: #000;
$bg_red: red;

_header.scss

代码语言:javascript
运行
复制
.foo {
  width: 100px;
  height: 50px;
  background-color: $bg_red;
}

_main.scss

代码语言:javascript
运行
复制
.mt30 {
  margin-top: 30px;
}

.boo {
  width: 100px;
  height: 50px;
  background-color: $white;
}

app.scss

代码语言:javascript
运行
复制
// Import libraries and config; adding compass as an example
@import "global";
@import "compass/css3";

// Actual selectors
@import "header";
@import "main";

因为您是在头和main之前导入全局的,所以后两者将可以访问前者中的任何内容。还要注意的是,我将声明的样式.mt30从全局移到主要的部分,只是为了确保全局配置文件中没有声明样式。

票数 20
EN

Stack Overflow用户

发布于 2014-06-12 11:30:03

例如:基金会框架有app.scss文件。它首先导入settings,然后导入foundation。在此之后,您可以添加应用程序的特定规则。

settings包含所有基金会组件的设置,并且不会膨胀产生的css。foundation文件包含单个组件(如网格、按钮等)的分离导入集。这些组件由以前导入的settings文件配置。若要减小css文件大小,可以删除不必要组件的导入。

实际上,为了使其更容易访问,用户删除foundation导入,并将其替换为默认注释掉的组件的单个导入。

票数 1
EN

Stack Overflow用户

发布于 2014-08-11 18:47:42

有一件事你可以用,它是重要的-一次:

https://rubygems.org/gems/compass-import-once

用法

要与Sass命令行一起使用:

代码语言:javascript
运行
复制
sass -r 'compass/import-once/activate' ...

在非指南针环境中启用:

代码语言:javascript
运行
复制
require 'compass/import-once/activate'

您可以在这里阅读更多有关此的信息:http://rubydoc.info/gems/compass-import-once/1.0.5/frames

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

https://stackoverflow.com/questions/24182734

复制
相关文章

相似问题

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