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


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实例教程(19) 使用HoTMetal(4)
Dec 23 Javascript
基于Jquery制作的幻灯片图集效果打包下载
Feb 12 Javascript
JS正则表达式获取分组内容的方法详解
Nov 15 Javascript
jquery中event对象属性与方法小结
Dec 18 Javascript
thinkphp 表名 大小写 窍门
Feb 01 Javascript
理解 JavaScript EventEmitter
Mar 29 Javascript
微信小程序自定义组件的实现方法及自定义组件与页面间的数据传递问题
Oct 09 Javascript
vue实现的组件兄弟间通信功能示例
Dec 04 Javascript
基于Vue2-Calendar改进的日历组件(含中文使用说明)
Apr 14 Javascript
Vue实现日历小插件
Jun 26 Javascript
node实现爬虫的几种简易方式
Aug 22 Javascript
使用layui的layer组件做弹出层的例子
Sep 27 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
PHP 高手之路(二)
2006/10/09 PHP
php生成二维码时出现中文乱码的解决方法
2014/12/18 PHP
利用Fix Rss Feeds插件修复WordPress的Feed显示错误
2015/12/19 PHP
php htmlentities()函数的定义和用法
2016/05/13 PHP
Smarty模板变量调节器用法分析
2016/05/23 PHP
JavaScript 闭包深入理解(closure)
2009/05/27 Javascript
实现点击列表弹出列表索引的两种方式
2013/03/08 Javascript
js跨域问题浅析及解决方法优缺点对比
2014/11/08 Javascript
Node.js实现批量去除BOM文件头
2014/12/20 Javascript
jQuery中 attr() 方法使用小结
2015/05/03 Javascript
jQuery实现将div中滚动条滚动到指定位置的方法
2016/08/10 Javascript
Node.js中如何合并两个复杂对象详解
2016/12/31 Javascript
js实现1,2,3,5数字按照概率生成
2017/09/12 Javascript
详解HTML5 使用video标签实现选择摄像头功能
2017/10/25 Javascript
Angularjs实现多图片上传预览功能
2018/07/18 Javascript
laypage.js分页插件使用方法详解
2019/07/27 Javascript
python去除所有html标签的方法
2015/05/05 Python
利用django如何解析用户上传的excel文件
2017/07/24 Python
python实现手机通讯录搜索功能
2018/02/22 Python
Python使用matplotlib 画矩形的三种方式分析
2019/10/31 Python
Django多数据库配置及逆向生成model教程
2020/03/28 Python
python 利用Pyinstaller打包Web项目
2020/10/23 Python
H5调用相机拍照并压缩图片的实例代码
2017/07/20 HTML / CSS
香港个人化生活购物网站:Ballyhoo Limited
2016/09/10 全球购物
台湾母婴用品购物网站:Infant婴之房
2018/06/15 全球购物
科颜氏法国官网:Kiehl’s法国
2019/08/20 全球购物
巴西箱包、背包、钱包和旅行配件购物网站:Inovathi
2019/12/14 全球购物
十佳教师事迹材料
2014/01/11 职场文书
致标枪运动员加油稿
2014/02/15 职场文书
普通大学毕业生自荐信范文
2014/02/23 职场文书
绿色家庭事迹材料
2014/05/01 职场文书
英文道歉信
2015/01/20 职场文书
2015年酒店年度工作总结
2015/05/23 职场文书
互联网的下一个风口:新的独角兽将诞生
2019/08/02 职场文书
python随机打印成绩排名表
2021/06/23 Python
Redis 哨兵机制及配置实现
2022/03/25 Redis