今天,咱们用纯CSS实现⭐️评级。ide
分析:正常状况下为空心的☆,鼠标hover
时,变为实心黄色的★.this
div.star
包裹5个span
,每一个span
的内容为空心的☆.HTML代码以下:spa
<div class="star"> <span>☆</span><span>☆</span><span>☆</span><span>☆</span><span>☆</span> </div>
1.分析:当咱们hover
时,咱们用实心的★覆盖空心的☆,并给实心的★设置color:gold;
.3d
要覆盖空心的☆,咱们要利用为元素::before
,并赋予content:'★'
.同时为了实现覆盖,而不是在以前添加内容,咱们须要为元素设置position:absolute;
.code
这时,当你hover
时,hover
的☆就变为实体黄色的⭐️了。orm
2.接下来,咱们要实现当我hover
某个☆时,不只这一个,它前面的☆也都要变为黄色实体的⭐️。
首先,咱们要用到通用兄弟选择器~
htm
在使用 ~ 链接两个元素时,它会匹配第二个元素,条件是它必须跟(不必定是紧跟)在第一个元素以后,且他们都有一个共同的父元素 .
好比:div~p就会匹配与div同辈的且在div以后的全部p元素。blog
当咱们hover
某个☆时,咱们利用通用兄弟选择器使后面的☆也同时变为黄色实体星⭐️。three
span:hover::before, span:hover~span::before{ content:'★'; color:gold; position:absolute; }
这时,当你hover
某个☆时,这个及其后面的☆都同时变为黄色实体星⭐️。seo
3.最后,咱们利用unicode-bidi
,direction
属性,使文本由右向左显示。
The unicode-bidi CSS property together with the direction property relates to the handling of bidirectional text in a document.For example, if a block of text contains both left-to-right and right-to-left text then the user-agent uses a complex Unicode algorithm to decide how to display the text. This property overrides this algorithm and allows the developer to control the text embedding.
这样的话,当咱们hover
时,仍是这个及其后面的☆都同时变为黄色实体星⭐️,可是因为此时从右向左显示,它的后面兄弟元素就变到“前面”来了。
.star{unicode-bidi: bidi-override;direction:rtl;}
对内联元素应用direction时要注意:
For the direction property to have any effect on inline-level elements, the unicode-bidi property's value must be embed or override.
OK. 用纯CSS实现⭐️评级的效果就实现了!
CSS代码以下:
span:hover::before, span:hover~span::before{ content:'★'; color:gold; position:absolute; } .star{ unicode-bidi:bidi-overrride; direction:rtl; }
思路:当元素触发onmouseover
事件时,赋予不一样的class
值。
代码以下:
<div class="heart"> <a href="" id="one" class="heart-off"></a> <a href="" id="two" class="heart-off"></a> <a href="" id="three" class="heart-off"></a> <a href="" id="four" class="heart-off"></a> <a href="" id="five" class="heart-off"></a> </div>
.heart-off,.heart-on,.heart-hover{ text-decoration:none; } .heart-off:before,.heart-on:before,.heart-hover:before{ content:'\2665'; } .heart-off{color:rgba(150,150,150,.5);} .heart-on{color:rgba(255,0,0,.5);} .heart-hover{color:rgba(255,0,0,1);}
one.onmouseover=function(){ this.className="heart-hover"; two.className="heart-off"; three.className="heart-off"; four.className="heart-off"; five.className="heart-off"; }; two.onmouseover=function(){ this.className="heart-hover"; one.className="heart-on"; three.className="heart-off"; four.className="heart-off"; five.className="heart-off"; }; three.onmouseover=function(){ this.className="heart-hover"; one.className="heart-on"; two.className="heart-on"; four.className="heart-off"; five.className="heart-off"; }; four.onmouseover=function(){ this.className="heart-hover"; one.className="heart-on"; two.className="heart-on"; three.className="heart-on"; five.className="heart-off"; }; five.onmouseover=function(){ this.className="heart-hover"; one.className="heart-on"; two.className="heart-on"; three.className="heart-on"; four.className="heart-on"; };