【发布时间】:2014-08-28 01:32:05
【问题描述】:
我对 SASS 比较陌生,正在尝试将以下代码转换为 SASS mixin,以防止不得不全部手写。谁能帮我?我已经研究了两天,似乎无法让它工作,但就像我说的,我是 SASS 的新手。这是我想更改为 mixin 的普通 CSS:
text-shadow:
1px 1px 0 rgba(0,0,0,0.50),
2px 2px 0 rgba(0,0,0,0.49),
3px 3px 0 rgba(0,0,0,0.48),
4px 4px 0 rgba(0,0,0,0.47),
5px 5px 0 rgba(0,0,0,0.46),
6px 6px 0 rgba(0,0,0,0.45),
7px 7px 0 rgba(0,0,0,0.44),
8px 8px 0 rgba(0,0,0,0.43)
[...and so on to about 50]
我能够获得一个可以生成文本阴影深度的 mixin,但是当我尝试调整 alpha 时,我收到了警告,因为该值超过了 1 并且不透明度需要介于 0 和 1 之间的值。
这是我尝试过的代码(编译良好,但没有输出):
@mixin render-shadow($depth){
$longshadow: ();
@for $i from 1 through $depth {
@while $alpha > 0 {
$alpha: 0.50;
$longshadow: $longshadow, $i*1px $i*1px 0 rgba(0,0,0,$alpha);
}
}
text-shadow: $longshadow;
}
我也试过了:
@mixin render-shadow($depth){
$longshadow: ();
@for $i from 1 through $depth {
$longshadow: $longshadow, $i*1px $i*1px 0 rgba(0,0,0,($i - 0.01));
}
text-shadow: $longshadow;
}
这给了我这个错误:
Syntax error: Alpha channel 1.99 must be between 0 and 1 for `rgba'
还有:
@mixin render-shadow($depth){
$longshadow: ();
@for $i from 1 through $depth {
$alpha: 0.50;
$longshadow: $longshadow, $i*1px $i*1px 0 rgba(0,0,0,($alpha - 0.01));
}
text-shadow: $longshadow;
}
它渲染了阴影,但不透明度为 0.49,而不是递增到 0。
【问题讨论】:
-
我不明白这个问题。我在这里没有看到 mixin,也没有看到超出 0 和 1 的值。
-
这是普通的 CSS 代码。我想将其转换为 mixin,这样我就不必全部输入了。
-
那么您尝试过什么了吗? SO 不是一个代码编写服务,你应该展示你尝试过的东西以及为什么它没有工作......你知道,表明你已经做出了努力。
-
我已经尝试了很多东西,但它们都远非正确。我认为发布它们只会混淆问题,因为我知道我需要从头开始。我只是在寻找一些关于如何以这种方式使用 SASS 的指示。我不是在找人来写我的代码。如果有人只是向我指出此类事情的正确 SASS 文档的方向,我会很好。如果有帮助,我尝试在stackoverflow.com/questions/12975097/… 修改技术。
-
@cimmanon:我已根据您的要求添加了我的尝试,以便您查看我的尝试。