JavaScript點選按鈕彈出層效果
強大的效果其實都是由一個個簡單的功能組合而成的,下面介紹一下如何實現點選一個按鈕彈出一個層的效果。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> *{ margin:0px; padding:0px; } div{ width:160px; height:100px; background:#33ccff; display:none; position:absolute; } div ul{text-align: center;} div li{list-style-type: none;} button{ top:300px; left:400px; position:absolute; } </style> <script type="text/javascript"> window.onload=function(){ var btn=document.getElementsByTagName('button')[0]; var flt=document.getElementsByTagName('div')[0]; btn.onclick=function(ev){ var ev=ev||window.event; if(ev.cancelBubble){ev.cancelBubble=true;} else{ev.stopPropagation()} var x=btn.offsetLeft-15+'px'; var y=btn.offsetTop-100+'px'; flt.style.top=y; flt.style.left=x; flt.style.display='block'; } document.onclick = function(){ flt.style.display='none'; } } </script> </head> <body> <button id="btn">點選彈出層</button> <div> <ul id="nav"> <li class="item1"><a href="">螞蟻部落一</a></li> <li class="item2"><a href="">螞蟻部落二</a></li> <li class="item3"><a href="">螞蟻部落三</a></li> <li class="item4"><a href="">螞蟻部落四</a></li> <li class="item5"><a href="">螞蟻部落五</a></li> </ul> </div> </body> </html>
以上程式碼實現了我們的要求,下面介紹一下它的實現過程。
一.程式碼註釋:
(1).window.onload=function(){},當文件內容完全載入完畢再去執行函式中的程式碼。
(2).var btn=document.getElementsByTagName('button')[0],獲取按鈕物件,getElementsByTagName()函式獲取的是一個物件集合,所以要想獲取某一個物件,則需要使用索引值訪問集合中的元素。
(3).var flt=document.getElementsByTagName('div')[0],和上面一樣的道理,這裡不多介紹了。
(4).btn.onclick=function(){},為按鈕註冊onclick事件處理函式。
(5).var ev=ev||window.event,事件物件的相容性處理。
(6).if(ev.cancelBubble){ev.cancelBubble=true;},阻止事件冒泡,IE8和IE8以下瀏覽器支援,之所以要阻止事件冒泡,是防止點選按鈕之後,會彈出視窗,但是事件會冒泡的document,瞬間又將視窗隱藏,於是點選按鈕也就無法彈出視窗了。
(7).else{ev.stopPropagation()},標準瀏覽器彈出視窗效果。
(8).var x=btn.offsetLeft-15+'px',設定彈出視窗距離body左側的尺寸。
(9).var y=btn.offsetTop-100+'px',設定彈出視窗距離body上測的尺寸。
(10).flt.style.top=y,flt.style.left=x,設定它們的樣式。
(11).flt.style.display='block',將彈出層顯示。
(12).document.onclick=function(){},在document上註冊onclick事件處理函式。
(13).flt.style.display='none',將彈出視窗隱藏。
二.相關閱讀:
(1).getElementsByTagName()參閱document.getElementsByTagName()一章節。
(2).var ev=ev||window.event參閱var ev=window.event||ev 作用一章節。
(3).stopPropagation()參閱JavaScript stopPropagation()一章節。
(4).offsetLeft屬性參閱JavaScript offsetLeft一章節。
(5).事件冒泡參閱JavaScript 事件冒泡一章節。
相關文章
- JavaScript 點選按鈕返回底部JavaScript
- 點選刪除按鈕彈出是否刪除提示框
- JavaScript點選按鈕返回底部詳解JavaScript
- Layui Confirm彈出框連續點選按鈕會觸發多次事件UI事件
- 語音交友app開發,點選按鈕出現彈窗的實現方式APP
- VB.net MessageBox彈出的確認對話方塊點選確定按鈕
- Android 點選按鈕跳轉Android
- JavaScript獲取選中radio單選按鈕值JavaScript
- 防止頁面按鈕多次點選
- 手機直播原始碼,Flutter 中的彈簧按鈕效果原始碼Flutter
- js點選按鈕劃出選單容器第一版JS
- 關於showModalDialog()對話方塊點選按鈕彈出新頁面的問題
- Android處理按鈕重複點選Android
- jQuery點選按鈕刪除div元素jQuery
- Android | 使用 AspectJ 限制按鈕快速點選Android
- 點選彈出居中使用者登入框效果
- CSS3提交按鈕等待打點迴圈效果CSSS3
- 單選多選按鈕
- e/易語言 按鈕介面彈出氣泡提示
- 請問各位大佬,vue如何實現點選按鈕切換圖片的效果?Vue
- uniapp點選按鈕提交textarea值為undifineAPP
- 為element-ui的Select和Cascader新增彈層底部操作按鈕UI
- Qt QTtoolButton 滑鼠移動到按鈕上時,彈出選單後,按鈕的hover狀態無法恢復的問題QT
- 異形按鈕的點選區域處理
- CSS3動畫按鈕效果CSSS3動畫
- 在某個點上彈出層
- 點選一個按鈕使其樣式發生變化,再點選另一個按鈕發生同樣變化,但上一個按鈕樣式復原
- element ui switch開關 點選按鈕後,彈窗確認再改變開關狀態UI
- Android優雅地處理按鈕重複點選Android
- 點選按鈕自動複製剪貼簿功能
- 點選大中小按鈕設定文章字型大小
- ASPxGridView中Command列自定義按鈕點選事件概要View事件
- 刪除按鈕點選後的虛線輪廓
- 基於js實現點選按鈕回到頂部JS
- 對於防止按鈕重複點選的嘗試
- fastadmin 工具欄新增自定義按鈕,實現彈窗並儲存資料效果AST
- CSS3 checkbox開關按鈕效果CSSS3
- 是否應該在未選中行時禁用刪除按鈕,還是應該在點選按鈕時提示選擇資料?