"è³¢ã" ãã¼ã«ããã
訪åè ããã¦ã¹ã ãããéã ã®ã§ã¯ãªã ãã®ä¸ ã«ç§»åãããå ´åããã®ä¸ã«ãã¼ã«ãããã表示ãã颿°ãæ¸ãã¦ãã ããã
è¨ãæããã¨ããã訪åè ãè¦ç´ ä¸ã«ãã¦ã¹åããã¦æ¢ããå ´å â ãã¼ã«ãããã表示ãã¾ããããã¦ãããåã«ãã¦ã¹ããã°ããç§»åãããå ´åã«ã¯ããã¯å¿ è¦ããã¾ããã誰ãä½åãªç¹æ» ãå¿ è¦ã¨ããã§ããããï¼
æè¡çã«ã¯ãè¦ç´ ä¸ã®ãã¦ã¹éåº¦ãæ¸¬ãäºãã§ãã¾ããããã¦ããé度ãé ãå ´åãâè¦ç´ ä¸â ã«ããã¨æ³å®ãã¦ãã¼ã«ãããã表示ããéåº¦ãæ©ãå ´åã«ã¯ â ç¡è¦ãã¾ãã
ãã®ããã®æ±ç¨çãªãªãã¸ã§ã¯ã new HoverIntent(options) ãä½ãã¾ããoptions ã¯æ¬¡ã®éãã§ã:
elemâ 追跡ããè¦ç´ ã§ãoverâ ãã¦ã¹ãè¦ç´ ããã£ããç§»åãã¦ããå ´åã«å¼ã³åºã颿°ã§ãoutâ ãã¦ã¹ãè¦ç´ ãé¢ããã¨ãã«å¼ã³åºã颿°ã§ã(ããoverãå¼ã°ããã)
ãã¼ã«ãããã«å¯¾ãã¦ãã®ãããªãªãã¸ã§ã¯ãã使ç¨ããä¾ã§ã:
// ãµã³ãã«ã®ãã¼ã«ããã
let tooltip = document.createElement('div');
tooltip.className = "tooltip";
tooltip.innerHTML = "Tooltip";
// ãªãã¸ã§ã¯ãã¯ãã¦ã¹ã追跡ããover/out ãå¼ã³åºãã¾ã
new HoverIntent({
elem,
over() {
tooltip.style.left = elem.getBoundingClientRect().left + 'px';
tooltip.style.top = elem.getBoundingClientRect().bottom + 5 + 'px';
document.body.append(tooltip);
},
out() {
tooltip.remove();
}
});
ãã¢:
ãã¦ã¹ããã°ããç§»åããâæè¨â ãæ¨ªåã£ãå ´åã¯ä½ãèµ·ããã¾ããããã£ããããããã¯ãã®ä¸ã§åæ¢ããå ´åããã¼ã«ãããã«ãªãã¾ãã
注æ: ãã¼ã«ãããã¯ã«ã¼ã½ã«ãæè¨ã®ãµãè¦ç´ ã®éãç§»åããã¨ãã« âç¹æ» â ãã¾ããã
ã¢ã«ã´ãªãºã ã¯ã·ã³ãã«ã§ã:
- è¦ç´ ä¸ã«
onmouseover/outãã³ãã©ãç½®ãã¾ããã¾ããããã§ã¯onmouserenter/leaveã使ããã¨ãã§ãã¾ãããæ±ç¨æ§ãä¸ãããç§»è²ãå°å ¥ããã¨ä¸æãåä½ãã¾ããã - ãã¦ã¹ã«ã¼ã½ã«ãè¦ç´ ã«å
¥ã£ãã¨ãã
mousemoveã§é度ã®è¨ç®ãéå§ãã¾ãã - ããé度ãé
ãå ´åã
overãå®è¡ãã¾ãã - ãã®å¾ãè¦ç´ ããåºã¦ã
overãå®è¡ãããå ´åã«ã¯outãå®è¡ãã¾ãã
質å: âã©ããã£ã¦éåº¦ãæ¸¬ãï¼â
æåã®ã¢ã¤ãã¢: 100ms æ¯ã«é¢æ°ãå®è¡ããåå¾ã®åº§æ¨éã®è·é¢ãè¨ç®ããæ¹æ³ã§ãããããããå°ããå ´åãã¹ãã¼ãã¯å°ããã§ãã
æ®å¿µãªãããJavaScript ã§ âç¾å¨ã®ãã¦ã¹åº§æ¨â ãåå¾ããæ¹æ³ã¯ããã¾ãããgetCurrentMouseCoordinates() ã®ãããªé¢æ°ã¯ããã¾ããã
座æ¨ãåå¾ããå¯ä¸ã®æ¹æ³ã¯ãmousemove ã®ããã«ãã¦ã¹ã¤ãã³ãããªãã¹ã³ãããã¨ã§ãã
ãããã£ã¦ã座æ¨ã追跡ããããè¦ããããã« mousermove ã®ãã³ãã©ãè¨å®ã§ãã¾ãã
P.S. 注æ: 解決çã®ãã¹ãã§ã¯ãdispatchEvent ã使ç¨ãã¦ããã¼ã«ããããæ£ããåä½ãããã確èªãã¾ãã
ãµã³ãããã¯ã¹ã§ãã¹ãã¨ä¸ç·ã«è§£çãéã