uniapp实现滑动评分效果

本文实例为大家分享了uniapp实现滑动评分的具体代码,供大家参考,具体内容如下

uniapp开发、 滑动评分、点击评分

<template>
 <view>
  <view class="flex" style="margin:200rpx;">
    <block v-for="(item,index) in scoreArray" :key='index' ><!-- 遍历评分列表 -->
      <!-- 设置触摸事件和点击事件为同一个方法,否则点击却不滑动的话,不触发事件 -->
      <view class='starLen' @touchmove='changeScore'  @tap='changeScore' >
        <!-- 使用三目运算符来动态变化显示的是哪张图片,score是js中的分数,index是scoreArray的下标 -->
        <!-- src部分可以这样写 src="{{score>index?'../../images/fullStar.png':'../../images/nullStar.png'}}"  ,这样可以在js文件把fullStarUrl和nullStarUrl去掉 -->
        <image class='star' mode="aspectFill" :src="score>index?fullStarUrl:nullStarUrl" style="width: 30rpx; height: 30rpx;"/>
      </view>
    </block>
    <view class='scoreContent'>{{scoreContent}}</view><!-- 显示当前评分 -->
  </view>
 </view>
</template>

<script>
 export default{
  onLoad() {
  },
  data(){
   return{
        fullStarUrl: '满星的图片', //满星图片
        nullStarUrl: '空星图片', //空星图片
        score: 0, //评价分数
        scoreArray: [1, 2, 3, 4, 5], //分为1-5个评分层次
        scoreText: ['1星', '2星', '3星', '4星', '5星'], //评分列表
        scoreContent: '' //文字显示评分情况
   }
  },
  methods:{
     changeScore: function(e) {
       console.log(e)//控制台触摸事件信息
       var that = this;
       var num = 0;//临时数字,动态确定要传入的分数
       var touchX = e.touches[0].pageX;//获取当前触摸点X坐标
       var starMinX = 110;//最左边第一颗星的X坐标,假设距离页面距离为110,距离左边的距离是多少
       var starWidth = 15;//星星图标的宽度,假设15(已在wxss文件中设置".star")
       var starLen = 5;//星星之间的距离假设为5(已在wxss文件中设置".starLen")
       var starMaxX = starWidth * 5 + starLen * 4+starMinX;//最右侧星星最右侧的X坐标,需要加上5个星星的宽度和4个星星间距
       if (touchX > starMinX && touchX < starMaxX) {//点击及触摸的初始位置在星星所在空间之内
       //使用Math.ceil()方法取得当前触摸位置X坐标相对于(星星+星星间距)之比的整数,确定当前点击的是第几个星星
         num = Math.ceil((touchX - starMinX) / (starWidth + starLen));
         if (num != that.score) {//如果当前得分不等于刚设置的值,才赋值,因为touchmove方法刷新率很高,这样做可以节省点资源
             that.score = num,
             that.scoreContent=that.scoreText[num - 1]
         }
       } else if (touchX < starMinX) {//如果点击或触摸位置在第一颗星星左边,则恢复默认值,否则第一颗星星会一直存在
           that.score = 0,
           that.scoreContent =''
       }
     },
  }
 }
</script>

<style lang="less" scoped>
.starLen{
  margin-right: 10rpx;
  display: inline-block;
}

.star{
  width:30rpx;
  height:30rpx;
}

.scoreContent{
  margin-left: 100rpx;
  display: inline-block;
  color: #fff;
}
</style> 

代码中的距离都是按照10px/2,转为5rpx,(如果使用其他单位,请自行转换)
var starMinX = 110,最左边的星星离屏幕左边的距离
var starWidth = 15 ,为星星的宽度
var starLen = 5,为两个星星之间相隔的距离。
示例效果:

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

(0)

