国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

js運動事件函數詳解

2019-11-20 08:41:37
字體:
來源:轉載
供稿:網友

本文實例為大家分享了js運動事件函數,供大家參考,具體內容如下

HTML

<div id="breedsdog"><h2 class="title">The Dog</h2><p class="describe">Split between cat,belong to the cat family,cat,cat,is the world's more widely<br>in the family pet.Cats ancestors is presumably desert cats</p><div class="breedsdog1"><div class="img"><img src="img2/labrador.jpg"/><a class="lookdog" href="#"></a></div><div class="img_txt"><p class="chinese">拉布拉多</p><p class="english">Labrador</p><p class="introduce">拉布拉多獵犬因原產地在加拿大的紐芬蘭與拉布拉多省而得名。拉布拉多犬是一種中大型犬類,個性忠誠、大氣、憨厚、溫和、陽光、開朗、活潑,智商極高,也對人很友善,是非常適合被選作經常出入公共場合的導盲犬或地鐵警犬及搜救犬和其他工作犬的狗品種,跟哈士奇(西伯利亞雪撬犬)和金毛獵犬并列三大無攻擊性犬類,拉布拉多智商位列世界犬類第七。</p></div></div></div>

CSS布局樣式省略

現在a.lookdog的樣式我設為position:absolutely,寬高設為0。實現的特效:當鼠標移入div.img上,實現a.lookdog的寬高自動展開的緩沖動畫,并且展開完畢后,透明度變低的遮罩背景圖層。當然我們用css3也能實現這種特效,但是css3的坑是不完全支持IE瀏覽器,所以用javascript來實現運動緩沖動畫是最理想的。

javascript

函數封裝部分

//根據類名和父對象ID獲取屬性節點,解決getelementsByClass對瀏覽器的兼容性問題function getbyclass(classname,parent){    //傳入ID獲取父節點,如果該參數為空就為document var oParent=parent?document.getElementById(parent):document;    //定義一個空數組來存放屬性節點 var els=[];    //定義一個數組存放父對象的所有子節點 var elements=oParent.getElementsByTagName("*");    //遍歷所有子節點,根據類名把所有的子對象找出來,并且放在els數組內 for(var i=0;i<elements.length;i++){ if(elements[i].className==classname){ els.push(elements[i]); } } return els; }//根據對象要獲取的屬性名來得到屬性值function getStyle(obj,stylename){    //針對IE瀏覽器獲取樣式方法if(obj.currentStyle){return obj.currentStyle[stylename];    //針對其他瀏覽器獲取樣式方法}else if(getComputedStyle(obj,false)){return getComputedStyle(obj,false)[stylename];}}//緩沖動畫主函數,傳參類型:(對象,jaso格式要改變的樣式值(可多個),緩沖系數,執行周期時間(值越小速度越快,越大越慢),回調函數(是否有多次動畫的播放,可有可無))function MoveJason(obj,jason,average,cycle,continuefunction){clearInterval(obj.timer);obj.timer=setInterval(function(){for(var stylename in jason){//針對多效果的緩沖動畫// obj.style[stylename]=jason[stylename];// }if(stylename=="opacity"){var offvalue=Math.round(parseFloat(getStyle(obj,stylename))*100);var speed=(jason[stylename]-offvalue)/average;  speed=speed>0?Math.ceil(speed):Math.floor(speed);  if(speed==0){clearInterval(obj.timer);if(continuefunction) continuefunction();//回調函數,判斷是否有多次執行  }else{obj.style[stylename]=(offvalue+speed)/100;obj.style.filter="alpha(opacity:"+(offvalue+speed)+")";  }}else{var offvalue=parseInt(getStyle(obj,stylename));var speed=(jason[stylename]-offvalue)/average;  speed=speed>0?Math.ceil(speed):Math.floor(speed);  if(speed==0){clearInterval(obj.timer);if(continuefunction) continuefunction();  }else{obj.style[stylename]=offvalue+speed+"px";  }  }}},cycle);}

頁面初始化函數,方法調用

window.onload=function(){var imgdog=getbyclass("img","breedsdog");//在父對象breedsdog上找到所有的div.img    //給所有的div.img添加鼠標移入,鼠標移出事件for(var i=0;i<imgdog.length;i++){imgdog[i].onmouseover=function(){var obj=this.children[1];            MoveJason(obj,{"height":376,"width":206},5,30,function(){//緩沖動畫的函數調用,當執行完寬高值的緩沖變化,再回調函數執行透明度緩沖變化。以下同理,可以多層嵌套實現多個回調。        MoveJason(obj,{"opacity":30},5,30);    });}imgdog[i].onmouseout=function(){var obj=this.children[1];            MoveJason(obj,{"height":0,"width":0},5,30,function(){        MoveJason(obj,{"opacity":80},5,30);    });}}}

鼠標移入移出效果圖如下,我多加個了幾個div.img,可以看到等寬高變完,然后透明度發生變化。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 五家渠市| 仁怀市| 佛山市| 峡江县| 长白| 惠安县| 扎兰屯市| 巴塘县| 南康市| 元朗区| 班玛县| 大城县| 房山区| 寻甸| 侯马市| 双峰县| 汾阳市| 西乌| 聂荣县| 南安市| 东源县| 万荣县| 海城市| 黎川县| 普宁市| 佛冈县| 富顺县| 江陵县| 延津县| 龙山县| 明水县| 阿荣旗| 三台县| 仪征市| 墨竹工卡县| 靖边县| 新昌县| 富平县| 德格县| 富平县| 华坪县|