javascript – 使用单击,鼠标移动和单击绘制矩形
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 使用单击,鼠标移动和单击绘制矩形,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2282字,纯文字阅读大概需要4分钟。
内容图文
![javascript – 使用单击,鼠标移动和单击绘制矩形](/upload/InfoBanner/zyjiaocheng/712/e7156b76fffb40c3bd935af397240335.jpg)
我正在尝试通过用户单击,鼠标移动和单击来绘制矩形.我的代码有两个问题.
首先,在绘制一个矩形后,会自动假设将绘制另一个矩形.其次,第二个矩形的起点是创建第一个矩形的最后一次点击.
http://jsbin.com/uqonuw/3/edit
解决方法:
你很亲密所以,问题不在于HTML5中的“canvas”元素,而是一个真正的div画布.
http://jsfiddle.net/d9BPz/546/
为了让我看到你的代码试图完成什么,我不得不整理它.需要做的是跟踪方形元素.
每次点击画布时我们都会做两件事之一.我们要么创建一个矩形元素,要么完成一个矩形元素.所以,当我们完成时,将’element'(以前称为’d’)设置为null是有意义的.在创建元素时,我们必须将新的DOM元素分配给’element’.
每次鼠标移动时,我们都希望获得鼠标位置.如果元素处于创建过程中(或“非null”),那么我们需要调整元素的大小.
然后我们将它全部包装在一个函数中,这就是它的全部内容:
function initDraw(canvas) {
var mouse = {
x: 0,
y: 0,
startX: 0,
startY: 0
};
function setMousePosition(e) {
var ev = e || window.event; //Moz || IE
if (ev.pageX) { //Moz
mouse.x = ev.pageX + window.pageXOffset;
mouse.y = ev.pageY + window.pageYOffset;
} else if (ev.clientX) { //IE
mouse.x = ev.clientX + document.body.scrollLeft;
mouse.y = ev.clientY + document.body.scrollTop;
}
};
var element = null;
canvas.onmousemove = function (e) {
setMousePosition(e);
if (element !== null) {
element.style.width = Math.abs(mouse.x - mouse.startX) + 'px';
element.style.height = Math.abs(mouse.y - mouse.startY) + 'px';
element.style.left = (mouse.x - mouse.startX < 0) ? mouse.x + 'px' : mouse.startX + 'px';
element.style.top = (mouse.y - mouse.startY < 0) ? mouse.y + 'px' : mouse.startY + 'px';
}
}
canvas.onclick = function (e) {
if (element !== null) {
element = null;
canvas.style.cursor = "default";
console.log("finsihed.");
} else {
console.log("begun.");
mouse.startX = mouse.x;
mouse.startY = mouse.y;
element = document.createElement('div');
element.className = 'rectangle'
element.style.left = mouse.x + 'px';
element.style.top = mouse.y + 'px';
canvas.appendChild(element)
canvas.style.cursor = "crosshair";
}
}
}
用法:传递要制作矩形画布的块级元素.
例:
<!doctype html>
<html>
<head>
<style>
#canvas {
width:2000px;
height:2000px;
border: 10px solid transparent;
}
.rectangle {
border: 1px solid #FF0000;
position: absolute;
}
</style>
</head>
<body>
<div id="canvas"></div>
<script src="js/initDraw.js"></script>
<script>
initDraw(document.getElementById('canvas'));
</script>
</body>
</html>
内容总结
以上是互联网集市为您收集整理的javascript – 使用单击,鼠标移动和单击绘制矩形全部内容,希望文章能够帮你解决javascript – 使用单击,鼠标移动和单击绘制矩形所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。