删除mouseout上的画布矩形边框
Remove canvas rectangle border on mouseout
假设我在画布上创建了一个矩形,如下…
var c = document.createElement("canvas");
document.body.appendChild(c);
var ctx = c.getContext("2d");
ctx.rect(20, 20, 150, 100);
ctx.fillText('hover mouse here', 60, 60);
c.addEventListener('mouseover', function() {
ctx.stroke();
});
然后,当您在文本上移动鼠标时,矩形周围会出现边框。但假设我希望鼠标离开画布区域后边界消失。我需要重新绘制整个矩形吗?或者有更简单的方法来删除边框吗?
这只是一个简单的例子。我实际的画布在矩形中包含了几幅画,所以每次都要重新绘制它会很痛苦。只是好奇是否有更简单的方法。
我已经尝试了样式属性,但这不起作用。
以下是上面代码的一部分:http://jsfiddle.net/wqbrnm0o/
用于更改画布的通常模式是擦除整个画布并重新绘制所有所需内容。画布的速度足以处理大多数重绘。所以你可以在鼠标悬停的矩形上画出笔划,然后你就可以擦除&在mouseout上不使用笔划的情况下重新绘制所有内容。
如果您仍然觉得需要保留内容,可以在第一个画布上创建第二个画布。
在鼠标悬停时,只在顶部画布上绘制"高亮"笔划。
在mouseout上,您可以简单地清除顶部画布。包含所有其他内容的底部画布将不受影响。
您可以在顶部画布上设置CSS pointer-events:none;
属性,以便底部画布接收所有鼠标事件。
您还可以在mouseleave上创建第二个事件,在该事件中,您用白色笔划在旧矩形的顶部绘制一个新矩形。
var c = document.createElement("canvas");
document.body.appendChild(c);
var ctx = c.getContext("2d");
ctx.rect(20, 20, 150, 100);
ctx.fillText('hover mouse here', 60, 60);
c.addEventListener('mouseover', function() {
ctx.rect(20, 20, 150, 100);
ctx.strokeStyle="#000000";
ctx.stroke();
});
c.addEventListener('mouseleave', function() {
ctx.rect(20, 20, 150, 100);
ctx.strokeStyle="#ffffff";
ctx.stroke();
});
相关文章:
- 如果我在javascript中输入无效的电子邮件或空白,如何显示特定的文本框边框红色
- 带有填充属性的SVG矩形显示在包含元素的上方插入框阴影
- HTML画布在绘图后立即擦除矩形
- 使用fabric.js从矩形区域获取对象,并将该区域绘制到画布上
- jQuery动画-边框宽度和颜色
- 画布中绘制的矩形区域的弹出工具提示
- 查找带有边框的HTML5 Canvas(点击)事件的坐标
- Fabric.js-更改矩形填充
- 边框颜色是't如果输入为空,则更改
- 鼠标点击HTML5画布绘制矩形
- 如何使所有绘制的(矩形、圆形、直线、多边形)都可拖动?纯JS
- 悬停时以矩形突出显示整个标签区域
- 如何移动矩形“;var canvas1”;在那个代码上
- 删除mouseout上的画布矩形边框
- 单击时如何在按钮周围保留矩形边框
- 获取没有边框的边界客户端矩形
- 谷歌地图为自定义标记添加了矩形边框
- SVG的矩形边框,而不是笔画
- 为什么bootstrap 3在我的按钮和其他html元素中设置了一个蓝色矩形边框
- 如何在矩形的1或2面,顶部,底部,左侧,右侧添加边框