我使用已解答here on StackOverflow的方法将自定义警察定义与其他类一起使用。该方法总结如下:
[class^="icon-"]:before,
[class*=" icon-"]:before {
font-family: FontAwesome;
}
.icon-custom:before {
content: "\f0c4";
}
当我使用自定义类来使用它时,我必须使用库生成的代码:
i:after {
content: '\f0c4';
}
如果库中的代码f0c4
发生了变化,我希望避免逐个报告每个自定义类的更改。我决定使用Sass或Less来处理这个问题。
它会像下面但它不起作用。
i:after {
.icon-custom
}
使用Sass或Less,是否可以避免这个神奇的数字?
我知道这是可能的:
i:after {
content: @custom-code-value
}
但我更愿意避免更改@custom-code-value: : "\f0c4";
这是唯一的解决方案吗?
答案 0 :(得分:3)
您可以尝试将所有内容值分组到地图变量
中我为你改编了一个例子
<强> SCSS 强>
// Map variable
$icons: (
facebook : "\f0c4",
twitter : "\f0c5",
googleplus : "\f0c6",
youtube : "\f0c7"
);
// Mixin doing the magic
@mixin icons-list($map) {
@each $icon-name, $icon in $map {
@if not map-has-key($map, $icon-name) {
@warn "'#{$icon-name}' is not a valid icon name";
}
@else {
&--#{$icon-name}::before {
content: $icon;
}
}
}
}
// How to use it
.social-link {
background-color: grey;
@include icons-list($icons);
}
<强> CSS 强>
// CSS Output
.social-link {
background-color: grey;
}
.social-link--facebook::before {
content: "";
}
.social-link--twitter::before {
content: "";
}
.social-link--googleplus::before {
content: "";
}
.social-link--youtube::before {
content: "";
}
因此,只有在某些值发生变化时,您才需要维护 $ icons 变量。希望你明白这一点。