评分插件在购物的应用中经常可以看得到,但是用着别人的总是没有自己写的顺手,正好趁着这段时间做一个移动端应用的时候写了一个基于VUE的评分组件,功能没有写全

效果图.gif

主体结构:

.scoreLayer(v-show="isShowScore" @click="hideScoreLayer($event)")

.center-box

.star-box.flex-between

ul.star-list(@touchstart="touchStart" @touchmove="touchMove" ref="star")

li.star-item(

v-for="i in scoreList"

:class="{half: i.state == 1, full: i.state == 2}"

)

p.star-num {{score}}分

button.btn-confirm(@click="submit") 确定

最外层是一个遮罩,因为评分做成一个弹框形式,因此给弹框一个层,让其浮动在其他内容之上

接下来是样式设计:

.flex-between

display flex

justify-content space-between

.scoreLayer

display flex

align-items center

justify-content center

background-color rgba(0,0,0,.3)

.center-box

padding-top 0.4rem

padding-bottom 0.4rem

width 50%

background-color #FFF

border-radius 5px

box-shadow 0 0 5px #ccc

.star-box

padding 0 0.2rem

align-items center

.star-item

display inline-block

width 0.5rem

height 0.5rem

background url('./img/emptyStar.png') no-repeat center

background-size 0.5rem 0.5rem

&.half

background url('./img/halfStar.png') no-repeat center

&.full

background url('./img/fullStar.png') no-repeat center

基本样式就不多说了,将该组件的效果实现吧

export default {

data () {

return {

x0: 0, // 滑动初始点击位置

len: 0, // 包裹星星的div的宽度

score: 0, // 分数

isShowScore: false // 是否显示弹框

}

},

computed: {

scoreList () {

// 用一个数组存储每个星星的状态,如果是满星就是2,半星就是1,没有就是0

let i = 1

let state

const stateArr = []

do {

if (this.score >= 2 * i ) {

state = 2

} else if (this.score == 2 * i - 1) {

state = 1

} else {

state = 0

}

stateArr.push({

state

})

i++

} while (i <= 5)

return stateArr

}

},

methods: {

hideScoreLayer (evt) {

if (typeof evt ==='symbol' || (evt && evt.target.classList.contains('scoreLayer'))) {

this.isShowScore = false

this.score = 0

}

},

showScoreLayer () {

this.isShowScore = true

},

touchStart (evt) {

if (evt && evt.touches.length === 1) {

this.len = this.$refs.star.offsetWidth

this.x0 = evt.touches[0].clientX

}

},

touchMove (evt) {

this.score = 0

if (evt) {

let score = parseInt((evt.touches[0].clientX - this.x0)/this.len * 10)

this.score = score > 10 ? 10 : score

}

},

submit () {

// 提交数据

}

}

}

在这个组件中,只实现了右滑评分的效果,如果需要左滑就需要在touchMove事件中进一步判断

上述仅是我的一个小小的分享,可能有不好的地方,可以给我提出来,thx,告辞~