相关推荐

  • uniapp实现可滑动选项卡

    本文实例为大家分享了uniapp实现可滑动选项卡的具体代码,供大家参考,具体内容如下 tabControl-tag.vue <template name="tabControl"> <scroll-view scroll-x="true" :style="'background-color:'+bgc+';top:'+top+'px;'" :class="fixed?'fxied':''" :scroll-l

  • uniapp实现可以左右滑动导航栏

    本文实例为大家分享了uniapp实现左右滑动导航栏的具体代码,供大家参考,具体内容如下 <template> <view> <home-view></home-view> <view class="content-box" :id="isScale?'content-box-too':''"> <view class="nav-head-box top-nav-fixed">

  • uniapp实现滑动评分效果

    本文实例为大家分享了uniapp实现滑动评分的具体代码,供大家参考,具体内容如下 uniapp开发. 滑动评分.点击评分 <template> <view> <view class="flex" style="margin:200rpx;"> <block v-for="(item,index) in scoreArray" :key='index' ><!-- 遍历评分列表 --> &

  • jQuery实现滑动星星评分效果(每日分享)

    每日分享效果,今天分享一个jQuery滑动星星评分效果. jQuery星星评分制作5颗星星鼠标滑过评分打分效果,可取消评分结果,重新打分. HTML代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <link rel="stylesheet" h

  • Android自定义星星可滑动评分控件

    本文实例为大家分享了Android自定义星星可滑动评分控件的具体方法,供大家参考,具体内容如下 此控件通过线性布局结合ImageView来实现. 具有展示分数,滑动评分功能,可设置0-10分,自行设置星星图片,是否可点击与滑动,星星间距. 效果如下: 需准备好下面三张图片 先看自定义属性: <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name

  • Android自定义View实现星星评分效果

    目录 前言 1.测量与图片的绘制 2.事件的交互与计算 3. 回调处理与自定义属性抽取 后记 前言 在前面的学习中,我们基本了解了一些 Canvas 的绘制,那么这一章我们一起复习一下图片的绘制几种方式,和事件的简单交互方式. 我们从易到难,作为基础的进阶控件,我们从最简单的交互开始,那就自定义一个星星评分的控件吧. 一个 App 必不可少的评论系统打分的控件,可以展示评分,可以点击评分,可以滑动评分.它的实现总体上可以分为以下的步骤: 强制测量大小为我们指定的大小 先绘制Drawable未评分

  • 利用swift实现卡片横向滑动动画效果的方法示例

    本文主要给大家介绍了关于利用swift实现卡片横向滑动动画效果的相关资料,分享出来供大家参考学习,下面来一起看看详细的介绍吧. 根据惯例,首先上效果图: 那天去面试,面试官突然拿出手机点开了一个app,自个在那点了一会,然后问我 这个效果怎么实现,当时一看可以滑动,肯定用scrollView 或者 collectionView实现,就大概的说了下.今天刚好闲下来,就敲一敲这个效果. 先来分析下这个效果: 卡片是横向滚动,并且每个卡片的位置都是保持在屏幕中间的,而且 左右相邻的卡片都露出来一点边

  • 基于JavaScript实现滑动门效果

    本文实例为大家分享了滑动门效果的具体代码,供大家参考,具体内容如下 滑动门效果: 原理: 一共四道门,初始情况下,第一道门打开,其他三道门关闭,如第一个图所示. 假设图片的宽度是120px,其他三道门露出的宽度是80px. 初始状态下, 第二道门左边的距离是120px, 第三道门左边的距离是200px, 第四道门左边的距离是280px. 当第二道门打开时, 第二道门左边的距离是80px,为(120-40)px 第三道和第四道门左边的距离不变. 当第三道门打开时, 第二道门左边的距离是80px,

  • 原生javascript移动端滑动banner效果

    本文实例为大家分享了移动端滑动banner效果的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no,

  • JS创建优美的页面滑动块效果 - Glider.js

    曾经看到http://www.panic.com/coda/ 上的滑动块,非常喜欢.可惜自己多JS了解不深,没法模拟出来. 早上发现Google code上的一个JsFrame - Glider.js.很容易的实现http://www.panic.com/coda/ 上的滑动块效果. Google code上的项目地址:http://code.google.com/p/missingmethod-projects/ 600)?'600px':'auto'; }" alt=uploads/2007

  • jQuery动态星级评分效果实现方法

    本文实例讲述了jQuery动态星级评分效果实现方法.分享给大家供大家参考.具体如下: 这里的jQuery星级评分代码,是大家都很喜欢的功能,目前广泛应用,本星级评分加入了动画效果,注意,如果要真正实现星级评分,你需要动态程序配合,如ASP/PHP等,以便将评分值存入数据库. 运行效果如下图所示: 具体代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or

  • js实现左侧网页tab滑动门效果代码

    本文实例讲述了js实现左侧网页tab滑动门效果代码.分享给大家供大家参考.具体如下: 这是一款开口靠左的网页滑动门,网页滑动门,TAB滑动门,竖排滑动门菜单,竖排TAB选项卡,兼容IE6/IE7/FF/opera浏览器.其实竖排和横排的代码基本一样,只不过稍加修改就可以了.只要学会了一种滑动门,就能举一返三了. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/js-left-tab-cha-style-codes/ 具体代码如下: <!DOCTY

随机推荐