css - 如何防止变量在导入到 sass 中的另一个部分之前编译?
问题描述
这个问题似乎有点棘手,但就我而言,这是分解我的代码的好方法。
我希望我的代码从 page1.sass、page2.sass 等几个主题中的部分 _global.sass 中被拒绝,并且只是在主题的开头重新定义变量,而不是直接在代码中。这样,我只会在最终的 sass 文件的开头重新影响变量,而不是在每次需要更改时在每个页面上更改代码。
为此,我认为我必须找到一种方法来阻止 _global.sass 编译其变量,以便我可以在 pageX.sass 文件中重新定义它们并最终编译它们。
在部分 _variables.sass 文件中
$bg-color-page1: black
$bg-color-page2: red
$bg-color-page3: blue
$bg-color-page4: yellow
// etc.
$bg-color-page-global: grey /* you're obliged to affect a value when you declare a variable
在部分 _global.sass 文件中
@import variables
body
background-color: $bg-color-page-global
在最终的 sass 文件中,例如 pageX 或 page1.sass
@import variables
@import global
$bg-color-page-global: $bg-color-page1
body
background-color: $bg-color-page-global
使用此代码,使用 pageX.cass 文件的每个页面的背景都是灰色的,因为 _global.sass 的代码是在将其导入 pageX.sass 之前编译的。我希望它适应,page1.sass 为黑色背景,page2.sass 为红色等。
您现在是否有一种方法可以防止在将部分导入另一个 sass 文件之前编译变量?
感谢您的宝贵帮助。
解决方案
使用 sass 默认键并使用@use和@forward,@import
已弃用
- 创造
style/main.scss
@use "modules/yourModule";
style/settings/_settings.scss
使用 !default创建颜色变量
$color1: #000 !default;
$color2: #fff !default;
- 覆盖默认值
style/modules/_yourModule.scss
@use 'sass:map';
@use '../settings/settings';
// overwrite here
$color1: #ccc;
.yourModule {
color: $color1;
}
希望有帮助。
推荐阅读
- c# - 如何以编程方式修改 VisualBrush?
- python - 在 Python 中使用组屏蔽约束将列表分成随机块/组合
- git - git,签出到 master 上的特定提交
- html - 如何自动加载 Lightbox 2?
- sql-server - 父子表和派生外键的最佳数据库设计 On delete Cascade
- html - 将网页中的字体颜色刮到excel中
- javascript - 自动重叠 SVG 边缘
- python - 结合两个熊猫系列列表:1)一个包含历史时间序列,2)另一个包含预测时间序列
- salesforce - 流程自动化 SuperBadge 第 5 步 - 如何正确验证机会何时是协商/审查
- javascript - 获取第一个非 0 十进制数字的位置