12猿挚、JavaScript-事件

每天一句 : 讓思考成為一種習(xí)慣咐旧。

一、事件捕獲

  • 事件綁定方式一(同一事件會被覆蓋)
  oBox.onclick = fn1;
  oBox.onclick = fn2;  // 覆蓋掉fn1
  • 事件綁定方式二(同一事件可以多個處理)
  addEventListener(事件名詞绩蜻,事件函數(shù)铣墨,是否捕獲)
  參數(shù)3: true表示采用事件捕獲,若false事件冒泡
  oBox.addEventListener('click', fn, true);

注1: 事件冒泡是從里到外的傳遞方式办绝,即是從事件目標(biāo)(target)開始踏兜,往上冒泡直到頁面的最上一級標(biāo)簽; 事件捕獲是從外到里的傳遞方式,即是從最上一級標(biāo)簽開始往下查找八秃,直到捕獲到事件目標(biāo)(target);
注2: IE中不支持事件捕獲;

二、DOM事件流

事件捕獲階段 ? 目標(biāo)元素階段 => 事件冒泡階段

DOM事件流

三肉盹、事件取消

  • 事件取消方式一
  document.onclick = null;
  • 事件取消方式二
  IE: obj.detachEvent(事件名稱昔驱, 事件函數(shù));
  非IE: obj.removeEventListener(事件名稱, 事件函數(shù), 是否捕獲);
  document.removeEventListener('click', fn1, false);
  window.removeEventListener ? document.removeEventListener('click', fn1, false) : document.detachEvent('click', fn1);

四、鍵盤事件

  • onkeydown: 當(dāng)鍵盤按鍵按下時
  • onkeyup: 當(dāng)鍵盤按鈕釋放(彈起)時
  • event.keyCode: 數(shù)字類型(鍵盤按鈕的值) ASCII值
  • ctrlkey/shiftkey/altkey: 當(dāng)一個事件發(fā)生時上忍,如果是按下狀態(tài)骤肛,返回true纳本,否則返回false

案例: 鍵盤控制元素移動

五、事件默認行為

當(dāng)一個事件發(fā)生時腋颠,瀏覽器自己會默認做的事情;

  • 如何阻止事件默認行為
    a繁成、當(dāng)前這個行為是什么事件觸發(fā)的
    b、在這個事件的處理函數(shù)中(高版本中只需要 return false;即可)
    ev.preventDefault ? ev.preventDefault() : ev.returnValue = false;

  • 右鍵菜單事件oncontextmenu

六淑玫、鼠標(biāo)樣式

  cursor: 其他取值   
  auto:標(biāo)準(zhǔn)光標(biāo)   
  default:標(biāo)準(zhǔn)箭頭   
  hand:手形光標(biāo)   
  wait:等待光標(biāo)   
  text:I形光標(biāo)   
  vertical-text:水平I形光標(biāo)   
  no-drop:不可拖動光標(biāo)   
  not-allowed:無效光標(biāo)   
  help:幫助光標(biāo)   
  all-scroll:三角方向標(biāo)   
  move:移動標(biāo)   
  crosshair:十字標(biāo)

  例如1: 
    oBox.style.cursor = 'crosshair';

  例如2: 
  #box h3{
     // 鼠標(biāo)的樣式設(shè)置
    cursor: move;
  }

七巾腕、拖拽

  • 拖拽原理
<script>
            window.onload = function(){
                var oBox = document.getElementById("box");
                
                oBox.onmousedown = function(ev){
                    // 保存鼠標(biāo)相對于oBox元素的位置
                    ev = event || ev;
                    var dowX = ev.offsetX;
                    var dowY = ev.offsetY;
                    
                    // 鼠標(biāo)移動范圍是整個document
                    document.onmousemove = function(ev){
                        ev = event || ev;
                        
                        // 元素距離瀏覽器左邊位置 = ev.clientX(鼠標(biāo)距離瀏覽器左邊位置) - dowX(鼠標(biāo)相對于元素的位置)
                        oBox.style.left = ev.clientX - dowX + 'px';
                        oBox.style.top = ev.clientY - dowY + 'px';
                    }
                    
                    document.onmouseup = function(){
                        document.onmousemove = document.onmouseup = null;
                    }
                }
            }
        </script>
