最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js以及jquery實(shí)現(xiàn)手風(fēng)琴效果

 更新時(shí)間:2020年04月17日 16:21:23   作者:diligentkong  
這篇文章主要為大家詳細(xì)介紹了js版本實(shí)現(xiàn)手風(fēng)琴效果和jquery版本實(shí)現(xiàn)的手風(fēng)琴效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

最近又復(fù)習(xí)了jQuery的知識(shí),既然jQuery是javascript的一個(gè)庫。jQuery能做到的事情javascript也能做到。因此用這兩種方法實(shí)現(xiàn)了圖片手風(fēng)琴效果。

按照慣例,還是上代碼吧,因?yàn)榇a里有我的注釋也就相當(dāng)于解釋了!

先看一下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代碼了。這里封裝了一個(gè)完整的運(yùn)動(dòng)框架(我個(gè)人 覺得哈,你可以繼續(xù)完善,不過你要告訴我,我也學(xué)習(xí)一下?。?/p>

/*
 * 實(shí)現(xiàn)動(dòng)畫的步驟:
 1.怎樣得到當(dāng)前的樣式 封裝一個(gè)函數(shù) getStyle()
 2.步長的計(jì)算 用(目標(biāo)位置 - 當(dāng)前的樣式) / 10
 3. 緩動(dòng)動(dòng)畫原理: 盒子本身的樣式 + 步長(不斷變化的)
 */
/*
 * css設(shè)置透明度,一般在ie中用的是filter:alpha(opacity=0);
而在firefox中,一般就是直接使用opacity:0
*/
// 多個(gè)屬性的運(yùn)動(dòng)框架 以及添加回調(diào)函數(shù)
function animate(obj,json,fn){ // 目標(biāo)obj json 屬性:屬性值 fn回調(diào)函數(shù)
 clearInterval(obj.timer);
 obj.timer = setInterval(function(){
 var flag = true;// 用來判斷是否停止定時(shí)器 
 // 遍歷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));// 獲得數(shù)值
 }
 // 得到步長 目標(biāo)位置就是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";
 }
 // 判斷是否已經(jīng)都到了目標(biāo)位置 只要其中一個(gè)不滿足條件 就不應(yīng)該停止定時(shí)器
 if (curStyle != json[attr]) {
 flag = false;
 }
 }
 // 判斷定時(shí)器條件 是否該停止了
 if (flag) {
 clearInterval(obj.timer)
 // 當(dāng)定時(shí)器停止后,動(dòng)畫也就結(jié)束了.如果有回調(diào)函數(shù)就執(zhí)行回調(diào)函數(shù)
 if(fn){
 fn();
 }

 }
 },30);
}

// 封裝函數(shù) 得到屬性
function getStyle(obj,attr) { // 誰的 那個(gè)屬性
 if(obj.currentStyle) // ie 等
 {
 return obj.currentStyle[attr]; // 返回傳遞過來的某個(gè)屬性
 }
 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>

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

寫完了js,發(fā)現(xiàn)代碼量好多啊,看看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版本手風(fēng)琴效果下載地址

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • JS批量替換內(nèi)容中關(guān)鍵詞為超鏈接

    JS批量替換內(nèi)容中關(guān)鍵詞為超鏈接

    本文主要介紹了JS批量替換內(nèi)容中關(guān)鍵詞為超鏈接,避開已存在的鏈接和alt、title中的關(guān)鍵詞的方法。下面跟著小編一起來看下吧
    2017-02-02
  • JS輸入用戶名自動(dòng)顯示郵箱后綴列表的方法

    JS輸入用戶名自動(dòng)顯示郵箱后綴列表的方法

    這篇文章主要介紹了JS輸入用戶名自動(dòng)顯示郵箱后綴列表的方法,可實(shí)現(xiàn)自動(dòng)顯示郵箱后綴名列表的功能,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-01-01
  • JavaScript事件用法淺析

    JavaScript事件用法淺析

    這篇文章主要介紹了JavaScript事件用法,較為詳細(xì)的分析了javascript事件流、事件類型及事件操作技巧,需要的朋友可以參考下
    2016-10-10
  • 用js控制視頻播放進(jìn)度基本示例代碼

    用js控制視頻播放進(jìn)度基本示例代碼

    寫前端的時(shí)候,很多的時(shí)候是需要支持要網(wǎng)頁視頻播放的功能,下面這篇文章主要給大家介紹了關(guān)于用js控制視頻播放進(jìn)度的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-04-04
  • javascript:;與javascript:void(0)使用介紹

    javascript:;與javascript:void(0)使用介紹

    有時(shí)候我們在編寫js過程中,需要觸發(fā)事件而不需要返回值,那么就可能需要這樣的寫法
    2013-06-06
  • js+SVG實(shí)現(xiàn)動(dòng)態(tài)時(shí)鐘效果

    js+SVG實(shí)現(xiàn)動(dòng)態(tài)時(shí)鐘效果

    這篇文章主要為大家詳細(xì)介紹了js+SVG實(shí)現(xiàn)動(dòng)態(tài)時(shí)鐘效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Javascript淺析執(zhí)行機(jī)制的詳情

    Javascript淺析執(zhí)行機(jī)制的詳情

    這篇文章主要介紹了JavaScript執(zhí)行機(jī)制,想要搞懂JavaScript執(zhí)行機(jī)制,便與進(jìn)程與線程的概念脫不了干系,下面我們就來看看這JavaScript執(zhí)行機(jī)制的具體介紹吧,需要的朋友可以參考一下
    2022-08-08
  • javascript DOM操作之動(dòng)態(tài)刪除TABLE多行

    javascript DOM操作之動(dòng)態(tài)刪除TABLE多行

    DOM動(dòng)態(tài)刪除TABLE tr行的實(shí)現(xiàn)代碼,需要的朋友可以參考下。
    2009-12-12
  • 通過示例徹底搞懂js閉包

    通過示例徹底搞懂js閉包

    下面小編就為大家?guī)硪黄ㄟ^示例徹底搞懂js閉包。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • 使用命令對(duì)象代替switch語句的寫法示例

    使用命令對(duì)象代替switch語句的寫法示例

    這篇文章主要介紹了使用命令對(duì)象代替switch語句的寫法示例,JS規(guī)范里面是禁止使用switch語句的,使用命令對(duì)象可以完美的解決這個(gè)問題,需要的朋友可以參考下
    2015-02-02

最新評(píng)論

绥江县| 乾安县| 习水县| 宁都县| 松阳县| 瑞金市| 江北区| 林芝县| 延长县| 贵阳市| 梓潼县| 襄城县| 克什克腾旗| 榆林市| 宜川县| 灵宝市| 芦溪县| 诸暨市| 临沧市| 弋阳县| 额尔古纳市| 龙泉市| 泊头市| 宜章县| 澳门| 射阳县| 宝清县| 大连市| 思茅市| 邢台市| 集安市| 赤壁市| 乐亭县| 阜宁县| 莱西市| 城口县| 永靖县| 宝山区| 资阳市| 特克斯县| 信阳市|