JavaScript 動畫方式彈出圓角框
分享一段程式碼例項,它實現了彈出小視窗效果。
這樣的效果比較常見於對於某一個操作的提示,此效果的展現具有動畫效果。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> div, ul, li, body { margin: 0; padding: 0; font-size: 12px; } #prompt { position: fixed; left: 50%; top: 50%; z-index: 999999; width: 300px; height: 100px; margin: -50px 0 0 -150px; border-radius: 10px; overflow: hidden; text-align: center; line-height: 100px; color: #fff; -webkit-transition: all .3s ease 0s; -moz-transition: all .3s ease 0s; transition: all .3s ease 0s; -webkit-transform: scale(0); -moz-transform: scale(0); -ms-transform: scale(0); transform: scale(0); } #prompt.show { -webkit-transform: scale(1); -moz-transform: scale(1); -ms-transform: scale(1); transform: scale(1); } #prompt span { position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: -1; background: #000; opacity: .5; filter: alpha(opacity = 50); border-radius: 10px; } </style> <script> window.onload = function() { promptFn({ btn: 'button', txt: 'txt' }); function promptFn(arge) { var btn = document.getElementById(arge.btn); //獲取按鈕 btn.onclick = function() { createNode(arge); } function createNode(arge) { var btn = document.getElementById(arge.btn), status = btn.getAttribute('status'); if (status) { return false; } btn.setAttribute('status', 'true'); var div = document.createElement('div'), span = document.createElement('span'), txt = document.getElementById(arge.txt).value; div.id = 'prompt'; div.innerHTML = txt; div.appendChild(span); document.body.appendChild(div); animation(div, btn); } function animation(obj, btn) { var timerShow = null, timerHide = null, timerRemove = null; timerShow = setTimeout(function() { obj.className = 'show'; timerHide = setTimeout(function() { obj.className = ''; timerRemove = setTimeout(function() { obj.remove(); btn.setAttribute('status', ''); }, 400); }, 2000); }, 100); } } }; </script> </head> <body> 顯示內容:<input type="text" value="螞蟻部落歡迎您" id="txt"> <input type="button" value="檢視效果" id="button"> </body> </html>
上面的程式碼實現了我們的要求,下面介紹一下它的實現過程。
一.程式碼註釋:
(1).window.onload = function() {},當文件內容完全載入完畢再去執行函式中的程式碼。
(2).promptFn({
btn: 'button',
txt: 'txt'
}),promptFn()函式可以實現我們要求的效果,引數是一個配置物件。
btn屬性值是按鈕的id屬性值;txt屬性值是文字框的id屬性值。
(3).function promptFn(arge) ,上面已經有簡單介紹。
(4).var btn = document.getElementById(arge.btn),獲取對應的元素物件。
(5).btn.onclick = function() {
createNode(arge);
},為按鈕註冊click事件處理函式,關於createNode()方法的用法後面會介紹。
(6). function createNode(arge) {},引數是一個配置物件。
(7).var btn = document.getElementById(arge.btn),獲取按鈕元素物件。
(8).status = btn.getAttribute('status'),獲取按鈕的status屬性值,這個屬性用來標識按鈕是否已經點選,並且彈出層沒有消失。
(9).if (status) {
return false;
},如果為true,那麼就直接返回,防止多次重複點選彈出多個層的現象。
(10). btn.setAttribute('status', 'true'),設定屬性值為true。
(11).var div = document.createElement('div'),建立一個div元素。
(12).span = document.createElement('span'),建立一個span元素。
(13).txt = document.getElementById(arge.txt).value,獲取文字框的value值。
(14).div.id = 'prompt',設定div的id屬性值為'prompt'。
(15).div.innerHTML = txt,設定div的html內容。
(16).div.appendChild(span),將span元素新增div中,這個就是那個半透明遮罩。
(17).animation(div, btn),此方法的具體用法下面會介紹。
(18).function animation(obj, btn) {},實現動畫方式顯示彈出層,obj是div元素物件,btn是按鈕物件。
(19).var timerShow = null,timerHide = null,timerRemove = null,宣告三個變數並賦值為null,用作定時器函式的標識。
(20).timerShow = setTimeout(function() {},100),100毫秒後顯示彈出層。
(21).obj.className = 'show',設定div元素的class屬性值為"show",這樣彈出層就會顯示。
(22).timerHide = setTimeout(function() {},2000),2000毫秒後,彈出層隱藏。
(23).obj.className = '',清空class屬性值。
(24).timerRemove = setTimeout(function() {
obj.remove();
btn.setAttribute('status', '');
}, 400),刪除div彈出層,並移除按鈕的對應屬性。
二.相關閱讀:
(1).border-radius可以參閱CSS3 border-radius一章節。
(2).transition可以參閱CSS3 transition一章節。
(3).transform可以參閱CSS3 transform一章節。
(4).document.getElementById()可以參閱document.getElementById()一章節。
(5).getAttribute()可以參閱getAttribute()一章節。
(6).document.createElement()可以參閱document.createElement()一章節。
(7).innerHTML可以參閱innerHTML一章節。
(8).appendChild()可以參閱appendChild()一章節。
(9).setTimeout()可以參閱setTimeout()一章節。
(10).className可以參閱js className一章節。
相關文章
- CSS 文字框圓角CSS
- css圓角矩形邊框CSS
- 純手畫WinForm的Alert提示彈出框ORM
- JavaScript文字框獲取焦點彈出tipsJavaScript
- 如何實現css漸變圓角邊框CSS
- qt如何將下拉框的框設定為圓角矩形QT
- 巧用 CSS 實現炫彩三角邊框動畫CSS動畫
- CSS畫出半圓,四分之一圓,三角等圖形CSS
- 帶圓角的虛線邊框?CSS 不在話下CSS
- sweetalert 彈出框瞬間消失
- 圓形視訊和圓角視訊的一種實現方式
- 輸入框跟隨鍵盤彈出/隱藏移動
- 點選彈出居中登陸框
- 根據SVG Arc求出其開始角、擺動角和橢圓圓心SVG
- 彈框
- 移動端下彈框禁止背景滑動
- JavaScript與CSS3動畫方式改變元素尺寸JavaScriptCSSS3動畫
- vux和iview的彈出框總結UXView
- Android Dialog風格彈出框的ActivityAndroid
- Element-Ui元件(四十)Popover 彈出框UI元件
- visio圓角矩形怎麼改變圓角大小
- 2019最佳彈窗/彈出框設計20例【附教程】
- 直播網站原始碼,安卓防止輸入框自動彈出網站原始碼安卓
- 利用元素邊框巧妙的畫三角形
- Flutter 圓形/圓角頭像Flutter
- 使用opencv畫框,標出座標OpenCV
- WPF在圓上畫出刻度線
- JavaScript動畫方式控制div元素的隱藏和顯示JavaScript動畫
- Javascript動畫(一)JavaScript動畫
- AUTOCAD——圓角命令
- 去除 bootstrap 彈出框背景變暗的效果boot
- bootstrap中的模態框(modal,彈出層)boot
- iOS鍵盤彈出時動畫時長失效問題iOS動畫
- border-image實現與圓角漸變邊框例項頁面
- 直播app系統原始碼,Flutter MaterialButton 實現圓角邊框按鈕APP原始碼Flutter
- 別用圖片了,CSS遮罩合成實現帶圓角的環形loading動畫CSS遮罩動畫
- 禁止彈框底部的內容滑動
- 直播平臺原始碼,自定義設定 View 四個角的圓角 以及邊框的設定原始碼View