微信小程序之星级评分(评分不为整数)

2018-08-07  本文已影响0人  肆意咯咯咯

这些天可能是星辰大海说的太多了,所以写代码的时候就遇到了星级评分的这个问题,因为星级评分你点击评分可能有半星和一星,所以展示评分的时候就会出现小数点,比如说4.1,3.7等,然后展示出来的星星就不能是一整个,当然我也看了一些APP,可能为了方便吧,采取了四舍五入取整的这种方法,也是可取的,毕竟能简单一点,但是为了完美起见,我苦苦研究了好长时间,虽然不是很完美,而且方法可能也有些幼稚,但是也算是坎坎坷坷的解决了问题,,,哈哈哈,下面我粘一下我的代码,希望能为可爱的你提供一点点帮助。

首先是wxml
<!--pages/test1/test1.wxml-->
<view class="score">
  <image src="../../image/score1.png" wx:for="{{ width }}" wx:key="unique" data-index="{{ index }}" style="width: {{ fontSize + 'rpx' }}; height: {{ fontSize + 'rpx' }};">
  <view class="star" style="width: {{ item + 'rpx' }}; height: {{ fontSize + 'rpx' }}; overflow:hidden;">
  <image class="star" src="{{stars[index]}}" style="width: {{fontSize + 'rpx' }}; height: {{ fontSize + 'rpx' }};">
  </image>
  </view>
  </image>
</view>
wxss
.score{
  width:40%;
  display:flex;
  justify-content: space-between;
  align-items:center;

}
.star{
  position: absolute;//这里做了定位,是将所有的块叠在一起
  top:0;
}
js
// pages/test1/test1.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    stars: ['../../image/score1.png', '../../image/score1.png', '../../image/score1.png', '../../image/score1.png', '../../image/score1.png'],
    width: ['50','50','50','50','50'],
    value:0,
    active:'../../image/score2.png',
    margin: 2,
    fontSize: '50'
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    var newwidth=this.data.width;
    var newstars=this.data.stars
    var value= 5;
    this.setData({
      value:value
    })
    for(var i=0;i<value-1;i++){
      newwidth[i] = this.data.fontSize
      newstars[i] = this.data.active
    }
    console.log(i);
    newwidth[i] = (value-i)*this.data.fontSize
    newstars[i] = this.data.active
    console.log(newwidth[i])
    console.log(newstars[i])
    this.setData({
      width:newwidth,
      stars:newstars
    })
    console.log(this.data.width)
    console.log(this.data.stars)
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
  
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
  
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {
  
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {
  
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
  
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
  
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {
  
  }
})

这里比较重要的一点就是对i的使用,for循环后出来的i为i++后的i的值,然后我做出来的这个可能有些麻烦,也谈不上有什么健壮性,所以肯定有许多需要修改的地方,等到我们联调的时候有需要改正或改进的地方我会再次进行修改的。

好滴好滴,就先到这里吧!!!

上一篇下一篇

猜你喜欢

热点阅读