我在Chrome扩展弹出HTML实现this star rating snippet具有良好的成功:如何制作星级评级?
这是我实现:
.rating {
float: left;
unicode-bidi: bidi-override;
direction: rtl;
font-size: 28px;
margin-top: -11px;
color: #e8d04c;
margin-left: 10px;
margin-right: 10px;
}
.rating > span {
display: inline-block;
position: relative;
width: 0.7em;
cursor: pointer;
}
.rating > span:hover:before,
.rating > span:hover ~ span:before {
content: "\2605";
position: absolute;
}
<div id="divRating" class="rating">
<span id="spanRatingExcellent" title="Excellent">☆</span>
<span id="spanRatingGood" title="Good">☆</span>
<span id="spanRatingFair" title="Fair">☆</span>
<span id="spanRatingPoor" title="Poor">☆</span>
<span id="spanRatingAwful" title="Awful">☆</span>
</div>
它工作正常,只是这种方法不提供让选定的星星“坚持”。例如,如果用户单击4颗星,则当鼠标指针离开时,我希望星号1-4保持高亮显示。相反,所有的星星都不会高兴。但是,如果再次使用鼠标悬停并点击星星,我需要正确的(原始)行为。再次,如果点击了一颗星星,所选星星在鼠标移出时应该保持高亮状态,并且任何未选中的星星(右侧)都不会突出显示。
纯粹的CSS解决方案会很酷,但我非常乐意使用jQuery或JavaScript来实现这一点。
在此先感谢。
扰流板:你需要JavaScript来做到这一点,就不能(实际上)以纯CSS实现。 – Dinei
@fredrivett刚刚证明我错了[他的回答](https://stackoverflow.com/a/45989590/3136474)(尽管我仍然更喜欢在这件事上使用JavaScript)。 – Dinei
所有的答案似乎都很好(谢谢所有!)但我选择了Dinei,因为它只需要对现有实现进行最少的更改。谢谢大家! – HerrimanCoder