国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

簡單實(shí)現(xiàn)js鼠標(biāo)跟隨效果

2019-11-19 15:59:22
字體:
供稿:網(wǎng)友

本文實(shí)例為大家分享了js鼠標(biāo)跟隨效果展示的具體代碼,供大家參考,具體內(nèi)容如下

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>Document</title>  <style>    body,div{      margin:0;      padding:0;    }    #box{      position:relative;      margin:20px auto;      width:300px;      height:300px;      background:#008000;    }    #mark{      position:absolute;      top:0;      left:0;      width:100px;      height:100px;      background:red;    }  </style></head><body>  <div id='box'>      </div>  <script>    var box = document.getElementById('box');    box.onmouseover = function(e){      e = e || window.event;      var mark = document.createElement('div');      mark.id = "mark";      this.appendChild(mark);      mark.style.left = e.clientX - this.offsetLeft + 5 + "px";      mark.style.top = e.clientY - this.offsetTop + 5 + "px";      //阻止mark盒子的onmouseover事件的冒泡傳播      mark.onmouseover = function(e){        e = e || window.event;        e.stopPropagation ? e.stopPropagation():e.cancelBubble = true;      }      mark.onmouseout = function(e){        e = e || window.event;        e.stopPropagation ? e.stopPropagation():e.cancelBubble = true;      }    }    //以下代碼會出現(xiàn)一個(gè)問題,當(dāng)鼠標(biāo)移動(dòng)過快的時(shí)候,鼠標(biāo)會進(jìn)入到mark這個(gè)盒子,會觸發(fā)它的mouseover行為,由于事件的冒泡傳播機(jī)制,導(dǎo)致box的mouseover會重新被觸發(fā),導(dǎo)致紅色盒子一直在不斷的創(chuàng)建    box.onmousemove = function(e){      e = e || window.event;      var mark = document.getElementById('mark');      if(mark){        mark.style.left = e.clientX - this.offsetLeft + 5 + "px";        mark.style.top = e.clientY - this.offsetTop + 5 + "px";      }    }    //依然有問題:鼠標(biāo)快速移動(dòng),首先會到mark上,此時(shí)瀏覽器在計(jì)算mark的位置,計(jì)算完成,mark到達(dá)指定的位置,此時(shí)鼠標(biāo)又重新回到box上,觸發(fā)了box的mouseover,也觸發(fā)了mark的mouseout,也會傳播到box的mouseout上,會把mark先刪除,然后在創(chuàng)建    box.onmouseout = function(e){      e = e || window.event;      var mark = document.getElementById('mark');      if(mark){        this.removeChild(mark);      }    }    //上面代碼也可以通過將over和out事件分別改為enter和leave     //onmouseenter和onmouseover都是鼠標(biāo)滑上去的行為,但是onmouseenter瀏覽器默認(rèn)阻止了它的冒泡傳播(mark的onmouseenter行為觸發(fā),不會傳播到box);而onmouseover是存在冒泡傳播的,想要阻止的話需要手動(dòng)阻止  </script></body></html>

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 西畴县| 梓潼县| 从江县| SHOW| 九龙城区| 迭部县| 仙桃市| 故城县| 中山市| 谢通门县| 固阳县| 阿尔山市| 民和| 宽城| 松阳县| 增城市| 拉萨市| 安多县| 长汀县| 偏关县| 吐鲁番市| 册亨县| 胶州市| 怀柔区| 虞城县| 阜宁县| 菏泽市| 湄潭县| 淳化县| 石林| 漳平市| 临泉县| 汝州市| 孝义市| 泊头市| 雷波县| 肥东县| 河源市| 武川县| 石阡县| 和田市|