canvas 做框选效果

1,442 阅读1分钟

就是一个很简单的框选功能而已,原生js写的。

效果图:

代码:

<!DOCTYPE html>
<html>
	<body>

		<canvas id="myCanvas" width="1000" height="800" style="border:1px solid #d3d3d3;">
			Your browser does not support the HTML5 canvas tag.
		</canvas>
		<br>
		<span>local</span>
		<p id="local"></p>
		<span>down</span>
		<p id="down"></p>
		<span>up</span>
		<p id="up"></p>

		<script>
			var c = document.getElementById("myCanvas");
			var ctx = c.getContext("2d");

			c.addEventListener('mousemove', move, false)
			c.addEventListener('mousedown', down, false)
			c.addEventListener('mouseup', up, false)

			var ax = 0,
				ay = 0,
				mx = 0,
				my = 0,
				bx = 0,
				by = 0,
				width = 0,
				height = 0,
				paint = false;

			function move(e) {
				document.getElementById("local").innerHTML = e.pageY + ',' + e.pageX
				mx = e.pageX;
				my = e.pageY;
				paintReact()
			}

			function down(e) {
				document.getElementById("down").innerHTML = e.pageY + ',' + e.pageX
				ax = e.pageX;
				ay = e.pageY;
				paint = true
			}

			function up(e) {
				document.getElementById("up").innerHTML = e.pageY + ',' + e.pageX
				bx = e.pageX;
				by = e.pageY;
				paint = false
			}

			function paintReact() {
				ctx.clearRect(0, 0, 1000, 800)
				width = mx - ax
				height = my - ay
				console.log(width, height);
				if (paint) {
					ctx.strokeRect(ax, ay, width, height)
				}
			}
		</script>

	</body>
</html>