问题描述
我想在用户点击图片时触发一些功能,但是png的透明部分可以阻挡另一个元素的某些可见空间。
应用是用 React JS 编写的
async showIngredientInfo(event,ingredient) {
event.preventDefault();
event.persist();
var ctx = await document.createElement("canvas").getContext('2d');
var x = event.pageX - event.target.offsetLeft;
var y = event.pageY - event.target.offsetTop;
var w = ctx.canvas.width = event.target.width;
var h = ctx.canvas.height = event.target.height;
//Draw image to canvas
await ctx.drawImage(event.target,w,h);
var alpha = await ctx.getimageData(x,y,1,1).data[3];
console.log(alpha);
if(alpha === 0) {
console.log("trans\n")
try {
event.target.style.pointerEvents='none';
event.target.style.display=await'none';
} catch (e) {console.log(e);}
await ctx.clearRect(0,ctx.canvas.width,ctx.canvas.height);
document.elementFromPoint(event.clientX,event.clientY).click();
event.target.style.display='block';
event.target.style.pointerEvents="auto";
} else {
console.log(ingredient)
};
};
<section ref={this.container} id="ingredients-container" className="ingredients-container">
<canvas ref={this.canvasRef}></canvas>
<img className="board" alt="cutting-board" src="/images/board.svg"></img>
<img onClick={(e) => this.showIngredientInfo(e,"mui")} alt="mui" className="ins mui" src="/images/mui.png"></img>
<img onClick={(e) => this.showIngredientInfo(e,"chilli")} alt="chilli" className="ins chilli" src="/images/chilli.png"></img>
<img onClick={(e) => this.showIngredientInfo(e,"veggies")} alt="veggies" className="ins veggies" src="/images/veggies.svg"></img>
<img onClick={(e) => this.showIngredientInfo(e,"cucumber")} alt="cucumber" className="ins cucumber" src="/images/cucumber.svg"></img>
<img onClick={(e) => this.showIngredientInfo(e,"cha")} alt="cha" className="ins cha" src="/images/cha.svg"></img>
<img onClick={(e) => this.showIngredientInfo(e,"bm")} alt="banh-mi" className="ins bm" src="/images/banhmi.svg"></img>
<img onClick={(e) => this.showIngredientInfo(e,"meat")} alt="meat" className="ins meat" src="/images/meat.svg"></img>
<img onClick={(e) => this.showIngredientInfo(e,"gio")} alt="gio" className="ins gio" src="/images/gio.svg"></img>
<img onClick={(e) => this.showIngredientInfo(e,"sauce")} alt="sauce" className="ins sauce" src="/images/sauce.svg"></img>
<img onClick={(e) => this.showIngredientInfo(e,"mayo")} alt="mayo" className="ins mayo" src="/images/mayo.svg"></img>
<img onClick={(e) => this.showIngredientInfo(e,"pate")} alt="pate" className="ins pate" src="/images/pate.svg"></img>
<img onClick={(e) => this.showIngredientInfo(e,"ruoc")} alt="ruoc" className="ins ruoc" src="/images/ruoc.svg"></img>
<div style={{height:"100vh"}}></div>
</section>
<section ref={this.container} id="ingredients-container" className="ingredients-container">
<canvas ref={this.canvasRef}></canvas>
<img className="board" alt="cutting-board" src="/images/board.svg"></img>
<img onClick={(e) => this.showIngredientInfo(e,"ruoc")} alt="ruoc" className="ins ruoc" src="/images/ruoc.svg"></img>
<div style={{height:"100vh"}}></div>
</section>
async showIngredientInfo(event,event.clientY).click();
event.target.style.display='block';
event.target.style.pointerEvents="auto";
} else {
console.log(ingredient)
};
};
```
```
<section ref={this.container} id="ingredients-container" className="ingredients-container">
<canvas ref={this.canvasRef}></canvas>
<img className="board" alt="cutting-board" src="/images/board.svg"></img>
<img onClick={(e) => this.showIngredientInfo(e,"ruoc")} alt="ruoc" className="ins ruoc" src="/images/ruoc.svg"></img>
<div style={{height:"100vh"}}></div>
</section>
<!-- begin snippet: js hide: false console: true babel: false -->
我的问题是,当我点击 png 的某个透明部分时,该功能被触发,但随后将该点读取为透明(它不应该,因为我已将其显示设置为“无”)。请帮忙,非常感谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)