欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JS实现评价的星星功能

程序员文章站 2022-05-14 19:09:44
刚开始接触写星星评价时,哇!估计脑子刚被驴踢了,竟然想到了最笨的办法-手工画五角星。妈呀! css样式都写了好大一串,还沾沾自喜终于画出来了,然后瞅一瞅旁边的妹子写得怎么样...

刚开始接触写星星评价时,哇!估计脑子刚被驴踢了,竟然想到了最笨的办法-手工画五角星。妈呀! css样式都写了好大一串,还沾沾自喜终于画出来了,然后瞅一瞅旁边的妹子写得怎么样了,哇!人家机智的!直接用符号★就解决了!!!唉,智商捉急呀!

先上图看看吧:

JS实现评价的星星功能

虽然简单,还是有几个注意的地方:

1. 未点击时的hover效果,星星会随鼠标移动亮起来喔。

2. 点击后关闭hover效果。

3. 点击同一颗星星,星星可以随时换色。

具体代码展示:

<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
  </head>
  <style type="text/css">
    .stars{
      white-space: nowrap;
      text-align: center;
      margin-top: 20px;
      margin-bottom: 20px;
    }
    .stars li{
      display: inline-block;
      color: #adadad;
      font-size: 40px;
    }
  </style>
  <body>
    <ul class="stars">
      <li>★</li>
      <li>★</li>
      <li>★</li>
      <li>★</li>
      <li>★</li>
    </ul>
    <script src="../../js/common/jquery-git.js"></script>
    <script>
    $(function() {
        //为星星设置hover效果
        var isclicked = false;
        var beforeclickedindex = -1;
        var clicknum = 0; //点击同一颗星次数
        $('li').hover(
          function() {
            if(!isclicked) {
              $(this).css('color', '#f0ad4e');
              var index = $(this).index();
              for(var i = 0; i <= index; i++) {
                $('li:nth-child(' + i + ')').css('color', '#f0ad4e');
              }
            }
          },
          function() {
            if(!isclicked) {
              $('li').css('color', '#adadad');
            }
          }
        );
        //星星点击事件
        $('li').click(function() {
          $('li').css('color', '#adadad');
          isclicked = true;
          var index = $(this).index();
          for(var i = 1; i <= index+1; i++) {
            $('li:nth-child(' + i + ')').css('color', '#f0ad4e');
          }
          if(index == beforeclickedindex) { //两次点击同一颗星星 该星星颜色变化
            clicknum++;
            if(clicknum % 2 == 1) {
              $('li:nth-child(' + (index + 1) + ')').css('color', '#adadad');
            } else {
              $('li:nth-child(' + (index + 1) + ')').css('color', '#f0ad4e');
            }
          } else {
            clicknum = 0;
            beforeclickedindex = index;
          }
        });
      });
    </script>
  </body>
</html>

总结

以上所述是小编给大家介绍的js实现评价的星星功能,希望对大家有所帮助