代替类似的东西地图数据结构 http://chriseppstein.github.ioChris Eppstein 提到 SASS 正在进行的工作,我正在尝试实现类似的目标 - 将字符串映射到相应的十六进制值,该值将用于指定 CSS 的 unicode 字符content财产。 (我正在尝试重构一些字体图标 SASS 代码。)
目前我有一些基本的东西,例如:
/*icon1 --> \F000
icon2 --> \F001
icon3 --> \F002*/
@function u-char($name) {
@if $name == icon1 {
@return "000";
} @else if $name == icon2 {
@return "001";
} @else if $name == icon3 {
@return "001";
}
}
@mixin icon-class($name) {
...
content: "\f#{u-char($name)}";
...
}
但我实际上正在尝试映射大量字符,因此这种方法很困难。我希望能够做类似的事情:
@function u-char($name) {
$i: 0;
$itemList: item1, item2, item3;
@each $currItem in $itemList {
@if $name == item1 {
@return i-to-hex-str($i);
}
$i: $i + 1;
}
}
SASS 中有什么可以将整数转换为十六进制字符串吗?还有另一种优雅的方法吗?
要回答您帖子中的最后一个问题,
“是否有任何东西可以在 SASS 中进行整数到十六进制字符串的转换?”。嗯……不是内置的,但我认为这相当清楚地实现了这一点,并且代码行相对较少:
/** Returns an at least one byte hex value */
@function dec-to-hex($d) {
$hexVals: "A" "B" "C" "D" "E" "F";
$base: 16;
$quotient: $d;
$result: "";
@if $d == 0 {
$result: "00";
}
@while $quotient != 0 {
$mod: $quotient % $base;
$quotient: floor($quotient / $base);
@if $mod > 9 {
$mod: nth($hexVals, $mod - 9);
}
@if $d < $base {
$result: "0" + $mod;
} @else {
$result: $mod + $result;
}
}
@return $result;
}
这不会在字符串前面添加十六进制限定符(例如“0x”或“#”),但您可以将其硬编码到最后一行(@return "#" + $result;
),或者在调用该函数时就地应用它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)