js滑鼠懸浮連結背景動畫方式漸變效果
本章節分享一段程式碼例項,它實現了滑鼠懸浮於連結能夠實現動畫方式背景變色。
這樣的效果比起來生硬的背景變化相當美觀也人性化。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> body,ul,h2,p{ margin:0; padding:0; font-family:"微軟雅黑"; background:#333; } li{list-style:none;} a{text-decoration:none;} #box{ width:270px; padding:10px 10px 20px; overflow:hidden; margin:20px auto 0; border:1px solid #FFF; } .internal{ width:266px; float:left; } #box h2{ height:38px; border-bottom:1px solid #ccc; padding-left:5px; } #box h2 strong{ float:left; line-height:38px; color:#885050; } #box h2 a{ float:right; width:52px; height:14px; font-size:12px; text-indent:20px; color:#fff; line-height:12px; font-weight:normal; margin-top:10px; } #box li{ height:30px; position:relative; border-bottom:1px dashed #ccc; } #box li div,#box li p{ height:30px; position:absolute; top:0; left:0; width:100%; } #box li p{ background:#fff; opacity:0; filter:alpha(opacity=0); } #box li div a,#box li div span{ line-height:30px; font-size:12px; height:30px; } #box li div a { float:left; padding-left:5px; color:#7F5454; width:185px; overflow:hidden; } #box li div span{ padding-right:10px; float:right; color:#CF9494; } </style> <script type="text/javascript"> window.onload=function(){ var d=document; var oBox=d.getElementById('box'); var aLi=oBox.getElementsByTagName('li'); var index=0; for(index=0;index<aLi.length;index++){ var oP=aLi[index].getElementsByTagName('p')[0]; oP.iAlpha=0; oP.times=null; aLi[index].onmouseover=function(){ oP=this.getElementsByTagName('p')[0]; oP.times && clearInterval(oP.times); oP.style.opacity=1; oP.style.filter="alpha(opacity=100)"; oP.iAlpha=100; }; aLi[index].onmouseout=function(){ startMove(this.getElementsByTagName('p')[0]) }; } }; function startMove(obj){ obj.times=setInterval(function(){ doMove(obj); },10); } function doMove(obj){ var iSpeed=5; if(obj.iAlpha<=iSpeed){ clearInterval(obj.times); obj.iAlpha=0; obj.time=null; }else{ obj.iAlpha-=iSpeed; } obj.style.filter="alpha(opacity="+obj.iAlpha+")"; obj.style.opacity=obj.iAlpha/100; } </script> </head> <body> <div id="box"> <div class="internal"> <h2> <strong>螞蟻部落歡迎您</strong> <a href="http://www.softwhy.com/">more</a> </h2> <ul> <li> <p></p> <div> <a href="http://www.softwhy.com/">分享和互助是良好的學習風格</a> <span>2011-09-10</span> </div> </li> <li> <p></p> <div> <a href="http://www.softwhy.com/">每一天都是新的必須要好好珍惜</a> <span>2011-09-10</span> </div> </li> <li> <p></p> <div> <a href="http://www.softwhy.com/">沒有人一開始就是高手,必須要努力學習</a> <span>2011-09-10</span> </div> </li> <li> <p></p> <div> <a href="http://www.softwhy.com/">要想有所成就,就必須有所不同,否則只能是庸庸碌碌</a> <span>2011-09-10</span> </div> </li> <li> <p></p> <div> <a href="http://www.softwhy.com/">div css教程真的很不錯</a> <span>2011-09-10</span> </div> </li> <li> <p></p> <div> <a href="http://www.softwhy.com/"> 網頁電子書下載 </a> <span>2011-09-10</span> </div> </li> <li> <p></p> <div> <a href="http://www.softwhy.com/">網頁特效下載專區</a> <span>2011-09-10</span> </div> </li> </ul> </div> </div> </body> </html>
上面的程式碼實現了我們的要求,下面介紹一下它的實現過程。
一.程式碼註釋:
(1).window.onload=function(){},當文件內容完全載入完畢再去執行函式中的程式碼。
(2).var d=document,將document物件賦值給變數d。
(3).var oBox=d.getElementById('box'),獲取id屬性值為box的元素。
(4).var aLi=oBox.getElementsByTagName('li'),獲取oBox元素物件下的所有li元素集合。
(5).var index=0,宣告一個變數並賦值為0。
(6).for(index=0;index<aLi.length;index++){},遍歷每一個li元素。
(7).var oP=aLi[index].getElementsByTagName('p')[0],獲取當前li元素下的p元素。
(8).oP.iAlpha=0,為當前p元素物件新增一個屬性,並賦值為0,它是用作和低版本IE瀏覽器下透明度值計算相關。
(9).oP.times=null,為當前p元素物件新增一個屬性,用作定時器函式的標識。
(10).aLi[index].onmouseover=function(){
oP=this.getElementsByTagName('p')[0];
oP.times && clearInterval(oP.times);
oP.style.opacity=1;
oP.style.filter="alpha(opacity=100)";
oP.iAlpha=100;
};為當前li元素註冊onmouseover事件處理函式。
oP=this.getElementsByTagName('p')[0],獲取當前li下的p元素,可能有人會疑問為什麼不適用上面已經獲取的p元素物件,這裡要重複獲取一次,這是因為當for迴圈執行完畢後,前面的p元素物件是最後一個li元素中的p元素物件,而不是當前li中的p元素物件了。
oP.times && clearInterval(oP.times),這個程式碼的作用是當滑鼠懸浮又迅速離開,然後又快速懸浮,第一個漸變效果還沒有完成的時候,那麼就停止這個漸變效果。
oP.style.opacity=1,標準瀏覽器下設定透明度。
oP.style.filter="alpha(opacity=100)",在低版本瀏覽器下設定透明度。
oP.iAlpha=100,設定為100,和低版本IE瀏覽器數值對應起來。
(11).aLi[index].onmouseout=function(){
startMove(this.getElementsByTagName('p')[0])
},為當前li元素註冊onmouseout事件處理函式,當滑鼠離開的時候執行startMove()方法,引數是當前p元素物件。
(12).function startMove(obj){
obj.times=setInterval(function(){
doMove(obj);
},10);
},開始定時器函式的執行。
(13).function doMove(obj){
var iSpeed=5;
if(obj.iAlpha<=iSpeed){
clearInterval(obj.times);
obj.iAlpha=0;
obj.time=null;
}else{
obj.iAlpha-=iSpeed;
}
obj.style.filter="alpha(opacity="+obj.iAlpha+")";
obj.style.opacity=obj.iAlpha/100;
},設定元素的透明度,非常的簡單的。
二.相關閱讀:
(1).getElementsByTagName()方法可以參閱document.getElementsByTagName()一章節。
(2).onmouseover事件可以參閱javascript mouseover事件一章節。
(3).clearInterval()方法可以參閱window.clearInterval()一章節。
(4).onmouseout事件可以參閱javascript mouseout事件一章節。
(5).setInterval()方法可以參閱setInterval()一章節。
相關文章
- 滑鼠懸浮實現連結背景變色效果
- CSS3連結<a>滑鼠懸浮動畫效果CSSS3動畫
- CSS滑鼠懸浮行背景變色效果CSS
- css滑鼠懸浮div背景變色效果CSS
- css 滑鼠懸浮連結背景變色程式碼CSS
- 實現滑鼠懸浮table表格行背景變色效果
- 滑鼠懸浮遮罩層動畫方式滑動切換效果遮罩動畫
- CSS 滑鼠懸浮動畫暫停效果CSS動畫
- 滑鼠懸浮具有背景動畫跟隨效果的導航選單動畫
- 滑鼠懸浮按鈕背景變色效果程式碼例項
- jQuery實現的滑鼠在連結懸浮背景變色程式碼jQuery
- CSS滑鼠懸浮圖片動畫放大效果CSS動畫
- CSS3滑鼠懸浮動畫按鈕效果CSSS3動畫
- 滑鼠懸浮背景變色導航選單
- jQuery背景色漸變動畫效果jQuery動畫
- 滑鼠懸浮連結出現音效效果程式碼例項
- CSS滑鼠懸浮在連結之上背景變色程式碼CSS
- 滑鼠懸浮實現圖片動畫上下切換效果動畫
- css3實現滑鼠懸浮背景上下翻滾效果CSSS3
- 滑鼠懸浮改變連結樣式程式碼例項
- jQuery實現的滑鼠懸浮和選中實現表格行背景變色效果jQuery
- 直播原始碼,懸浮窗滾動漸變色效果原始碼
- js滑鼠懸浮字串實現字串跳動效果JS字串
- css3實現的滑鼠懸浮按鈕動畫效果CSSS3動畫
- 滑鼠懸浮於連結<a>之上出現提示文字效果程式碼
- CSS實現的滑鼠懸浮整行背景變色程式碼CSS
- CSS3實現的滑鼠懸浮文字顏色漸變效果程式碼例項CSSS3
- [譯] CSS 變數實現炫酷滑鼠懸浮效果CSS變數
- css滑鼠懸浮下拉選單效果CSS
- jQuery滑鼠懸浮翻牌效果詳解jQuery
- jQuery滑鼠懸浮聚焦效果詳解jQuery
- 滑鼠懸浮可以實現圓角矩形明亮變化效果
- 滑鼠懸浮div實現旋轉效果
- CSS3滑鼠懸浮元素放大效果CSSS3
- SVG 漸變動畫效果SVG動畫
- div css背景漸變效果CSS
- 滑鼠懸浮連結彈出提示程式碼例項
- js文字內容感應滑鼠懸浮效果程式碼例項JS