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

首頁 > 編程 > JavaScript > 正文

js以及jquery實現手風琴效果

2019-11-19 17:29:02
字體:
來源:轉載
供稿:網友

最近又復習了jQuery的知識,既然jQuery是javascript的一個庫。jQuery能做到的事情javascript也能做到。因此用這兩種方法實現了圖片手風琴效果。

按照慣例,還是上代碼吧,因為代碼里有我的注釋也就相當于解釋了!(^__^) 嘻嘻……

先看一下javascript的代碼吧:

div布局:注意哦,里面的圖片我們用js代碼生成

<div id="box"> <ul> <li></li> <li></li> <li></li> <li></li> <li></li> </ul></div>

css樣式:

<style type="text/css">  *{  margin: 0;  padding: 0;  }  ul{  list-style: none;  }  #box{  width: 1150px;  height: 400px;  margin: 50px auto;  border: 1px solid red;  overflow: hidden;  }  #box ul{  width: 1300px;  }  #box ul li{  width: 240px;  height: 400px;  float: left;  } </style>

要寫js代碼了。這里封裝了一個完整的運動框架(我個人 覺得哈,你可以繼續完善,不過你要告訴我,我也學習一下!)

/* * 實現動畫的步驟: 1.怎樣得到當前的樣式 封裝一個函數 getStyle() 2.步長的計算 用(目標位置 - 當前的樣式) / 10 3. 緩動動畫原理: 盒子本身的樣式 + 步長(不斷變化的) *//* * css設置透明度,一般在ie中用的是filter:alpha(opacity=0);而在firefox中,一般就是直接使用opacity:0*/// 多個屬性的運動框架 以及添加回調函數function animate(obj,json,fn){ // 目標obj json 屬性:屬性值 fn回調函數 clearInterval(obj.timer); obj.timer = setInterval(function(){ var flag = true;// 用來判斷是否停止定時器  // 遍歷json for (var attr in json) { //attr 屬性 json[attr]值  var curStyle = 0;  if (attr == "opacity") {  curStyle = parseInt(getStyle(obj,attr)*100);  } else{  curStyle = parseInt(getStyle(obj,attr));// 獲得數值  }  // 得到步長 目標位置就是json[attr]  var step = (json[attr]-curStyle) / 10;  step = step > 0 ? Math.ceil(step) :Math.floor(step);  // 判斷透明度  if (attr == "opacity") { // 判斷用戶有沒有輸入opacity  if ("opacity" in obj.style) {    obj.style.opacity = (curStyle + step) / 100;  } else{   obj.style.filter = "alpha(opacity="+(curStyle +step)+")";  }  } else if(attr == "zIndex"){  obj.style.zIndex = json[attr];  } else{  obj.style[attr] = curStyle +step +"px";  }  // 判斷是否已經都到了目標位置 只要其中一個不滿足條件 就不應該停止定時器  if (curStyle != json[attr]) {  flag = false;  } } // 判斷定時器條件 是否該停止了 if (flag) {  clearInterval(obj.timer)  // 當定時器停止后,動畫也就結束了.如果有回調函數就執行回調函數  if(fn){  fn();  } } },30);}// 封裝函數 得到屬性function getStyle(obj,attr) { // 誰的 那個屬性 if(obj.currentStyle) // ie 等 { return obj.currentStyle[attr]; // 返回傳遞過來的某個屬性 } else { return window.getComputedStyle(obj,null)[attr]; // w3c 瀏覽器 }}

接著我們在js里面引入我們寫的框架

<script src="animate.js"></script>

接下來,寫js代碼

<script>  window.onload = function(){  var box = document.getElementById("box");  var lis = box.children[0].children;  for (var i = 0; i < lis.length;i++) {   lis[i].style.backgroundImage = "url(images/"+(i+1)+".jpg)";   lis[i].onmouseover = function(){   for (var j = 0; j < lis.length;j++) {    animate(lis[j],{width:100});   }   animate(this,{width:800});   }   lis[i].onmouseout = function(){   for (var k = 0; k < lis.length;k++) {    animate(lis[k],{width:240});   }   }  }  }</script>

好啦,這樣就完成了,具體效果你自己動手看看吧。完整的下載地址為js版本的手風琴效果

寫完了js,發現代碼量好多啊,看看jquery代碼,哦買嘎,切記一定要先引入jQuery的包,再寫代碼哈!

<script src="jquery-1.11.1.min.js"></script> <script>  $(function(){  $("#box li").each(function(index,ele){   $(ele).css("background","url(images/"+(index+1)+".jpg)");  }).mouseenter(function(){   $(this).stop().animate({width:800},500).siblings("li").stop().animate({width:100},500);  }).mouseleave(function(){   $("#box li").stop().animate({width:240},500);  });  }); </script>

精簡了好多。
來吧,我們的jQuery版本手風琴效果下載地址

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 谷城县| 阜城县| 英吉沙县| 阿巴嘎旗| 万州区| 阿克苏市| 特克斯县| 宾川县| 河池市| 池州市| 建平县| 鄂伦春自治旗| 玉田县| 雅安市| 嘉荫县| 黄梅县| 昌宁县| 手游| 锦州市| 翼城县| 苗栗市| 双桥区| 肃宁县| 融水| 铁岭市| 峨眉山市| 海阳市| 佛坪县| 福州市| 八宿县| 洪雅县| 孟连| 比如县| 凤山县| 安庆市| 固阳县| 万源市| 曲周县| 泰兴市| 犍为县| 霸州市|