js 根据亲密度数据组装类似于评分星星效果

 

之前项目有需求要用到类似于评分的展示功能,所以做了个例子,虽然粗糙,但有效果,记录一下。

注:只是根据数据单纯的展示星星,不具备打分评分功能。

 

实现效果如图所示:

 

第一步: 需要三张图片

一张图片为全星,一张为半星,一张为空星,图片可以去阿里图标库搜索半星下载。

 

第二步:js的实现部分

// 定义星星图片url
var startAll = '<img style="padding-bottom: 4px;" src= "文件夹路径/startAll.png"/>';
var startPart = '<img style="padding-bottom: 4px;" src= "文件夹路径/startPart.png"/>';
var startnull = '<img style="padding-bottom: 4px;" src= "文件夹路径/startnull.png"/>';

// 获取亲密度:
比如 var num = "0.88"
// 因为效果是5个星,所以除以2,并获取一位小数点。
var degree = (num * 10 / 2).toFixed(1); 
// 获取组装好的图片路径
var startHtml = addStart(degree);

// ....剩下的就是展示逻辑,不展开说明




// js 的星星方法
// 思路就是:
// 1.先定义星星数量startNum = 5,
// 2. parseInt组装满星  
// 3.判断小数点后一位是否为0,不为0则装一个半星  
// 4.然后组装剩余的星星
function addStart(degreeNum) {
	var startHtml = '';
	var startNum = 5; // 设置星星个数为5个
	var degree = parseInt(degreeNum); // 亲密度全满的星星个数
	// 循环满的星星
	for (var i = 0; i < degree; i++) {
		startHtml += startAll;
		startNum--;
	}
	// 切割传过来的小数
	var splitDegree = degreeNum.split(".");
	// 判断小数点后面的是否为0,不为零则加半星
	if (splitDegree[1] != 0){
		startHtml += startPart;
		startNum--
	}
	// 组装空星星
	for (var k = 0; k < startNum ; k++) {
		startHtml += startnull;
	}
	return startHtml;
}

 

综上所述,只要3张图片,亲密度数据,以及组装的加星的方法,即可组装成星星的html,剩下的只需要把这个startHtml放去需要展示的标签内即可。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值