前端笔记——五角星评分(半星+一星 鼠标移动版)

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			*{
				margin: 0;
				padding: 0;
			}
			html,body{
				height: 100%;
				white-space: nowrap;
				word-wrap: nowrap;
			}
			li{
				padding: 10px;
			}
			img{
				width: 30px;
				height: 30px;
			}
			.one{
				// 不设置font-size:0的话,星星之间会存在空隙
				font-size: 0;
			}
		</style>
	</head>
	<body>
		<div class="one">
			<img src="css/no_star.png" >
			<img src="css/no_star.png" >
			<img src="css/no_star.png" >
			<img src="css/no_star.png" >
			<img src="css/no_star.png" >
		</div>
		<script type="text/javascript">
			var one=document.getElementsByClassName('one')[0];
			var children=one.children;
			console.log(children)
			for(let i=0;i<children.length;i++){
				children[i].index=i;// 添加一个索引属性
				// 注意:由于一个星表示一个元素,所以进入该星的时候是一星就一直是一星
				// 半星就一直是半星,除非移出之后再移入才会触发改变
				// 解决办法:真正去切割半个星星,分为10个img
				children[i].addEventListener('mouseenter',function(e){
				    for(var j=0;j<this.index;j++){
						children[j].setAttribute('src','css/star.png')
					}

					if(this.width*(this.index+1)-e.x<(this.width/2)){
						this.setAttribute('src','css/star.png')
						console.log('一星')
					}else{
						this.setAttribute('src','css/half_star.png')
					}
					
					// 对于大于该索引的就改为空
					for(var k=this.index+1;k<children.length;k++){
						children[k].setAttribute('src','css/no_star.png')
					}
				})
			}

		</script>
	</body>
</html>
 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值