拖拽原理
  • 完美拖拽
  思路:
  1)拖拽效果
    <1>給元素#box定位(absolute,relative,fixed)
    <2>拖拽原理
      - 給#box綁定onmousedown,并記錄按下的光標(biāo)位置(offsetX,offsetY),然后給document綁定onmousemove事件絮蒿,在onmousemove事件內(nèi)不斷改變#box的top,left值
        left = e.clicentX - offsetX + 'px';
        top = e.clientY - offsetY + 'px';
        - 鼠標(biāo)松開時清除document的onmousemove事件
2)回放效果
    <1>在拖拽過程中記錄移動過的每一個坐標(biāo)在數(shù)組pos里
    <2>點擊回放
        點擊a標(biāo)簽時尊搬,#box窗口按原路徑返回原來的位置
        遍歷arr,不斷改變#box的top,left值
    <3>回放完成后清空數(shù)組arr
     */
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市土涝,隨后出現(xiàn)的幾起案子佛寿,更是在濱河造成了極大的恐慌,老刑警劉巖但壮,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冀泻,死亡現(xiàn)場離奇詭異,居然都是意外死亡蜡饵,警方通過查閱死者的電腦和手機弹渔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來验残,“玉大人捞附,你說我怎么就攤上這事∧唬” “怎么了鸟召?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長氨鹏。 經(jīng)常有香客問我欧募,道長,這世上最難降的妖魔是什么仆抵? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任跟继,我火速辦了婚禮,結(jié)果婚禮上镣丑,老公的妹妹穿的比我還像新娘舔糖。我一直安慰自己,他們只是感情好莺匠,可當(dāng)我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布金吗。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪摇庙。 梳的紋絲不亂的頭發(fā)上旱物,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天,我揣著相機與錄音卫袒,去河邊找鬼宵呛。 笑死,一個胖子當(dāng)著我的面吹牛夕凝,可吹牛的內(nèi)容都是我干的宝穗。 我是一名探鬼主播,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼迹冤,長吁一口氣:“原來是場噩夢啊……” “哼讽营!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起泡徙,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤橱鹏,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后堪藐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體莉兰,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年礁竞,在試婚紗的時候發(fā)現(xiàn)自己被綠了糖荒。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡模捂,死狀恐怖捶朵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情狂男,我是刑警寧澤综看,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站岖食,受9級特大地震影響红碑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜泡垃,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一析珊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蔑穴,春花似錦忠寻、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赶舆。三九已至,卻和暖如春祭饭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背叙量。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工倡蝙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人绞佩。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓寺鸥,卻偏偏與公主長得像,于是被迫代替她去往敵國和親品山。 傳聞我的和親對象是個殘疾皇子胆建,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 什么是事件: 我們可以簡單的把事件理解為瀏覽器的感知系統(tǒng)。比如說:他可以感覺到用戶是否點擊(click)了頁面肘交、鼠...
    張松1366閱讀 6,801評論 1 6
  • 外圍線outline--css 1.表單獲取焦點事件onfocus; 例:input.onfocus=functi...
    他在發(fā)呆閱讀 706評論 0 0
  • style 修飾width 寬度height 高度title 想說明的text-align 水平對齊...
    蒲公英_前端開發(fā)者閱讀 9,210評論 4 58
  • 1. tab列表折疊效果 html: 能源系統(tǒng)事業(yè)部 崗位名稱: 工作地點 崗位名...
    lilyping閱讀 1,871評論 0 1
  • 讓過去的一年離開的笆载,不只是時間,還有若干我們不愿回首的事涯呻,以及刻骨銘心的情感凉驻。 慶幸,我們還能站在新一年的開始复罐,往...
    勝似春閱讀 145評論 0 3