2017-04-04 30 views
0

我处于这种情况,我想将相同的CSS规则分配给几个选择器,通常我使用Stylus interpolation将几个类分配给一个变量。在几个类中创建Stylus变量并在汇编中连接

pages = '.home, .about, .contact' 

{pages} 
    a 
     color black 

这样产生的:

.home a, .about a, .contact a { 
    color: black; 
} 

但是我有,我想在一个优雅的方式来解决,如果有可能的问题。比方说,现在我想使用相同的变量,另外一个来连接,例如:

.general 
    &{pages} 
     a 
      background-color black 

这产生以预期的方式:

.general.home a, .general .about a, .general .contact a { 
    background-color: black; 
} 

我想产生一个“双级”在每种情况下选择器,不仅是第一个。为此,我曾尝试使用作品的迭代方法,但我不满意的一切:

pages = home about contact 

.general 
    for class in pages 
     &.{class} 
      a 
       color black 

这产生于:

.general.home a { color: black; } 
.general.about a { color: black; } 
.general.contact a { color: black; } 

这是不是太糟糕,但是当我想以第一种方式使用相同的变量(这是我给这个变量的最常用的用法),但我不能,因为它不是用正确的选择器语法编译的。

你能想出任何实现这个目标的方法吗?

在此先感谢!

+0

我最终创建两种类型的变量对每个组的类别和使用在每种情况下我需要的一个。 'pages ='.home,.about,.contact'' 'pagesArray = home about contact' 但我不喜欢这个解决方案,因为它更难维护... –

回答

1

您可以选择的字符串中添加&到每一个类:

pages = '&.home, &.about, &.contact' 

.general 
    {pages} 
    a 
     color black 

即使自动replace BIF:

pages = '.home, .about, .contact' 

.general 
    {replace('\.', '&.', pages)} 
    a 
     color black 
+0

谢谢,它非常干净。 –

+0

是否可以用逗号添加更多变量?有我问的例子... http://codepen.io/anon/pen/jBoLRZ在文字CSS中有我想达到的结果......感谢您的帮助! –