js实现星星打分

先发那个一张效果图

 用原生js实现一个类似是淘宝评价打分的效果,比较简单,直接上代码

0.用到的素材

星星图标,选中和未选中两种状态,放在下面👇,可以直接下载

1.页面内容


// 利用ul标签,设置五颗星星,class=light是选中的效果
<ul>
    <li class='light'></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
</ul>

2.css设置

ul {
  padding-left: 0;
  overflow: hidden;
}
ul li {
   float: left;
   list-style: none;
   width: 27px;
   height: 27px;
   background: url(img/star.png) no-repeat center;
}
ul li.light {
   background: url("img/star-checked.png") no-repeat center;
}

3.js代码

var lis = document.getElementsByTagName("li");
var num= finalnum = tempnum= 0;
//num:传入点亮星星的个数
//finalnum:最终点亮星星的个数
//tempnum:一个中间值
function fnShow(num) {
   finalnum= num || tempnum;//如果传入的num为0,则finalnum取tempnum的值
   for (var i = 0; i < lis.length; i++) {
        lis[i].className = i < finalnum? "light" : "";//点亮星星就是加class为light的样式
   }
}
for (var i = 1; i <= lis.length; i++) {
    lis[i - 1].index = i;
    lis[i - 1].onmouseover = function() { //鼠标经过点亮星星。
        fnShow(this.index);//传入的值为正,就是finalnum
    }
    lis[i - 1].onmouseout = function() { //鼠标离开时星星变暗
        fnShow(-1);//传入值为0,finalnum为tempnum,初始为0
    }
    lis[i - 1].onclick = function() { //鼠标点击,同时会调用onmouseout,改变tempnum值点亮星星
       tempnum= this.index;
  }
}

这样就能简单实现啦~完结~*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一种纯CSS3实现的滑动星星评分动画特效的方法。具体步骤如下: 1.首先,我们需要准备一个HTML页面,其中包括一个具有唯一标识符的div元素,用于容纳我们的星星评分系统: ```html <div id="rating"> <div class="star"></div> <div class="star"></div> <div class="star"></div> <div class="star"></div> <div class="star"></div> </div> ``` 2.接下来,我们需要为每个星星创建一个伪元素,并将它们附加到星星容器上,以实现星星的外观。我们可以使用font-awesome字体库中的星星图标,也可以使用其他方法。 ```css #rating .star:before { content: '\f005'; font-family: 'FontAwesome'; color: #ccc; font-size: 2em; display: inline-block; margin-right: 5px; } ``` 3.接下来,我们需要为星星容器设置一些基本样式,以便它们可以水平排列并与彼此相邻。我们还需要为星星容器设置一个相对定位,以便在用户悬停时可以更改星星的颜色。 ```css #rating { display: inline-block; position: relative; font-size: 0; } #rating .star { display: inline-block; margin: 0; padding: 0; cursor: pointer; } ``` 4.现在,我们需要使用CSS3的transition属性将星星的颜色更改为悬停时的颜色。我们可以使用:hover伪类来为星星容器中的每个星星设置颜色。 ```css #rating .star:hover:before, #rating .star:hover ~ .star:before { color: gold; } ``` 5.最后,我们需要使用JavaScript星星容器添加点击事件,以便在用户单击星星时更改星星的颜色。我们可以使用classList.toggle()方法来切换星星元素的类名。 ```javascript const stars = document.querySelectorAll('.star'); stars.forEach(function(star, index) { star.addEventListener('click', function() { for (let i = 0; i < stars.length; i++) { if (i <= index) { stars[i].classList.add('selected'); } else { stars[i].classList.remove('selected'); } } }); }); ``` 这样,我们就完成了一个基本的纯CSS3滑动星星评分动画特效。您可以根据需要更改样式,以实现更高级的外观和交互效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值