html 星星遮罩,vue 星星评分组件相关推荐

  1. vue 动态设置组件高度_高度动态的Vue明星评分组件

    vue 动态设置组件高度 虚拟动态星级 (vue-dynamic-star-rating) A Highly Customizable, easy-to-use elegant stars ratin ...

  2. Full-featured Vue 评分组件

    分享一下最近写的 vue 的评分组件 Features: 支持半星.可清除.文案展示.只读.自定义颜色.自定义字符及图片等.支持 hover 的时候改变 value.内置三种样式,以及非常好看 DEM ...

  3. vue自定义星星评分组件rater,可自定义星星图片,大小,暂不支持半颗星

    在线预览地址:https://wenyuming.github.io/w-demos/dist/index.html#/rater 鉴于第三方ui库的星星评分组件星星基本上是固定,不能自定义,使用起来 ...

  4. Vue - 满意度调查评价功能,表情图片打分评分组件(非星星评分组件,类似抖音商品满意度好评、中评、差评评价功能)代码干净整洁注释详细无 BUG,无任何第三方插件依赖,完整功能实例源码插件

    前言 网上的教程组件代码写的太多,而且功能不好用,主要都存在图片切换时 "闪烁" 的问题. 实现了 适用于 Vue.js / Nuxt.js 的表情图片满意度评价功能(评分组件), ...

  5. 豆瓣评分小程序星星评分组件

    豆瓣评分小程序星星评分组件 评分功能:小星星,多处使用,所以抽出成为component组件,然后在需要使用的页面按需注册导入 1.1,新建component名为stars 1.2,然后按需在页面注册 ...

  6. 微信小程序-星星评分组件(支持半星/自定义尺寸)

    由于从网上直接copy的评分组件虽然能用,但是我找到的组件渲染做得稍差,于是准备自己改进一下. 先放一个效果图: 一.准备 准备类似的四张图片,图片一定要根据像素点精准对半切开,否则在小程序中会出现重 ...

  7. 微信小程序星星评分组件

    最近接了一个评分的功能,大概是这样的 点击星星进行评分,类似淘宝的星星评分 自己琢磨写了一个组件,记录一下,如果有优化的后期再优化 先新建一个score组件文件夹 2.score.wxml <v ...

  8. 微信小程序 - 满意度调查评价功能,表情图片打分评分组件(非星星评分组件,类似抖音商品满意度好评、中评、差评评价功能)代码干净整洁注释详细无 BUG,无任何第三方插件依赖,完整功能实例源码插件

    前言 网上的教程组件代码写的太多,而且功能不好用,主要都存在图片切换时 "闪烁" 的问题. 实现了 适用于微信小程序的表情图片满意度评价功能(评分组件),高效无 BUG 没有任何插 ...

  9. Libgdx学习笔记:UI之评分组件

    2019独角兽企业重金招聘Python工程师标准>>> 评分组件. 使用方法: // 星星上限,亮图,背景图 CHRatingBar chRatingBar = new CHRati ...

最新文章

  1. 构建之法读后感part6
  2. 【联邦学习】FATE 集群部署 step3
  3. BUUCTF(pwn)inndy_echo(32位格式化字符串修改got表)
  4. pagerank算法实现matlab,Matlab 入门及PageRank算法求解.ppt
  5. 中统计字符串长度的函数_SQL Server中的字符串分割函数
  6. 不看绝对血亏!java字符串转json
  7. opencv3.2.0形态学滤波之开运算、闭运算
  8. iOS App创建桌面快捷方式
  9. 前脚修复,后脚放 PoC:马上修复这个严重的SAP Recon 漏洞!
  10. Atitit 项目培训与学校的一些思路总结
  11. 世界各国国家代码简称
  12. 《CLR via C#》读书笔记-.NET多线程(一)
  13. 解决问题:chrome和edge浏览器出现“你的连接不是专用连接“,无法继续访问页面
  14. 移动硬盘插入提示需要格式化RAW_移动硬盘怎么分区,硬盘分区教程学习
  15. 适用于开发者的开源分布式即时通讯系统
  16. 全栈学习的知识点梳理(一)
  17. 网站seo优化方式途径
  18. VMware虚拟机配置环境变量及MySQL
  19. 同位素标记其他的研究方法和技术
  20. QT5.12.0警告 zero as null pointer constant

热门文章

  1. 为何要使用一物一码防伪系统
  2. ABP 在 EntityFramework 中使用扩展实现批量操作
  3. 趣味端午节,程序猿特殊的献礼
  4. 第2章第15节:使用分栏减少视觉疲劳 [PowerPoint精美幻灯片实战教程]
  5. 灰色关联度分析,灰色预测——基于matlab
  6. Java小项目(二)---外卖订餐系统
  7. 抓取网页并保存静态资源
  8. 【ROS理论与实践-赵虚左老师】Chap2 ROS通信机制
  9. 如何为 FB Messenger 设置聊天机器人?
  10. . mysql host.frm_Mysql Can't find file: './mysql/host.frm' (errno: 13) 的解决方法