微信小程序实现星级评价效果


Posted in Javascript onDecember 28, 2018

本文实例为大家分享了微信小程序实现星级评价效果的具体代码,供大家参考,具体内容如下

效果预览:

微信小程序实现星级评价效果

wxml代码部分:

<view class='topMaxBox'>
 <view class='topLeft' style='width: {{ imgW }}px; height: {{ imgW }}px; flex: {{ imgW }}px 0 0;'>
 <image src='http://img02.tooopen.com/images/20150928/tooopen_sy_143912755726.jpg'></image>
 </view>
 <view class='topRight'>
 <view class='r_top'>
 <text>商品名称</text>
 <text>{{ evaluate }}</text>
 </view>
 <view class='r_bottom' catchtouchmove='moveFun' catchtouchstart='moveFun'>
 <image src='{{ starSrc }}'></image>
 </view>
 </view>
</view>

wxss代码部分:

.topMaxBox{
 padding: 5%;
 display: flex;
 flex-direction: row;
}

.topLeft{
 border: 1px solid #e5e5e5;
 margin-right: 10px;
}

.topLeft image{
 width: 100%;
 height: 100%;
}

.topRight{
 flex: 1;
 display: flex;
 flex-direction: column;
 justify-content: center;
}

.r_top{
 display: flex;
 justify-content: space-between;
 margin-bottom: 2%;
}

.r_bottom image{
 width: 130px;
 height: 18px;
}

app.sysInfo()封装在了app.js 文件全局使用下面是代码部分

/**
 * 获取系统信息
 */
 sysInfo: function () {
 let res = wx.getSystemInfoSync();
 let info = {
 width: res.windowWidth,//可使用窗口宽度
 height: res.windowHeight,//可使用窗口高度
 system: res.system,//操作系统版本
 statusBarHeight: res.statusBarHeight//状态栏的高度
 }
 return info;
 },

js代码部分:

const app = new getApp();

