ver*_*lok 8 css-sprites sprite compass-sass
我正在使用Compass生成CSS sprites.
我找到了一种定义精灵的方法,并在不同的.scss文件中使用它,但我不确定这是否是正确的解决方案.
我能找到的最好的方法是:
_variables.scss部分文件_variables.scss部分文件中定义精灵_variables.scss在每个.scss文件中导入部分例
_variables.scss文件:
$siteSprite-spacing: 20px;
@import "siteSprite/*.png";
Run Code Online (Sandbox Code Playgroud)
firstPage.scss文件:
@import "../variables.scss";
.close {
@include siteSprite-sprite(close, true);
}
Run Code Online (Sandbox Code Playgroud)
secondPage.scss文件:
@import "../variables.scss";
.viewMore {
@include siteSprite-sprite(arrow, true);
}
Run Code Online (Sandbox Code Playgroud)
这有效,但......
问题是,每次Compass编译scss文件(firstPage.scss,secondPage.scss)时,它会读取_variables.scss部分,然后读取所有图像,每次尝试生成精灵.
结果是编译过程最终结果如下:
create generated_images/siteSprite-s526a535d08.png
unchanged generated_images/siteSprite-s526a535d08.png
create css/firstPage.css
unchanged generated_images/siteSprite-s526a535d08.png
create css/secondPage.css
unchanged generated_images/siteSprite-s526a535d08.png
create css/thirdPage.css
unchanged generated_images/siteSprite-s526a535d08.png
Run Code Online (Sandbox Code Playgroud)
这非常慢,因为我在siteSprite图像文件夹中有很多页面和许多文件.
我该如何避免这个问题?
小智 2
我将解释如何使用指南针精灵,希望这对您也有帮助。我通常创建一个 _base.scss 部分文件,在其中放置所有通用的 @import 和 @include 以及我的项目的任何通用 css 代码。在 _base.scss 中,我还添加了以下特定于精灵的代码(假设我保存图标的文件夹称为“icon”并且我的图标具有 .png 扩展名):
@import "compass/utilities/sprites";
@import "icon/*.png";
@include all-icon-sprites;
Run Code Online (Sandbox Code Playgroud)
这个 _base.scss 是我在项目的任何 *.css.scss 文件(相当于“firstPage.scss”和“firstPage.scss”)中导入的第一个文件。
现在,要在 div 中使用这些精灵中的任何一个,我只需这样做:
#my_id (or .my_class) {
@extend .icon-myicon;
}
Run Code Online (Sandbox Code Playgroud)
其中“myicon”是“icon”文件夹内的一个 .png 文件的名称。
这个指南针教程实际上非常有帮助,所以你可能想看看。
如果您担心某些文件可能会被多次导入,您可以尝试使用插件compass-import-once。
| 归档时间: |
|
| 查看次数: |
470 次 |
| 最近记录: |