我可以改变字体颜色,但不能改变“填充”颜色。我最初尝试设置背景颜色,但那会填充整个图标框区域。
例如,我有以下代码:
<i class="icon-star-empty icon-large"></i>
但我希望它是黄色的。
编辑: 我的使用场景是希望一个“收藏”图标的轮廓为灰色,在点击后,轮廓变为橙色,填充为黄色。
我可以改变字体颜色,但不能改变“填充”颜色。我最初尝试设置背景颜色,但那会填充整个图标框区域。
例如,我有以下代码:
<i class="icon-star-empty icon-large"></i>
但我希望它是黄色的。
编辑: 我的使用场景是希望一个“收藏”图标的轮廓为灰色,在点击后,轮廓变为橙色,填充为黄色。
Font-awesome提供了许多带边框或填充的图标,星形图标就是其中之一。
你可以使用四个不同的星形图标类:
class="icon-star"
class="icon-star-empty"
class="icon-star-half"
class="icon-star-half-empty"
如果您是个乐观的人,您也可以使用“icon-star-half-empty”代替“glass-half-full”。class="icon-star-half-full"
你可以对font-awesome图标进行着色,并使用不同的特效来实现你想要的效果:<i class="icon-star-empty icon-large icon-a"></i><br><br>
<i class="icon-star-empty icon-large icon-b"></i><br><br>
<i class="icon-star icon-large icon-c"></i> or <i class="icon-star icon-large icon-d"></i>
在使用以下CSS(而不是使用内联样式)的情况下:
.icon-a {
color: #888;
}
.icon-b {
color: orange;
}
.icon-c {
color: yellow;
}
.icon-d {
color: yellow;
-webkit-text-stroke-width: 1px;
-webkit-text-stroke-color: orange;
}
如果您不想使用icon-large
,也可以替换/设置大小。
上面的代码输出如下:
但我已经将上述代码和更多选项放在JSFiddle中,您可以在此查看。
还可以使用CSS转换,它提供了一种动画CSS属性更改的方式,而不是立即生效或与JavaScript结合使用。
<i class="fa-regular fa-star"></i>
<i class="fa-solid fa-star"></i>
- Aleem你所需要做的就是设置color: yellow
。因为这些图标是字体,它们会以与其他字体(文本)相同的方式呈现任何你设置的颜色。
如果想要将整个星星填充为黄色,请尝试使用icon-star
而不是icon-star-empty
。
你可以试一试这个。
-webkit-text-stroke-width: 1px;
-webkit-text-stroke-color: orange;
我希望你需要的是给字体本身添加描边(轮廓线)。
而要填充它,只需使用普通的方式即可。
color: yellow;
<p class="fa-stack fa-lg">
<i class="fa fa-square fa-stack-2x fa-2x fa-inverse"></i>
<i class="fa fa-facebook-square fa-stack-2x fa-2x"></i>
</p>
fa-inverse
,假设您的默认颜色是黑色。 此处有更多信息。"-webkit-text-stroke"存在的问题是它不被FF和IE完全支持,所以在这种情况下,我会在普通星号内部使用伪类来表示半颗星,就像这样:
.icon-star.red-border {
position: relative;
color: blue;
font-size: 24px;
}
.icon-star.red-border:after {
content: "\f006";
color: red;
position: absolute;
left: 0;
}
对我来说很有效,这是演示
谢谢。
.fa
类,旧代码已经无法正常工作。 - Shaiju T扩展以上答案,有时您想要为字体/图标添加描边/边框。在这种情况下,可以使用以下方法。
至少在Webkit中,示例如下:
h1 {
-webkit-text-stroke-width: 1px;
-webkit-text-stroke-color: black;
}
或者简写:
h1 {
-webkit-text-stroke: 1px black;
}
h1 {
text-shadow: -1px -1px 0 black, 1px -1px 0 black, -1px 1px 0 black, 1px 1px 0 black;
}
我最近使用非常简单的CSS完成了这个操作,只使用了一个font-awesome图标。这些图标以SVG格式呈现。
它的工作原理是我使用实心/填充图标,但将其变为白色并添加黑色边框,使其看起来为空。点击后,我可以切换.fill类以将颜色更改为金色,使其变为实心。
HTML:
<i class="fas fa-star"></i>
.fa-star {
stroke: #000;
stroke-width: 30px;
color: white;
cursor: pointer;
}
.fa-star.fill {
color: #ffd700 /* gold */
}
使用jQuery的JS切换:
$('body').on('click', ".fa-star", function () {
favorite(this);
});
function favorite(item) {
$(item).toggleClass("fill");
}
如果你使用 ReactJS
和组件
<i className="icon-star-empty icon-large" style={{color: "grey", fontSize: "70px"}}></i>
<i class="fa-regular fa-star"></i>
<i class="fa-solid fa-star"></i>
- Aleem