2012-10-15 32 views
1

我正在使用模板系统,我需要将CSS选择器设置为#%id%。然而,无论我如何欺骗SASS使用该选择器,我都无法使其工作。有没有人对我如何做这项工作有任何想法?SASS与自定义模板选择器

我总是得到这个错误。

Invalid CSS after "#": expected id name, was "%id%"

更新:

这是我曾尝试...

@mixin thing($id) { 
    ##{$id} { 
    color:red; 
    } 
} 
@include thing(unquote('%id%')); 

......还有......

$id:'%id%'; 
##{unquote($id)} { 
    color:red; 
} 

...最后。 ..

#%id% { 
    color:red; 
} 
+1

显示您尝试过的内容。 – cimmanon

+0

更新了几个方法,我试图让它工作。 –

回答

1

没有办法做到这一点。 #%id%是一个无效的CSS选择器,Sass无法解析它。

+0

SASS中有没有办法逃避一个字符串的原因? – bookcasey

+0

在大多数情况下,使用'#{}'将允许您使用任意字符串,即使这会导致无效的CSS。但是,Sass需要能够完全解析选择器,特别是为了支持'@ extend'和'''父选择器之类的功能。 –

+0

#%id%是定义的所有CSS的父div的选择器。有没有一种方法可以简单地将父级#%id%注入到所有定义的样式中?这可以通过Compass功能完成吗? SASS是否支持任何允许我使用红宝石书写的插件架构? –

0

这有帮助吗?

@mixin thing($selector) { 
    #{$selector} { 
    color: red; 
    } 
} 

@include thing("#someId"); 
+0

这与我尝试的解决方案之一类似。可悲的是,问题在于CSS选择器中不允许使用%,导致SASS抛出错误。这是SASS的一个非常附带的用例,我不惊讶它没有工作。尽管我的后处理解决方案看起来很完美。 –