fa-star (&#xf005) 总是黄色的,如何让它变白?

fa-star (&#xf005) is always yellow, how to make it white?

设置 color:white; 或什至使用 class icon-lighticon-white 使所有 font-awesome-icons 变白,除了 fa-star 仍然是黄色不管我做什么!

我试过用与在元素的内联样式中使用 !important 一样绝望的方法覆盖 css。星星仍然是黄色的! (见下图)

为什么会这样,如何让它变白?

(使用font-awesome 3.2.1是为了支持IE7,别问我为什么)

基本上这是我的标记:

<i class="icon-white icon-star" style="color:white;"></i>

或者当我截取下面的屏幕截图时:

<i class="icon-light icon-star" style="color:white !important;"></i>

从图中可以看出,这个内联样式规则基本上覆盖了一堆其他 css-规则说同样的事情; color 应该是 white.

这种行为特别有趣的是 "Computed Styles" 下的 chrome 调试器实际上声称星星是白色的。如您所见,情况并非如此。

编辑:我实际上设法解决了这个问题,但我不知道为什么我的解决方案有效,所以我会留下这个问题,希望有人可以提供对这里实际发生的事情的洞察力。这是我所做的:

如果您查看 font-awesome.css,您会发现以下块:

.icon-star:before{
content:"\f005";
}

作为我继续研究这个神秘错误的第一步,我将 <i> 上的 class 更改为 white-star 并将以下内容添加到我的样式表中:

 .white-star:before{
 content:"\f005";
}

当我惊讶地发现那颗星星是白色的时,我正打算从那里尝试一些其他的东西!

这不再是需要解决的问题,但我真的很想知道这里发生了什么,所以我就把这个问题悬而未决,希望有人能提供一些见解(对我和社区)。

黄色是因为它是位图表情符号。要获得矢量(无色)符号,您需要在字符后缀 UNICODE VARIATION SELECTOR-15 强制渲染为矢量。这记录在这里:http://mts.io/2015/04/21/unicode-symbol-render-text-emoji/

VARIATION SELECTOR-15U+FE0E.

所以我终于想通了。当然,解决方案很明显!

icon-star 的颜色在 .icon-star:before 元素上设置。我在这里做错的是将颜色规则设置为 .icon-star 元素。颜色当然是继承的,但继承不会覆盖直接设置给子元素的规则(doh!)。这就是为什么添加 !important 没有效果。

原则是:在设置 FA 图标的样式时,将样式设置为伪元素,而不是父元素!