以動畫方式設定元素的透明度
設定元素的透明度非常的簡單,具體可以參閱js動態設定元素透明度程式碼例項一章節。
但是上面的程式碼有點粗暴,很多時候我們需要一種動畫方式的過渡設定。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> html, body { margin: 0; padding: 0; } div { margin: 0; padding: 0; } .odiv { width: 200px; height: 200px; background: #f00; position: relative; left: 0px; top: 100px; opacity: 0.3; filter: alpha(opacity:30); float: left; margin: 10px; } </style> <script language="javascript"> window.onload = function () { var odiv = document.getElementsByTagName('div'); for (var index = 0; index < odiv.length; index++) { (function () { odiv[index].onmouseover = function () { startOP(this, 100); } odiv[index].onmouseout = function () { startOP(this, 30); } odiv[index].timer = null; odiv[index].alpha = null; })(index) } } function startOP(obj, utarget) { clearInterval(obj.timer); obj.timer = setInterval(function () { var speed = 0; if (obj.alpha > utarget) { speed = -10; } else { speed = 10; } obj.alpha = obj.alpha + speed; if (obj.alpha == utarget) { clearInterval(obj.timer); } obj.style.filter = 'alpha(opacity:' + obj.alpha + ')'; obj.style.opacity = parseInt(obj.alpha) / 100; }, 30); } </script> </head> <body> <div id="odiv" class="odiv"></div> </body> </html>
上面的程式碼實現了我們的要求,下面介紹一下它的實現過程。
一.程式碼註釋:
(1).window.onload = function () {},當文件內容完全載入完畢再去執行函式中程式碼。
(2).var odiv = document.getElementsByTagName('div'),的獲取div元素集合。
(3).for (var index = 0; index < odiv.length; index++) {},遍歷集合中的每一個元素。
(4).(function () {
odiv[index].onmouseover = function () {
startOP(this, 100);
}
odiv[index].onmouseout = function () {
startOP(this, 30);
}
odiv[index].timer = null;
odiv[index].alpha = null;
})(index),以閉包的方式為元素註冊時間處理函式和為元素新增一些自定義屬性。
(5).function startOP(obj, utarget) {},此函式實現了透明度動畫效果,第一個引數是元素物件,第二個是透明度目標值。
(6).clearInterval(obj.timer),防止多個定時器函式疊加執行。
(7).obj.timer = setInterval(function () {},30),每隔30毫秒執行一次匿名函式。
(8).var speed = 0,宣告一個變數並賦值為0,後面會用到。
(9).if (obj.alpha > utarget) { speed = -10;
}
else {
speed = 10;
},如果如果大於目標值,那麼將speed設定為-10,否則設定為10,這個就是透明度變化的幅度。
(10).obj.alpha = obj.alpha + speed,每次執行為obj.alpha值加上透明度變化值。
(11).if (obj.alpha == utarget) {
clearInterval(obj.timer);
},如果達到目標值,那麼就停止定時器函式的執行。
(12).obj.style.filter = 'alpha(opacity:' + obj.alpha + ')';
obj.style.opacity = parseInt(obj.alpha) / 100;
上面兩個是為了相容瀏覽器。
二.相關閱讀:
(1).onmouseover事件可以參閱javascript mouseover事件一章節。
(2).onmouseout事件可以參閱javascript mouseout事件一章節。
(3).clearInterval()可以參閱clearInterval()一章節。
(4).setInterval()可以參閱setInterval()一章節。
(5).閉包可以參閱javascript閉包概念介紹一章節。
(6).相容透明度可以參閱CSS如何設定div背景透明度且相容性良好一章節。
相關文章
- JavaScript設定元素透明度JavaScript
- CSS3漸變方式設定透明度CSSS3
- XamarinAndroid元件教程設定自定義子元素動畫(二)NaNAndroid元件動畫
- XamarinAndroid元件教程設定自定義子元素動畫(一)NaNAndroid元件動畫
- CSS3動畫方式改變div元素的尺寸CSSS3動畫
- canvas 設定透明度Canvas
- jQuey設定透明度
- CSS 透明度設定CSS
- canvas設定透明度Canvas
- JavaScript動畫方式控制div元素的隱藏和顯示JavaScript動畫
- jQuery動態設定div元素的尺寸jQuery
- JavaScript設定元素float浮動JavaScript
- JavaScript與CSS3動畫方式改變元素尺寸JavaScriptCSSS3動畫
- XamarinAndroid元件教程設定動畫的設定插值器NaNAndroid元件動畫
- CSS 設定邊框透明度CSS
- ppt動畫出現順序怎麼設定 PPT設定動畫文字順序動畫
- JavaScript動態設定元素背景圖片JavaScript
- 以動畫的方式,快速直觀地檢視 Git 檔案變動歷史動畫Git
- SVG 填充、描邊和透明度設定SVG
- 動畫的另外一種方式動畫
- 教你三種jQuery框架實現元素顯示及隱藏動畫方式jQuery框架動畫
- CSS設定元素的背景顏色CSS
- XamarinAndroid元件教程設定動畫的時長引數NaNAndroid元件動畫
- App 自動化《元素定位方式、元素操作、混合應用、分層設計、程式碼方式執行 Pytest 命令》APP
- App自動化《元素定位方式、元素操作、混合應用、分層設計、程式碼方式執行Pytest 命令》APP
- HTML元素設定可拖拽HTML
- canvas—元素樣式設定Canvas
- input元素預設選中設定
- Flutter共享元素動畫,你會嗎?Flutter動畫
- 對一個元素設定浮動後,它的特徵是什麼?特徵
- 不咕剪輯APP設定視訊字幕的透明度的方法APP
- linux設定開機自啟動指令碼的最佳方式Linux指令碼
- 談一談Flutter中的共享元素動畫HeroFlutter動畫
- 以程式設計方式設定用於從FastReport.Net傳送預設電子郵件客戶端設定程式設計AST客戶端
- [python][selenium][web自動化]webdriver的元素定位方式PythonWeb
- 以互動的方式升級ESXi主機
- XamarinAndroid元件教程RecylerView介面卡設定動畫NaNAndroid元件View動畫
- matlab畫圖設定Matlab
- CSS 設定svg元素樣式CSSSVG