小程序渐变的五星评价

小程序渐变的五星评价

  • 概述

美团、饿了么很多软件都会带上评价星标,图片展示的方式可以让人非常直观的查看评店铺评价。
该组件可以输入一个数值、即可展示对应的分值。优点:小图标为css+iconfont字体,无需引用
多余的js、css样式或者图片,体积非常小;以小程序组件为例,其他语言也可参考;已经为您准备好base64的图
标,无需您自己生成。本文分为:概述、代码步骤、成品展示、git代码地址四个部分。

  • 成品展示

在这里插入图片描述
在这里插入图片描述

  • 代码

思路:五颗渐变的星星颜色不一样,加上灰色的,总共六种样式的五角星。先排列五颗渐变的星星,
每个小星星旁边放入一个布局为absolute的灰色小星星用来挡住有颜色的小星星。通过控制灰色
星星的宽度就可以达到我们的目的。

	<!-- 父页面 -->
	<star num="5"></star>
	<!-- 组件 -->
	<block>
	  <view class="starc">
		<view class="starc1">
		  <view class="star1 iconfont icon-shoucangjia"></view>
		  <view class="starg iconfont icon-shoucangjia" style="width: {{starWL[0]}};"></view>
		</view>
		<view class="starc1">
		  <view class="star2 iconfont icon-shoucangjia"></view>
		  <view class="starg iconfont icon-shoucangjia" style="width: {{starWL[1]}};"></view>
		</view>
		<view class="starc1">
		  <view class="star3 iconfont icon-shoucangjia"></view>
		  <view class="starg iconfont icon-shoucangjia" style="width: {{starWL[2]}};"></view>
		</view>
		<view class="starc1">
		  <view class="star4 iconfont icon-shoucangjia"></view>
		  <view class="starg iconfont icon-shoucangjia" style="width: {{starWL[3]}};"></view>
		</view>
		<view class="starc1">
		  <view class="stari iconfont icon-shoucangjia"></view>
		  <view class="starg iconfont icon-shoucangjia" style="width: {{starWL[4]}};"></view>
		</view>
	  </view>
	</block>	
	/* components/Star/Star.wxss */
	@font-face {
	  font-family: 'iconfont';
	  src: url('data:font/ttf;charset=utf-8;base64,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') format('truetype');  
	  font-weight: normal;
	  font-style: normal;
	  font-display: swap;
	}	
	
	.iconfont {
	  font-family: "iconfont" !important;
	  font-size: 16px;
	  font-style: normal;
	  -webkit-font-smoothing: antialiased;
	  -webkit-text-stroke-width: 0.2px;
	  -moz-osx-font-smoothing: grayscale;
	}
	
	.icon-shoucangjia:before {
	  content: "\e600";
	}

	.starc {
	  display: flex;
	  flex-direction: row;
	  width: 120rpx;
	  justify-content: space-between;
	}

	.starc1 {

	  position: relative;
	  transform: rotateY(180deg);
	}

	.starc .iconfont {
	  font-size: 18rpx;
	  margin-top: 7rpx;
	}

	.star1 {
	  color: #FF7531;
	}

	.star2 {
	  color: #FC552C;
	}

	.star3 {
	  color: #FE3E24;
	}

	.star4 {
	  color: #FE2D1D;
	}

	.stari {
	  font-family: "iconfont";
	  color: #FB1C1C;
	}

	.starg {
		position: absolute;
		overflow: hidden;
		color: #DCDCDC;
		top: 0;
	}
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    num: {
      type: Number,
      value: 5
    },

  },

  /**
   * 组件的初始数据
   */
  data: {
    starWL: []
  },
  lifetimes: {
    attached: function () {
      // 获取星星的值
      let n = this.data.num;
      n = n * 20;
      // 共有几个满星、余数是多少
      let all = Math.floor(n / 20);
      let rest = n - all * 20;
      console.log(n, all, rest)
      //星星宽度数组
      let starWL = []
      for (let i = 0; i < 5; i++) {
        if (all > i) {
          starWL[i] = 0
        } else {
          if (i - all != 0) {
            starWL[i] = '100%'
          } else {
            starWL[i] = (1 - rest / 20) * 100 + '%'
          }
        }
      }
      console.log(starWL)
      this.setData({
        starWL
      })
    }
  }
})

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值