鼠标移到小方格内,小方格内颜色变为红色,离开恢复原色,用canvas怎么实现?
注:只能用canvas实现。
<!DOCTYPE html>
<html>
<body>
<canvas id="myCanvas" width="800" height="950" style="border:1px solid #d3d3d3;margin-top:10px">
Your browser does not support the HTML5 canvas tag.
</canvas>
<script>
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
let sAngle = 0;
let eAngle = Math.PI/90;
for(let j=0;j<5;j++){
for(let i=0;i<180;i++){
ctx.lineWidth = 0.2;
ctx.beginPath();
if(j==0){
ctx.strokeStyle = "red";
}else{
ctx.strokeStyle = "gray";
}
if(j==4){
ctx.fillStyle = "red";
ctx.strokeStyle = "red";
ctx.arc(100,100,50-j*8,0,2*Math.PI);
ctx.fill();
ctx.closePath()
continue;
}
ctx.arc(100,100,80-j*15,sAngle,eAngle);
ctx.stroke();
ctx.closePath()
sAngle = eAngle+Math.PI/90;
eAngle = eAngle+2*Math.PI/90;
}
}
for(let i=0;i<8;i++){
ctx.beginPath();
ctx.lineWidth = 0.5;
ctx.moveTo(100-80*Math.cos(i*Math.PI/4),100-
80*Math.sin(i*Math.PI/4));
ctx.strokeStyle = "green";
ctx.lineTo(100+80*Math.cos(i*Math.PI/4),100+80*Math.sin(i*Math.PI/4));
ctx.stroke();
ctx.closePath();
}
var domX = c.getBoundingClientRect().left+document.documentElement.scrollLeft;
var domY = c.getBoundingClientRect().left+document.documentElement.scrollLeft;
</script>
</body>
</html>
监听
mousemove
事件,然后判断当前在那个方格内用mousemouve事件,然后可以从event上获取当前鼠标位置。然后判断当前的xy在那个区域块中,给区域块改变颜色,同时将其他区域块改变成默认颜色
需要事件你应该知道,然后就是event这个参数中,会有event.pageX和Y,根据你方格的区域判断距离的差值是否在你的这个方格内,然后绘图这个方块就可以了。记住画图钱save和restore比较好。
谁能解释下