2012-10-16 28 views
1

嗨我对SASS还是很新的,没有编程专家。SASS检查类名

我有10个旁白元素,根据他们的类名称都需要不同的背景颜色。

我已经浏览了SASS文档,我找不到它。

我想说,如果抛开有X创建背景色X的类名,如果预留有y的类名使背景Y色等

是否有这样做的一个很好的有效的方法?

谢谢你们,如果是一个简单的问题,非常抱歉。

+0

你可以遍历列表的列表...有你不想写一个理由出每个定义?因为如果结果只是每个类的背景颜色定义,那么设置循环将会同样多。 – cimmanon

回答

0

如果您使用的颜色没有“标准”名称(或者类的名称根本不会是一种颜色,例如products = blue,addresses = red),列出的清单是你想要什么:

$colors: 
    (black #000 
    , white #FFF 
    , red #F00 
    , green #0F0 
    , blue #00F 
    ); 

@each $i in $colors { 
    aside.#{nth($i, 1)} { 
     background: nth($i, 2); 
    } 
} 

输出:

aside.black { 
    background: black; } 

aside.white { 
    background: white; } 

aside.red { 
    background: red; } 

aside.green { 
    background: lime; } 

aside.blue { 
    background: blue; } 

如果您使用的是与标准颜色的关键字,这可能是工作:

$colors2: black, white, red, green, blue; 

@each $i in $colors2 { 
    aside.#{$i} { background: $i; } 
} 

输出(尽管这似乎只与--style debug配合使用,--style compress产生错误..怪异):

aside.black { 
    background: black; } 

aside.white { 
    background: white; } 

aside.red { 
    background: red; } 

aside.green { 
    background: green; } 

aside.blue { 
    background: blue; } 
+0

谢谢你们的帮助。工作一种享受的欢呼声。我正在使用 – Ricky55

+0

要使用'--style compress'解决错误,您应该使用选择器引用字符串的颜色名称。所以,在第一个例子中它会是:'$ colors:('black'#00F,'white'#FFF,...)' – hopper

0

这只不过是你想要做多少打字而已。你可以创建一个混合背景并将其包含在旁边的CSS规则中,但这是否真的有必要?

如果是虽然....

@mixin bg($color) { 
    background: $color; 
} 

aside#foo { 
    @include bg(#fff); 
} 
+0

仅供参考我不认为有可能做你想要的东西,但这是SASS最接近你的! –

+2

说真的,你为什么要这么做? – powerbuoy

-1

“如果抛开有X创建背景色X的类名,如果预留有y的类名使背景颜色Y”转换为下面的CSS :

aside.x {background-color: x} 
aside.y {background-color: y} 

是否有你想使用SASS的理由?它是否是动态的,以便您可以在未更新CSS的情况下添加您想要的任何类? (如果因为SASS代码编译为CSS而不能在之后更改,那么SASS不可能)。

为了让你不得不使用JS(jQuery的)的工作:

$('aside').each(function() { 
    $(this).css('background-color', $(this).attr('class')); 
}); 

编辑:您可以使用循环SASS中产生了大量的类和相应的背景颜色,但。

+0

Downvoter谨慎解释? – powerbuoy

+0

您为未提问的问题提供了解决方案。 – cimmanon

+0

呃?也许我误解了这个问题,但对我来说,OP似乎希望根据其类名为10个元素赋予不同的bg颜色。我提供了一个CSS解决方案(就像正常写CSS一样)和JS解决方案来解决这个问题。你认为我回答的那个问题没有被问到? – powerbuoy