我想通过CSS创建星级.当用户将悬停最后一颗星时,该星前的所有星星必须有另一种颜色,例如:我将悬停minStar3,然后minStar1,minStar2和minStar3必须具有不同的颜色.
<i id="minStar1" class="fa fa-star fa-lg" aria-hidden="true"></i>
<i id="minStar2" class="fa fa-star fa-lg" aria-hidden="true"></i>
<i id="minStar3" class="fa fa-star fa-lg" aria-hidden="true"></i>
<i id="minStar4" class="fa fa-star fa-lg" aria-hidden="true"></i>
<i id="minStar5" class="fa fa-star fa-lg" aria-hidden="true"></i>
Run Code Online (Sandbox Code Playgroud)
您可以使用Flexbox和创建元素的顺序来创建它flex-direction: row-reverse.您还可以使用~常规兄弟选择器来选择悬停元素之后的所有兄弟元素.
.rating {
display: inline-flex;
flex-direction: row-reverse;
}
i {
width: 20px;
height: 20px;
margin: 5px;
border: 1px solid black;
transition: all 0.3s ease-in;
}
i:hover ~ i,
i:hover {
background: black;
}Run Code Online (Sandbox Code Playgroud)
<div class="rating">
<i id="minStar1" class="fa fa-star fa-lg" aria-hidden="true"></i>
<i id="minStar2" class="fa fa-star fa-lg" aria-hidden="true"></i>
<i id="minStar3" class="fa fa-star fa-lg" aria-hidden="true"></i>
<i id="minStar4" class="fa fa-star fa-lg" aria-hidden="true"></i>
<i id="minStar5" class="fa fa-star fa-lg" aria-hidden="true"></i>
</div>Run Code Online (Sandbox Code Playgroud)
我之前在SO上看过这个技巧,但是找不到它.
为此,颠倒星星的顺序.
将它们包装在元素中(如a p或a div)
给它包装direction: rtl.
通过反转方向,~可以使用兄弟选择器.
i {
display: inline-block;
width: 50px;
height: 50px;
background: green;
}
p {
text-align: left;
direction: rtl;
}
p>i:hover,
p>i:hover~i {
background: red;
}Run Code Online (Sandbox Code Playgroud)
<p>
<i id="minStar5" class="fa fa-star fa-lg" aria-hidden="true">5</i>
<i id="minStar4" class="fa fa-star fa-lg" aria-hidden="true">4</i>
<i id="minStar3" class="fa fa-star fa-lg" aria-hidden="true">3</i>
<i id="minStar2" class="fa fa-star fa-lg" aria-hidden="true">2</i>
<i id="minStar1" class="fa fa-star fa-lg" aria-hidden="true">1</i>
</p>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
600 次 |
| 最近记录: |