Konva 内容重叠无法触发点击事件的解决方法
写在前面:
- 环境:Vue3 + Konva + vite
- 在绘制界面时踩坑,主要是关于 listening 属性的使用
在绘制界面时,不免出现有内容重叠的情况,这会影响事件的触发
使用设置
listening属性可以允许事件穿透,默认为true不可穿透(示例如下)<template>
<div>
<div id="mybtn"></div>
</div>
</template> <script>
import Konva from 'konva'; export default {
data() {
return {
position: {
posX: 0,
posY: 0,
},
size: {
width: 100,
height: 50,
},
styles: {
borderSize: 1,
fontSize: 12,
backgroundColor: '',
fontColor: '#000',
borderColor: '#000',
opacity: 1,
},
btnText: 'Button',
};
},
mounted() {
this.initializeKonva();
},
methods: {
initializeKonva() {
const stage = new Konva.Stage({
container: 'mybtn',
width: this.size.width,
height: this.size.height,
}); const layer = new Konva.Layer();
stage.add(layer); const button = new Konva.Rect({
x: this.position.posX,
y: this.position.posY,
width: this.size.width,
height: this.size.height,
fill: this.styles.backgroundColor,
stroke: this.styles.borderColor,
strokeWidth: this.styles.borderSize,
opacity: this.styles.opacity,
}); const buttonText = new Konva.Text({
x: this.position.posX,
y: this.position.posY,
width: this.size.width,
height: this.size.height,
text: this.btnText,
fontSize: this.styles.fontSize,
fontFamily: 'Arial',
fill: this.styles.fontColor,
align: 'center',
verticalAlign: 'middle',
listening: false, // 设置listening为false,允许事件穿透
}); button.on('click', this.clickBtn); layer.add(button);
layer.add(buttonText);
layer.draw(); }, clickBtn() {
console.log('clickBtn run');
// 点击事件逻辑
}
},
};
</script> <style scoped>
div {
width: 100%;
height: 100%;
}
</style>
Konva 内容重叠无法触发点击事件的解决方法的更多相关文章
- jquery无法为动态生成的元素添加点击事件的解决方法
遇到 jquery无法为动态生成的元素添加点击事件,谷歌一下,整理一下解决方法如下: (<li>中间的元素是动态生成的), 现在想为<i>添加点击事件, 例子如下: <d ...
- Angular输入框内按下回车会触发其它button的点击事件的解决方法
方法:给button按钮添加type=“botton”属性
- view.performClick()触发点击事件
1.主要作用 自动触发控件的点击事件 2.界面的布局文件 activity_main.xml <RelativeLayout xmlns:android="http://schema ...
- 解决jQuery ajax动态新增节点无法触发点击事件的问题
在写ajax加载数据的时候发现,后面添加进来的demo节点元素,失去了之前的点击事件.为什么点击事件失效,我们该怎么去解决呢? 其实最简单的方法就是直接在标签中写onclick="" ...
- 可以触发点击事件并变色的UILabel
可以触发点击事件并变色的UILabel 谁说UILabel不能够当做button处理点击事件呢?今天,笔者就像大家提供一个改造过的,能够触发点击事件并变色的UILabel:) 效果图: 还能当做计时器 ...
- 解决JavaScript拖动时同时触发点击事件的BUG
在做在线地图项目的时候,在给marker点绑定事件时,因为有点击事件click,同时又存在拖动dragEnd事件,首先没有重大缺陷,就是在用户在点击的时候,有时候本想是点击,但是他触发了drag的事件 ...
- 关于AJAX异步加载节点无法触发点击事件问题的解决方式
做练习的过程中遇到一个问题,使用AJAX异步新增一个节点,无法触发点击事件,经过查阅之后知道一个方式,使用JS的委托事件,在此做一个记录. $(document).on('click', '.recr ...
- JS实现按下按键触发点击事件
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- vue中Enter触发登录事件和javascript中Enter触发点击事件
created(){ window.addEventListener('keydown', this.handleKeyDown, true)//开启监听键盘按下事件 } 在methods中当keyC ...
- Echarts如何添加鼠标点击事件?防止重复触发点击事件
Echarts如何添加鼠标点击事件? 1.通常我们只使用了以下代码,通过配置项和数据显示图表. var myChart = echarts.init(document.getElementById(' ...
随机推荐
- JavaScript 数组常用方法整理
数组变异方法 push() 数组末尾添加一个项目,返回新数组长度,arr.push(item)pop() 数组末尾删除一个元素,返回被删除元素,arr.pop()shift() 删除数组开头第1个元素 ...
- resteasy和springmvc的区别
resteasy 是 jboss的一个开源java api for restful service(JSR 311,sun 2008年发布,最新GA版本是2.0, JAX-RS 2.0 (JSR-33 ...
- 密码学—DES加密的IP置换Python程序
文章目录 IP初始置换与逆置换 编程想法 转二进制过程中的提取一些数据 64为一组 IP置换 IP逆置换 DES发明人 美国IBM公司W. Tuchman 和 C. Meyer1971-1972年研制 ...
- 基于 OAI 部署私有的 4G EPS
目录 文章目录 目录 前言 硬件设备要求 运行平台 RF 外设 可编程 SIM 卡 UE 终端 高精度参考时钟 操作系统要求 内核要求 CPU Frequency scaling All-In-One ...
- MegaCli64查看磁盘损坏,错误个数统计情况
如下,两个命令,是磁盘濒临崩坏,比如存在扇区损坏之类的事情发生.咨询的浪潮热线,报sn.他们的临界值是500,我们监控脚本是200告警.Predictive Failure Count 这个的数字比M ...
- JS 监听用户页面访问&页面关闭并进行数据上报操作
JS 监听用户页面访问&页面关闭操作并进行数据上报 前言 最近在做安全方面的项目,有个需求是在用户访问页面和关闭页面的时候,发送对应的数据. 刚拿到需求的时候,觉得没啥东西,init 的时候发 ...
- 昇腾开发全流程 之 MindSpore华为云模型训练
前言 学会如何安装配置华为云ModelArts.开发板Atlas 200I DK A2, 并打通一个训练到推理的全流程思路. 在本篇章,首先我们开始进入训练阶段! 训练阶段 A. 环境搭建 MindS ...
- kubernetes使用metrics-server进行资源监控
kubernetes资源监控 1. 查看集群资源状况 ·k8s集群的master节点一般不会跑业务容器· kubectl get cs #查看master资源状态 kubectl get node # ...
- nginx接受请求连接事件模块流程
操作系统内核: 三次握手,当用户发来一个 SYN 报文时,系统内核会返回一个SYN+ACK确认给客户端,当客户端再次发送ACK来的时候,此时就已经建立了三次握手. 完成三次握手后,操作系统会根据系统内 ...
- 基于WebSocket的modbus通信(一)- 客户端
上一篇已经实现了ModbusTcp服务器和8个主要的功能码,只是还没有实现错误处理功能. 但是在测试客户端时却发现了上一篇的一个错误,那就是写数据成功,服务器不需要响应. 接下来要做的就是实现Modb ...