CSS实现星状评分效果 – CSS Star Rating
有一个场景,相信大家不会感到陌生,那就是我们购物之后对商家、物流、商品等进行评价,其中有一个直观的交互就是星状打分,这种交互方式增强了用户对商品评价的直观感受,更贴近用户的行为习惯,这是一种非常棒的设计。
从技术的角度来说,利用html+css就能完全搞定这种交互效果,好多童鞋都以为是js实现的呢,有木有~~~,哈哈。肯定有.
不得不说,这效果都是从墙外传过来的,我们玩的都是现成。~~~~~~
首先,我们来顺一下这个交互的流程~~~
1<ul?class="rating nostar">2???<li?class="one"><a?title="1 Star"?href="#">1</a></li>3???<li?class="two"><a?title="2 Stars"?href="#">2</a></li>4???<li?class="three"><a?title="3 Stars"?href="#">3</a></li>5???<li?class="four"><a?title="4 Stars"?href="#">4</a></li>6???<li?class="five"><a?title="5 Stars"?href="#">5</a></li>7</ul>
,6种状态,6个对应的class:.nostar,.onestar,.twostar,.threestar,.fourstar,.fivestar,1ul.rating li.one a {left:0}2ul.rating li.two a {left:16px;}3ul.rating li.three a {left:32px;}4ul.rating li.four a {left:48px;}5ul.rating li.five a {left:64px;}6ul.rating li a {7???????position:absolute;left:0;top:0;width:16px;height:16px;text-decoration:none;z-index:?200;8?}
,第一个a对应1分,第二个a对应2分,以此类推,第5个a对应5分,但是有个要点是值得注意的,a:hover时width设置为5颗星的宽度,而且z-index必须比a的z-index低,例如:a{z-index:20;},a:hover{z-index:10},只要这样才能轻易的在不同a之间切换,如果a:hover的z-index高于a的z-index,那么鼠标移动到a上 ,我们永远切换不到另一个a上,因为另外4个a被当前a所覆盖了,这一点是这个效果最核心的技巧。
好了,这个效果到这里就算完成了,里边用到的技巧都是很灵活的,让你有一种茅塞顿开的感觉,有木有~~,比如a:hover从平时的改变颜色,加个下划线,到这里就变成了改变left,改变width这样的位置属性,这大大拓展了我们的思路,不得不说外国人的创新意识真的比国人强。
DEMO:?http://classjs.com/demo/star/star.html