zoukankan      html  css  js  c++  java
  • 电商网站订单评价得分的星级样式实现

    概述:

    电商网站中的订单一般都允许评价,比如质量评价和服务评价等,页面上以星星多少表示评价的高低。

    (以下截图来源于京东)

    本文基于自己的理解和实现“五星级评价”,供参考。

    ----------------------------------------------------------------------------

    前期准备:

        从京东订单页面中拷贝了一个图片,此处命名为star-s.png。

    图片star-s.png:

        

    图片分析:

        像素160×15px,包含5个满星和5个空星,每个星星的像素都是15×15px,左对齐,最右边留有15×15px的空白(暂时没理解这片空白区域的用途)。

    ----------------------------------------------------------------------------

    第一部分:静态得分呈现

    功能:

        已评价的订单显示出具体的星级得分。

    实现方式:

        评价区域的div尺寸为75×15px,将背景图片设置为star-s.png,div区域正好显示五颗星。

        星级的不同完全取决于图片的background-position-x值,以15px为单位,初始值设置为-75px时,页面显示出来的是空星,即得分是零颗星。如果得分设置为一颗星,则将图片右移15px,即background-position-x的值增加15px至-60px。其他星级得分以此类推。

    具体代码:

           将不同的星级参数background-position-x值以类名区分,不同的星级得分设置为具体的类名即可。

    (样式代码)

     1            /*星级图片区域div的样式*/
     2            .star-s
     3             {
     4                 display:inline-block;
     5                 height:15px;
     6                 width:75px;
     7                 background-image:url("star-s.png");
     8             }
     9             /*零颗星的样式*/
    10             .s0
    11             {
    12                 background-position-x:-75px;
    13             }
    14             /*一颗星的样式*/
    15             .s1
    16             {
    17                 background-position-x:-60px;
    18             }
    19             /*两颗星的样式*/
    20             .s2
    21             {
    22                 background-position-x:-45px;
    23             }
    24             /*三颗星的样式*/
    25             .s3
    26             {
    27                 background-position-x:-30px;
    28             }
    29             /*四颗星的样式*/
    30             .s4
    31             {
    32                 background-position-x:-15px;
    33             }
    34             /*五颗星的样式*/
    35             .s5
    36             {
    37                 background-position-x:0px;
    38             }
    View Code

    (HTML代码)

    1             零颗星<div class="star-s s0"></div><br/>
    2             一颗星<div class="star-s s1"></div><br/>
    3             两颗星<div class="star-s s2"></div><br/>
    4             三颗星<div class="star-s s3"></div><br/>
    5             四颗星<div class="star-s s4"></div><br/>
    6             五颗星<div class="star-s s5"></div>
    View Code

    (呈现效果)

    第二部分:动态实现评价得分

    功能

        未评价的订单允许用户通过鼠标点击星级图片给订单打分。

    实现方式:

        由于星级图片的呈现区域大小固定,鼠标进入该区域后需要获取到鼠标相对于该区域左侧的距离,根据该距离与15px的关系,动态调整该div的类名以实现星级图片的改变。

        监控每个星级区域div的mousemove事件,获取该事件的参数e,e.offsetX表示鼠标距离该div左侧的距离。根据e.offsetX/15得到的整数来确定当前鼠标所处的星级。

    具体代码:

        封装一个公用函数,传入星级图片所在div的id,返回鼠标点击星级图片后的分数值(默认得分为1分,可自设)。

    (HTML代码)

    1             质量评价<div id="quality" class="star-s"></div><br/>
    2             服务评价<div id="service" class="star-s"></div>
    View Code

    (JavaScript代码)

     1                /*封装函数*/
     2                function StarComment(eleID) {
     3                 var starValue = 1;
     4                 var tar = $("#" + eleID)[0];
     5                 var dealMousemove=function(e) {
     6                     var that = e;
     7                     console.log(e.offsetX);
     8                     starValue = parseInt(e.offsetX / 15) + 1;
     9                     tar.className = "star-s s" + starValue.toString();
    10                     console.log(tar.className);
    11                 }
    12                 $(tar).bind("mousemove", function (e) {
    13                     dealMousemove(e);
    14                 });
    15                 $(tar).bind("click", function () {
    16                     $(tar).unbind("mousemove")
    17                 });
    18                 
    19                 /*开放接口函数:返回div的星级分数*/
    20                 this.getStarValue=function(){
    21                     return starValue;
    22                 }
    23             }
    24 
    25             /*根据需要初始化指定的div,给其赋予星级得分功能*/
    26             var starQuality = new StarComment("quality");
    27             var starService = new StarComment("service");
    View Code

    (呈现效果)

    完整代码附后:

     1 <html>
     2     <head>
     3         <script src="jquery-1.9.1.js"></script>
     4         <script src="jquery-1.9.1.min.js"></script>
     5         <style type="text/css">
     6             .star-s
     7             {
     8                 display:inline-block;
     9                 height:15px;
    10                 width:75px;
    11                 background-image:url("star-s.png");
    12             }
    13             .s0
    14             {
    15                 background-position-x:-75px;
    16             }
    17             .s1
    18             {
    19                 background-position-x:-60px;
    20             }
    21             .s2
    22             {
    23                 background-position-x:-45px;
    24             }
    25             .s3
    26             {
    27                 background-position-x:-30px;
    28             }
    29             .s4
    30             {
    31                 background-position-x:-15px;
    32             }
    33             .s5
    34             {
    35                 background-position-x:0px;
    36             }
    37 
    38         </style>
    39     </head>
    40     <body>
    41         <div >
    42             零颗星<div class="star-s s0"></div><br/>
    43             一颗星<div class="star-s s1"></div><br/>
    44             两颗星<div class="star-s s2"></div><br/>
    45             三颗星<div class="star-s s3"></div><br/>
    46             四颗星<div class="star-s s4"></div><br/>
    47             五颗星<div class="star-s s5"></div>
    48         </div>
    49         <div >
    50             质量评价<div id="quality" class="star-s"></div><br/>
    51             服务评价<div id="service" class="star-s"></div>
    52         </div>
    53 
    54         <script type="text/javascript">
    55             
    56             function StarComment(eleID) {
    57                 var starValue = 1;
    58                 var tar = $("#" + eleID)[0];
    59                 var dealMousemove=function(e) {
    60                     var that = e;
    61                     console.log(e.offsetX);
    62                     starValue = parseInt(e.offsetX / 15) + 1;
    63                     tar.className = "star-s s" + starValue.toString();
    64                     console.log(tar.className);
    65                 }
    66                 $(tar).bind("mousemove", function (e) {
    67                     dealMousemove(e);
    68                 });
    69                 $(tar).bind("click", function () {
    70                     $(tar).unbind("mousemove")
    71                 });
    72                 
    73                 this.getStarValue=function(){
    74                     return starValue;
    75                 }
    76             }
    77 
    78             var starQuality = new StarComment("quality");
    79             var starService = new StarComment("service");
    80         </script>
    81     </body>
    82 </html>
    View Code
  • 相关阅读:
    简单到一步安装 xgboost (Windows 64位环境)——anaconda环境
    python中的字符数字之间的转换函数
    Python之基础练习题
    SAS基础语句
    linux 查询目录大小并排序
    loadrunner get、Post 请求的一个java vuser 脚本
    mysql 解析 json格式的字段
    java 使用fast json 与 Map List互相转换
    windows 系统 端口数调整 比避免出现 time_wait连接状态过多
    java 枚举 enum使用
  • 原文地址:https://www.cnblogs.com/mzyj/p/5350007.html
Copyright © 2011-2022 走看看