JavaScript透明度漸變效果
建議使用CSS3實現類似功能,具體參閱CSS透明度漸變效果一章節。
下面分享一個使用JavaScript實現的此功能,相容性更好一些,程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> div { width: 150px; height: 150px; background-color: #8B0000; float: left; margin: 10px; border: 3px solid #599; filter: alpha(opacity: 30); opacity: 0.3; } </style> <script> window.onload = function() { var aDiv = document.getElementsByTagName("div"); for (var index = 0; index < aDiv.length; index++) { aDiv[index].timer = null; aDiv[index].alpha = 30; aDiv[index].onmouseover = function () { startMove(this, 100); } aDiv[index].onmouseout = function () { startMove(this, 30); } } } function startMove(obj, iTarget) { clearInterval(obj.timer); obj.timer = setInterval(function() { var speed = (iTarget - obj.alpha) / 10; speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed); if (obj.alpha == iTarget) { clearInterval(obj.timer); } else { obj.alpha += speed; obj.style.filter = "alpha(opacity:" + obj.alpha + ")"; obj.style.opacity = obj.alpha / 100; } }, 30); } </script> </head> <body> <div></div> <div></div> <div></div> <div></div> </body> </html>
上面的程式碼實現了我們的要求,下面介紹一下它的實現過程。
一.程式碼註釋:
(1).window.onload = function() {},當文件結構載入完畢再去執行函式中的程式碼。
(2).var aDiv = document.getElementsByTagName("div"),獲取div元素集合。
(3).for (var index = 0; index < aDiv.length; index++) {},遍歷集合中的每一個div元素。
(4).aDiv[index].timer = null,為當前物件新增一個自定義屬性timer並賦值為null,用來作為定時器函式的標識。
(5).aDiv[index].alpha = 30,為當前物件新增一個自定義屬性alpha 並賦值為30(值是經過處理的),預設透明度。
(6).aDiv[index].onmouseover = function () {
startMove(this, 100);
},為當前元素註冊onmouseover事件處理函式。
滑鼠懸浮的時候,目標透明度為100,也就是不透明。
(7).aDiv[index].onmouseout = function () {
startMove(this, 30);
},滑鼠離開,透明度設定為30。
(8).function startMove(obj, iTarget) ,第一個引數是元素物件,第二個引數是目標透明度。
(9).clearInterval(obj.timer),停止上一個定時器函式的執行,防止反覆移入移出導致定時器疊加的問題。
(10).obj.timer = setInterval(function() {},30),每隔30毫秒執行一次回撥函式。
(11).var speed = (iTarget - obj.alpha) / 10,透明度變化幅度。
(12).speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed),將速度轉換為整數。
(13). if (obj.alpha == iTarget) {
clearInterval(obj.timer);
},如果達到目標透明度值,那麼就停止定時器函式的執行。
(14).else {
obj.alpha += speed;
obj.style.filter = "alpha(opacity:" + obj.alpha + ")";
obj.style.opacity = obj.alpha / 100;
},設定當前元素透明度,採用了相容性寫法。
二.相關閱讀:
(1).getElementsByTagName參閱document.getElementsByTagName()一章節。
(2).onmouseover事件參閱javascript mouseover事件一章節。
(3).onmouseout事件參閱javascript mouseout事件一章節。
(4).clearInterval參閱clearInterval()一章節。
(5).setInterval參閱window.setInterval()一章節。
相關文章
- CSS透明度漸變效果CSS
- javascript元素透明度漸變效果程式碼例項JavaScript
- JavaScript漸變方式設定透明度JavaScript
- CSS 透明度漸變CSS
- javascript網頁背景顏色漸變效果JavaScript網頁
- SVG 漸變動畫效果SVG動畫
- iOS文字漸變效果iOS
- div css背景漸變效果CSS
- CSS3漸變方式設定透明度CSSS3
- iOS 導航欄顏色透明度漸變iOS
- javascript文字彩虹式顏色漸變效果程式碼例項JavaScript
- javascript 玫瑰花漸現效果JavaScript
- canvas具有漸變效果的矩形Canvas
- 使用 CSS 實現漸變效果CSS
- jQuery背景色漸變動畫效果jQuery動畫
- CSS背景色漸變效果程式碼CSS
- 為app實現漸變的遮罩效果APP遮罩
- css樣式背景顏色漸變效果CSS
- 指令碼和css控制!文字漸變效果!指令碼CSS
- Dreamweaver製作滑鼠經過圖片漸漸變暗效果教程
- JavaScript隔行變色效果JavaScript
- iOS 背景圖層的顏色漸變效果iOS
- css3實現的文字顏色漸變和漸隱效果CSSS3
- JavaScript 表格隔行變色效果JavaScript
- javascript元素內容漸現效果程式碼例項JavaScript
- canvas繪製帶有漸變效果的直線Canvas
- CSS3背景漸變效果程式碼例項CSSS3
- CSS3文字顏色漸變效果CSSS3
- 仿噹噹App首頁按鈕漸變動畫效果APP動畫
- 漸變邊框文字效果?CSS 輕鬆拿捏!CSS
- iOS之移動中變化的cell(cell逐漸變大效果)iOS
- canvas透明度的矩形效果Canvas
- jQuery設定透明度效果jQuery
- 直播原始碼,懸浮窗滾動漸變色效果原始碼
- js滑鼠懸浮連結背景動畫方式漸變效果JS動畫
- JavaScript文字迴圈變色效果JavaScript
- jquery實現的具有漸變效果的圖片切換jQuery
- CSS3 文字字型顏色動態漸變效果CSSS3