【发布时间】:2013-03-24 01:20:32
【问题描述】:
我正在使用 Compass 生成我的精灵,它运行良好,但我遇到了一个小烦恼。在另一个@include 中时,我无法使用@include 语句包含单个精灵,例如我常用的媒体查询混合。我的精灵 SCSS 如下所示:
.sp {
background-repeat: no-repeat;
overflow: hidden;
line-height: 0;
font-size: 0;
text-indent: 100%;
border: 0;
}
$sp-sprite-dimensions: true;
$sp-sprite-base-class: '.sp';
$sprite-layout: smart;
@import "sp/*.png";
@include all-sp-sprites;
在另一个位置,我正在尝试这样做:
.logo {
a {
@include break($break1) {
@include sp-sprite(logo-small);
}
}
}
SCSS 可以使用嵌套的@include 语句,但它不允许在@include 语句中使用@extend 语句,而且显然精灵@include 在幕后生成@extend 语句,这是我不想要的。有人知道解决这个问题的方法吗?
编辑:
@lolmaus 引起了我的注意,真正的问题是我在媒体查询中嵌套了一个 @extend。我想这是不允许的,有什么办法吗?
【问题讨论】:
-
你好像在做一些奇怪的事情。
sp-sprite是你编码的 mixin 吗?请提供完整代码。 -
@lolmaus 不,这是一个由 compass 自动生成的 mixin。请参阅此处的“选择器控件”:http://compass-style.org/help/tutorials/spriting/
-
问题是可以在另一个 mixin 中使用 foo-sprite mixin。 [这个[(gist.github.com/lolmaus/2101b2938c665a3d44de) 编译得很好。这就是为什么我认为你已经覆盖了mixin。请提供完整的代码和错误文本,以便我们将报告的错误行与代码匹配。使用gist.github.com一次共享多个大文件。
-
哦,我明白了。问题不在于您的扩展位于 mixin 中。问题是它在媒体查询中!
-
哦,我明白了,我想这就是问题所在,感谢您跟踪它。有什么办法吗?
标签: css sass compass-sass