基于JavaScript實現百葉窗動畫效果不只單純flas可以實現
更新時間:2016年02月29日 14:38:36 投稿:mrr
看到這種百葉窗效果的動畫,以為是用flash做的,下面通過本文給大家介紹基于JavaScript實現百葉窗動畫效果,需要的朋友參考下吧
看到這種什么百葉窗的動畫,以為都是flash實現的,最近突然靈光一閃,想到了用js實現(雖然我不是做前端的,本人做.net)。代碼雖然實現了,但是比較亂,先上個圖:
一個js的動畫,以前以為只有flash可以實現
代碼主要就是一些數學的計算,然后結合html,css打造出類似flash的效果。
下面貼出主要的部分代碼:
function all(books){ for(var i=;i<self.rows;i++) { for (var j = ; j < self.columns; j++) { if(!books[i][j])return false; } } return true; } function resetBooks(books){ for(var i=;i<self.rows;i++) { for (var j = ; j < self.columns; j++) { books[i][j]=false; } } return true; } var self=this,timer=null,_iindex= ; var initdir=[[[,],[,]],[[-,],[,]],[[,-],[-,]],[[,-],[,]],[[,-],[,],[,],[-,]]],dir=initdir[]; var weight=[,,,,]; var initpos=[[{x:,y:-}],[{x:self.columns-,y:-}],[{x:self.columns-,y:self.rows}],[{x:,y:self.rows}],[{x:self.columns/,y:self.rows/}]]; timer=setInterval(function(){ var n=[]; for(var i=;i<self.preDivs.length;i++){ var _div=null,x= ,y=; for(var j=;j<dir.length;j++){ x=self.preDivs[i].x+dir[j][]; y=self.preDivs[i].y+dir[j][]; if(x>=&&y>=&&x<self.columns&&y<self.rows&&!self.books[y][x]){ self.books[y][x]=true; _div=self.zzDivStatck[y][x]; n.push({x:x,y:y}); _div.style.backgroundImage = "url(" + self.zzImages[_iindex] + ")"; _div.style.backgroundPositionX = (-x * self.zzDivW) + "px "; _div.style.backgroundPositionY = (-y * self.zzDivH) + "px"; } } } self.preDivs=n; if(all(self.books)){ resetBooks(self.books); var _r=util.randomWeight(weight); self.preDivs = initpos[_r]; dir=initdir[_r]; _iindex++; } if(_iindex>=+self.zzImages.length){ _iindex=; } },);
以上代碼是使用javascript實現的百葉窗動畫效果,希望對大家有所幫助!
相關文章
JavaScript高級程序設計閱讀筆記(五) ECMAScript中的運算符(一)
ECMAScript中的運算符,學習js的朋友可以看看2012-02-02uniapp開發(fā)安卓App實現高德地圖路線規(guī)劃導航功能的全過程
最近項目需要在APP內實現路線規(guī)劃導航功能,直接打開高德地圖進行導航,下面這篇文章主要給大家介紹了關于利用uniapp開發(fā)安卓App實現高德地圖路線規(guī)劃導航功能的相關資料,需要的朋友可以參考下2022-08-08TypeScript 獲取函數的參數類型、返回值類型及定義返回函數類型
這篇文章主要介紹了TypeScript 獲取函數的參數類型、返回值類型及定義返回函數類型,需要的朋友可以參考下2024-02-02