JS实现评价的星星功能


Posted in Javascript onAugust 20, 2017

刚开始接触写星星评价时,哇!估计脑子刚被驴踢了,竟然想到了最笨的办法-手工画五角星。妈呀! 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实现评价的星星功能,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
使用户点击后退按钮使效三行代码
Jul 07 Javascript
JavaScript面向对象程序设计三 原型模式(上)
Dec 21 Javascript
EASYUI TREEGRID异步加载数据实现方法
Aug 22 Javascript
让checkbox不选中即将选中的checkbox不选中
Jul 11 Javascript
详解JS函数重载
Dec 04 Javascript
JavaScript获取当前网页最后修改时间的方法
Apr 03 Javascript
详解javascript跨浏览器事件处理程序
Mar 27 Javascript
深入理解MVC中的时间js格式化
May 19 Javascript
聊一聊Vue.js过渡效果
Sep 07 Javascript
Node.js中Bootstrap-table的两种分页的实现方法
Sep 18 Javascript
详解Express笔记之动态渲染HTML(新手入坑)
Dec 13 Javascript
原生JS实现记忆翻牌游戏
Jul 31 Javascript
详解A标签中href=&quot;&quot;的几种用法
Aug 20 #Javascript
Cropper.js 实现裁剪图片并上传(PC端)
Aug 20 #Javascript
Bootstrap 模态框(Modal)带参数传值实例
Aug 20 #Javascript
mui 打开新窗口的方式总结及注意事项
Aug 20 #Javascript
ES6扩展运算符的用途实例详解
Aug 20 #Javascript
关于JavaScript的单双引号嵌套问题
Aug 20 #Javascript
Vue动态组件实例解析
Aug 20 #Javascript
You might like
PHP 页面编码声明方法详解(header或meta)
2010/03/12 PHP
Apache服务器无法使用的解决方法
2013/05/08 PHP
基于PHP5魔术常量与魔术方法的详解
2013/06/13 PHP
PHP循环遍历数组的3种方法list()、each()和while总结
2014/11/19 PHP
thinkphp循环结构用法实例
2014/11/24 PHP
php中header跳转使用include包含解决参数丢失问题
2015/05/08 PHP
php实现比较两个字符串日期大小的方法
2015/05/12 PHP
dvwa+xampp搭建显示乱码的问题及解决方案
2015/08/23 PHP
iis 7下安装laravel 5.4环境的方法教程
2017/06/14 PHP
php strftime函数的详细用法
2018/06/21 PHP
25个优雅的jQuery Tooltip插件推荐
2011/05/25 Javascript
js 字符串转化成数字的代码
2011/06/29 Javascript
跟我学Nodejs(三)--- Node.js模块
2014/05/25 NodeJs
js实现鼠标感应图片展示的方法
2015/02/27 Javascript
如何在Linux上安装Node.js
2016/04/01 Javascript
promise处理多个相互依赖的异步请求(实例讲解)
2017/08/03 Javascript
javascript显示动态时间的方法汇总
2018/07/06 Javascript
使用jquery-easyui的布局layout写后台管理页面的代码详解
2019/06/19 jQuery
原生js实现可兼容PC和移动端的拖动滑块功能详解【测试可用】
2019/08/15 Javascript
Python的ORM框架SQLObject入门实例
2014/04/28 Python
django中ORM模型常用的字段的使用方法
2019/03/05 Python
Python 实现遥感影像波段组合的示例代码
2019/08/04 Python
通过实例了解Python str()和repr()的区别
2020/01/17 Python
Tensorflow设置显存自适应,显存比例的操作
2020/02/03 Python
Tensorflow进行多维矩阵的拆分与拼接实例
2020/02/07 Python
python SOCKET编程基础入门
2021/02/27 Python
HTML5之SVG 2D入门9—蒙板及mask元素介绍与应用
2013/01/30 HTML / CSS
基于zepto的插件之移动端无缝向上滚动并上下触摸滑动实例代码
2016/12/20 HTML / CSS
美国南部最大的家族百货公司:Belk
2017/01/30 全球购物
安全的后院和健身蹦床:JumpSport
2019/07/15 全球购物
法国一家多品牌成衣精品中/高档商店:Graduate Store
2019/08/28 全球购物
英国发展最快的在线超市之一:Click Marketplace
2021/02/15 全球购物
Yahoo的PHP面试题
2014/05/26 面试题
给排水工程师岗位职责
2013/11/21 职场文书
组织鉴定材料
2014/06/02 职场文书
一年之计:2019年下半年的计划
2019/05/07 职场文书