JS星星评分

本文链接

一个支持小数的星星评分

最近在开发过程中遇到了这个星星评分的需求,就自己写了一个。尽量的简化代码,支持多个、支持循环。废话不多说,直接上代码。
在这里插入图片描述
首先引入JQ

<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>

css部分

			.xing_body {
				background-color: #dcdcdc;
				width: 15px;
				height: 15px;
				overflow: hidden;
				margin: 0;
				background-position: center;
				background-repeat: no-repeat;
				background-size: cover;
				position: relative;
				border-radius: 2px;
				display: flex;
				justify-content: center;
				align-items: center;
				margin-right: 2px;
			}

			.xing {
				display: flex;
				margin: 10px;
			}

			.jindu {
				height: 100%;
				background-color: #ff5610;
				position: absolute;
				left: 0;
			}

html部分

		<a class="pingfen">
			<div class="xing" id="div_0">
				<input class="ceshi" type="hidden" name="" id="0" value="4.1" /><!-- 星星评分 -->
			</div>
		</a>
		<a class="pingfen" style="margin-top: 40px;">
			<div class="xing" id="div_1">
				<input class="ceshi" type="hidden" name="" id="1" value="2.8" /><!-- 星星评分 -->
			</div>
		</a>

js部分

			$(document).ready(function() {
				var html = "";
				html += '<div class="xing_body">';
				html +=
					'<svg style="width: 11px !important;height: 11px !important;z-index: 999;" t="1571127072846" class="icon" viewBox="0 0 1025 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="16104" width="100" height="100"><path d="M778.479 1002.496c-12.288 0-24.576-3.071-37.888-10.239L533.742 883.713c-5.12-3.072-12.288-5.12-20.479-5.12-7.168 0-15.36 2.048-20.48 4.096L286.959 992.257c-12.288 7.168-24.576 10.239-38.912 10.239-24.576 0-48.128-11.264-64.513-29.695-16.384-18.433-22.527-43.008-18.432-67.584l39.937-229.376c2.048-14.336-3.072-28.672-13.313-38.912L25.839 476.16C2.287 453.633-5.905 420.864 4.335 390.144c10.239-30.721 35.84-52.225 67.584-57.345l229.376-33.792c14.336-2.048 27.647-11.264 33.791-23.552l102.4-208.896c14.336-28.672 43.008-46.08 74.752-46.08s60.416 17.408 74.752 46.08l102.4 208.896c7.168 13.313 19.456 21.504 33.792 23.552L952.559 332.8c31.744 5.12 57.344 26.624 67.584 56.32 10.24 30.72 2.048 63.488-20.48 86.017L834.799 636.928c-11.265 10.24-15.36 24.576-13.313 38.912l38.912 228.352c4.096 24.576-2.048 49.152-18.432 67.584C826.607 991.232 803.055 1002.496 778.479 1002.496z" p-id="16105" fill="#ffffff"></path></svg>';
				html += '<div class="jindu" style="width: 0px;"></div>';
				html += '</div>';
				for (i = 0; i < 5; i++) {
					$(".xing").append(html);
				}
				$(".pingfen input").each(function() {
					var fenshu = $(this).val(); //获取分数
					var id = $(this).attr("id");
					console.log(fenshu);
					console.log("###" + id);
					fenshu = fenshu * 1;
					var zhengshu = parseInt(fenshu); //保留分数整数部分
					console.log(zhengshu);
					for (i = 0; i < zhengshu; i++) {
						$("#div_" + id + " .xing_body").children("div").eq(i).css("width", "20px");
					}
					var width = (fenshu - zhengshu) / 1 * 15; //15为星块的宽度
					width = width.toFixed(1);
					width = width + "px";
					console.log("~~~" + width);
					$("#div_" + id + " .xing_body").children("div").eq(zhengshu).css("width", width);
				});
			});

完整代码

<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8" name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
		<title>在线点单</title>
		<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
		<style type="text/css">
			html,
			body {
				margin: 0;
			}
		</style>
		<style type="text/css">
			.xing_body {
				background-color: #dcdcdc;
				width: 15px;
				height: 15px;
				overflow: hidden;
				margin: 0;
				background-position: center;
				background-repeat: no-repeat;
				background-size: cover;
				position: relative;
				border-radius: 2px;
				display: flex;
				justify-content: center;
				align-items: center;
				margin-right: 2px;
			}

			.xing {
				display: flex;
				margin: 10px;
			}

			.jindu {
				height: 100%;
				background-color: #ff5610;
				position: absolute;
				left: 0;
			}
		</style>

	</head>

	<body>

		<a class="pingfen">
			<div class="xing" id="div_0">
				<input class="ceshi" type="hidden" name="" id="0" value="4.1" /><!-- 星星评分 -->
			</div>
		</a>
		<a class="pingfen" style="margin-top: 40px;">
			<div class="xing" id="div_1">
				<input class="ceshi" type="hidden" name="" id="1" value="2.8" /><!-- 星星评分 -->
			</div>
		</a>
		<script type="text/javascript">
			$(document).ready(function() {
				var html = "";
				html += '<div class="xing_body">';
				html +=
					'<svg style="width: 11px !important;height: 11px !important;z-index: 999;" t="1571127072846" class="icon" viewBox="0 0 1025 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="16104" width="100" height="100"><path d="M778.479 1002.496c-12.288 0-24.576-3.071-37.888-10.239L533.742 883.713c-5.12-3.072-12.288-5.12-20.479-5.12-7.168 0-15.36 2.048-20.48 4.096L286.959 992.257c-12.288 7.168-24.576 10.239-38.912 10.239-24.576 0-48.128-11.264-64.513-29.695-16.384-18.433-22.527-43.008-18.432-67.584l39.937-229.376c2.048-14.336-3.072-28.672-13.313-38.912L25.839 476.16C2.287 453.633-5.905 420.864 4.335 390.144c10.239-30.721 35.84-52.225 67.584-57.345l229.376-33.792c14.336-2.048 27.647-11.264 33.791-23.552l102.4-208.896c14.336-28.672 43.008-46.08 74.752-46.08s60.416 17.408 74.752 46.08l102.4 208.896c7.168 13.313 19.456 21.504 33.792 23.552L952.559 332.8c31.744 5.12 57.344 26.624 67.584 56.32 10.24 30.72 2.048 63.488-20.48 86.017L834.799 636.928c-11.265 10.24-15.36 24.576-13.313 38.912l38.912 228.352c4.096 24.576-2.048 49.152-18.432 67.584C826.607 991.232 803.055 1002.496 778.479 1002.496z" p-id="16105" fill="#ffffff"></path></svg>';
				html += '<div class="jindu" style="width: 0px;"></div>';
				html += '</div>';
				for (i = 0; i < 5; i++) {
					$(".xing").append(html);
				}
				$(".pingfen input").each(function() {
					var fenshu = $(this).val(); //获取分数
					var id = $(this).attr("id");
					console.log(fenshu);
					console.log("###" + id);
					fenshu = fenshu * 1;
					var zhengshu = parseInt(fenshu); //保留分数整数部分
					console.log(zhengshu);
					for (i = 0; i < zhengshu; i++) {
						$("#div_" + id + " .xing_body").children("div").eq(i).css("width", "20px");
					}
					var width = (fenshu - zhengshu) / 1 * 15; //15为星块的宽度
					width = width.toFixed(1);
					width = width + "px";
					console.log("~~~" + width);
					$("#div_" + id + " .xing_body").children("div").eq(zhengshu).css("width", width);
				});
			});
		</script>
	</body>

</html>

本文链接

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值