// page/issueEvaluate/issueEvaluate.js
Page({

 /**
 * 页面的初始数据
 */
 data: {
 imgW: app.sysInfo().width * 0.146,//根据屏幕宽度动态设置图片宽度
 starLen: 5,//星星评价的初始等级
 starSrcArr: ['../../image/star2-1.png', '../../image/star2-2.png', '../../image/star2-3.png', '../../image/star2-4.png', '../../image/star2-5.png', '../../image/star2-6.png'],//星星评价的图片资源数组
 starSrc: '../../image/star2-6.png',//星星评价的初始图片
 evaluate: '非常好',
 evaluateArr: ['非常差', '差', '一般', '好', '比较好', '非常好']
 },

 moveFun: function (e) {
 let imgBoxW = app.sysInfo().width * 0.146 + 10;//商品图片X轴尽头坐标(即星星的初始坐标值)
 let starW = 130 / 5;//每一颗星星的宽度(用于计算星星的X轴坐标)
 let xAxial = e.touches[0].clientX;//获取当前触摸的X轴坐标

 //如果当前触摸的X轴坐标小于初始坐标则显示为0颗星星
 if (xAxial < imgBoxW) {
 this.data.starLen = 0;
 //如果当前触摸的X轴坐标大于初始坐标并小于第2颗星星的初始坐标则显示为1颗星星
 } else if (imgBoxW + (starW * 2) > xAxial && xAxial > imgBoxW) {
 this.data.starLen = 1;
 //如果当前触摸的X轴坐标大于第2颗星星的初始坐标并小于第3颗星星的初始坐标则显示为2颗星星
 } else if (imgBoxW + (starW * 3) > xAxial && xAxial > imgBoxW + (starW * 2)) {
 this.data.starLen = 2;
 //如果当前触摸的X轴坐标大于第3颗星星的初始坐标并小于第4颗星星的初始坐标则显示为3颗星星
 } else if (imgBoxW + (starW * 4) > xAxial && xAxial > imgBoxW + (starW * 3)) {
 this.data.starLen = 3;
 //如果当前触摸的X轴坐标大于第4颗星星的初始坐标并小于第5颗星星的初始坐标则显示为4颗星星
 } else if (imgBoxW + (starW * 5) > xAxial && xAxial > imgBoxW + (starW * 4)) {
 this.data.starLen = 4;
 //如果当前触摸的X轴坐标大于第5颗星星初始坐标则显示为5颗星星
 } else if (xAxial > imgBoxW + (starW * 5)) {
 this.data.starLen = 5;
 }
 //设置img标签的SRC路径 替换成对应的星星图片
 this.data.starSrc = this.data.starSrcArr[this.data.starLen];
 //设置为对应的评价等级文字
 this.data.evaluate = this.data.evaluateArr[this.data.starLen];
 this.setData({
 starSrc: this.data.starSrc,
 evaluate: this.data.evaluate
 });
 },

})

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript学习基础笔记之DOM对象操作
Nov 03 Javascript
node.js中的querystring.unescape方法使用说明
Dec 10 Javascript
jQuery处理json数据返回数组和输出的方法
Mar 11 Javascript
javascript原型模式用法实例详解
Jun 04 Javascript
分享五个有用的jquery小技巧
Oct 08 Javascript
JS实现的简单鼠标跟随DiV层效果完整实例
Oct 31 Javascript
Bootstrap教程JS插件滚动监听学习笔记分享
May 18 Javascript
浅谈JavaScript中变量和函数声明的提升
Aug 09 Javascript
vue组件初学_弹射小球(实例讲解)
Sep 06 Javascript
layui实现table加载的示例代码
Aug 14 Javascript
JS eval代码快速解密实例解析
Apr 23 Javascript
JS图片预加载三种实现方法解析
May 08 Javascript
微信小程序实现日历效果
Dec 28 #Javascript
Mint UI实现A-Z字母排序的城市选择列表
Dec 28 #Javascript
axios携带cookie配置详解(axios+koa)
Dec 28 #Javascript
微信小程序日历/日期选择插件使用方法详解
Dec 28 #Javascript
解决echarts的多个折现数据出现坐标和值对不上的问题
Dec 28 #Javascript
微信小程序时间控件picker view使用详解
Dec 28 #Javascript
微信小程序时间选择插件使用详解
Dec 28 #Javascript
You might like
在VS2008中编译MYSQL5.1.48的方法
2010/07/03 PHP
php抛出异常与捕捉特定类型的异常详解
2016/10/26 PHP
js文件中调用js的实现方法小结
2009/10/23 Javascript
javascript 面向对象的JavaScript类
2010/05/04 Javascript
jsTree 基于JQuery的排序节点 Bug
2011/07/26 Javascript
基于jquery &amp; json的省市区联动代码
2012/06/26 Javascript
seajs1.3.0源码解析之module依赖有序加载
2012/11/07 Javascript
Google官方支持的NodeJS访问API,提供后台登录授权
2014/07/29 NodeJs
json字符串之间的相互转换示例代码
2014/08/21 Javascript
一款基jquery超炫的动画导航菜单可响应单击事件
2014/11/02 Javascript
JQuery 两种方法解决刚创建的元素遍历不到的问题
2016/04/13 Javascript
如何处理JSON中的特殊字符
2016/11/30 Javascript
原生JS获取元素集合的子元素宽度实例
2016/12/14 Javascript
JS原生带缩略图的图片切换效果
2018/10/10 Javascript
详解easyui 切换主题皮肤
2019/04/04 Javascript
JavaScript实现多层颜色选项卡嵌套
2020/09/21 Javascript
使用Python脚本在Linux下实现部分Bash Shell的教程
2015/04/17 Python
使用Python设置tmpfs来加速项目的教程
2015/04/17 Python
Python字典操作详细介绍及字典内建方法分享
2018/01/04 Python
pandas DataFrame实现几列数据合并成为新的一列方法
2018/06/08 Python
利用pyinstaller打包exe文件的基本教程
2019/05/02 Python
Python的互斥锁与信号量详解
2019/09/12 Python
Python 中判断列表是否为空的方法
2019/11/24 Python
Python Tornado之跨域请求与Options请求方式
2020/03/28 Python
Django多层嵌套ManyToMany字段ORM操作详解
2020/05/19 Python
Python3.9.1中使用split()的处理方法(推荐)
2021/02/07 Python
纯CSS3制作漂亮带动画效果的主机价格表
2015/04/25 HTML / CSS
稀有和绝版书籍:Biblio.com
2017/02/02 全球购物
检查接待方案
2014/02/27 职场文书
高级工程师英文求职信
2014/03/19 职场文书
学习雷锋演讲稿
2014/05/10 职场文书
群众路线四风自我剖析材料
2014/10/08 职场文书
幼儿园教学工作总结2015
2015/05/12 职场文书
七年级之开学家长寄语35句
2019/09/05 职场文书
python内置进制转换函数的操作
2021/06/02 Python
mongodb清除连接和日志的正确方法分享
2021/09/15 MongoDB