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 相关文章推荐
JavaScript 解析读取XML文档 实例代码
Jul 07 Javascript
jQuery boxy弹出层插件中文演示及使用讲解
Feb 24 Javascript
JS自调用匿名函数具体实现
Feb 11 Javascript
javascript动态创建及删除元素的方法
Dec 22 Javascript
JS实现淡蓝色简洁竖向Tab点击切换效果
Oct 06 Javascript
jQuery的ajax和遍历数组json实例代码
Aug 01 Javascript
微信小程序中单位rpx和rem的使用
Dec 06 Javascript
JS中的BOM应用
Feb 02 Javascript
Vuejs在v-for中,利用index来对第一项添加class的方法
Mar 03 Javascript
Vue js 的生命周期(看了就懂)(推荐)
Mar 29 Javascript
JS实现移动端点击按钮复制文本内容
Jul 28 Javascript
vue使用element-ui实现表单验证
Dec 13 Vue.js
详解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程序中的常见漏洞进行攻击(上)
2006/10/09 PHP
php获取地址栏信息的代码
2008/10/08 PHP
PHP ? EasyUI DataGrid 资料取的方式介绍
2012/11/07 PHP
php实现查询百度google收录情况(示例代码)
2013/08/02 PHP
PHP实现字符串的全排列详解
2019/04/24 PHP
PHP cookie,session的使用与用户自动登录功能实现方法分析
2019/06/05 PHP
用javascript实现分割提取页面所需内容
2007/05/09 Javascript
javascript实现仿银行密码输入框效果的代码
2007/12/13 Javascript
js利用div背景,做一个竖线的效果。
2008/11/22 Javascript
浅析JavaScript中的常用算法与函数
2013/11/21 Javascript
如何获取网站icon有哪些可行的方法
2014/06/05 Javascript
jQuery EasyUi实战教程之布局篇
2016/01/26 Javascript
Javascript小技能总结(推荐)
2016/06/02 Javascript
jQuery滚动新闻实现代码
2016/06/26 Javascript
详解支持Angular 2的表格控件
2017/01/19 Javascript
vue 开发一个按钮组件的示例代码
2018/03/27 Javascript
[34:47]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第一场 11.18
2020/11/18 DOTA
Django中对数据查询结果进行排序的方法
2015/07/17 Python
Python对象属性自动更新操作示例
2018/06/15 Python
解决win64 Python下安装PIL出错问题(图解)
2018/09/03 Python
Python中list的交、并、差集获取方法示例
2019/08/01 Python
python内打印变量之%和f的实例
2020/02/19 Python
美体小铺英国官网:The Body Shop英国
2017/01/24 全球购物
美国市场上最实惠的送餐服务:Dinnerly
2018/03/18 全球购物
如何估计一张表的大小(假设该表中有1万条数据)
2016/03/27 面试题
施惠特软件测试面试题以及笔试题
2015/05/13 面试题
应届生人事助理求职信
2013/11/09 职场文书
财务分析个人的自荐书范文
2013/11/24 职场文书
不假外出检讨书
2014/01/27 职场文书
2014年建筑工程工作总结
2014/12/03 职场文书
课外活动实习计划
2015/01/19 职场文书
放弃遗产继承公证书
2015/01/26 职场文书
毕业论文致谢范文
2015/05/14 职场文书
导游词之日本富士山
2020/01/06 职场文书
Nginx反向代理多个服务器的实现方法
2021/03/31 Servers
GoFrame框架数据校验之校验结果Error接口对象
2022/06/21 Golang