iT邦幫忙

1

javascript canvas 左鍵/右鍵 彈出menu

  • 分享至 

  • xImage

參考https://konvajs.org/docs/sandbox/Canvas_Context_Menu.html
他是用div的方式,我是想用canvas的方式。

目前小弟遇到一個問題是我想透過點擊canvas時彈出menu在我點擊的附近
,但他會因為我按ctrl+滑鼠滾軸 造成縮放網頁時menu出現的位置因此會跑掉,請問該如何著手解決這問題?

https://ithelp.ithome.com.tw/upload/images/20230103/201060331tatq3h5SX.png

javascript 的部份,其他跟原文給的程式碼一樣

canvas.onclick = function(e) {
    var rect = this.getBoundingClientRect(),
    x = e.clientX - rect.left,
    y = e.clientY - rect.top,

    if (ctx.isPointInPath(x, y)){
        $("#menu").fadeIn(200);
        $("#menu").css({"top":+y+"px"});
        $("#menu").css({"left":+x+"px"});  
    }
    }
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

1

提示你:resize事件。

當視窗有變動任意解析度的情況下。
你要再重新計算所有的座標。
resize會幫你偵測目前的視窗大小是否有被變動。有變動的話,就會觸發這個事件。
你只要再這個事件內,寫好「重繪」動作就行了。

alanotmt iT邦新手 4 級 ‧ 2023-01-04 09:09:38 檢舉

請問是 這個嗎?
可能我說明不夠明確~其實我的意思是按ctrl+滑鼠滾軸 造成的縮放問題。

這就有點麻煩了。這會需要有RWD的知識才行。
我不太記得倍率大小會不會觸發resize事件。(記得是不會)
這要看其它前端能力的高手回答你了。

alanotmt iT邦新手 4 級 ‧ 2023-01-04 14:36:31 檢舉

剛我自己亂試,結果只要將menu設成 position: absolute;就可以了

0
eneko5048
iT邦新手 5 級 ‧ 2023-02-02 10:52:30

建議 F12 去看他的css
他本身#menu有設定 position: absolute;

我要發表回答

立即登入回答