DEMO
道理申明
用 Matrix
天生一個二維矩陣,經由過程劃定的活動情勢,肯定出須要活動的點,觸發特定事宜,在特定時候后舉行下一輪的活動,肯定活動點,觸發事宜,直到一切的點都活動過。
makeMatrixChange 活動函數
參數申明
- 參一: 須要掛載的節點
- 參二:
option
一些設置信息
options
申明
- row: 須要天生的行數
- col: 須要天生的列數
- images: 圖片列表
- nameSpace: 指定類名,不傳則隨機天生一個
返回值申明
- movePoint/Function: 挪用即最先活動
- changeImages/Function: 轉變原始的圖片列表,重要用於圖片的懶加載,比方為了防備圖片未加載好显示出來,在瀏覽器緩存好圖片后,替換圖片列表
- matrixChange: 原始的
Matrix
對象
movePoint
函數參數申明:
- 參一: 活動情勢,能夠從
mChange.mode
列表中取 - 參二(
option
): 肯定動畫結果,能夠不傳,運用默許結果
例子:
var app = document.getElementById('app')
var urls = ['http://7xse2z.com1.z0.glb.clouddn.com/257084.jpg',
'http://7xse2z.com1.z0.glb.clouddn.com/257453.jpg',
'http://7xse2z.com1.z0.glb.clouddn.com/285848.jpg',
'http://7xse2z.com1.z0.glb.clouddn.com/3455%20%281%29.jpg']
var move = mChange.makeMatrixChange(app, {
images: urls,
row: 7,
col: 9
})
// 運用默許的動畫結果
move.movePoint(mChange.mode[0])
// 運用 transition 過渡,供應類名即可,eg: .test{transfrom:scale(0);}
move.movePoint(mChange.mode[0], {
className: 'test'
})
// 運用 animation 動畫,比方合營 animation.css 動畫庫
// animation 須要供應兩個類名,進場動畫和進場動畫,同時須要標誌這個是 animation 動畫
move.movePoint(mChange.mode[0], {
animate: true,
classNameIn: 'animated flipInX',
classNameOut: 'animated flipOutX'
})
// 運用特定的圖片舉行動畫
// 不傳 image 則隨機取傳入的圖片列表中的一張圖片
move.movePoint(mChange.mode[0], {
animate: true,
classNameIn: 'animated flipInX',
classNameOut: 'animated flipOutX',
image: urls[0]
})
擴大
-
makeMatrixChange
是運用mChange
供應的要領寫的一個函數,假如有需求自定義矩陣動畫結果,能夠運用供應的要領本身封裝一個 - 假如僅僅是不滿足於當前的活動情勢,也能夠自定義活動情勢
自定義活動情勢
活動情勢是一個對象,對象下包括信息
- interval/Number: 每次活動的間隔時候
- init/Function: 用於初始化設置,在活動前會挪用
- check/Function: 用於推斷當次活動須要活動的點
- next/Function: 每次活動后關於下次活動的設置
- end/Function: 用於推斷活動是不是完畢,每次活動后都邑挪用
- 其他: 能夠設置一些其他的字段,
hitPoint
事宜會將當前的活動情勢放在回調函數的參數中。比方,定義了duration
字段用於天生過渡的事宜dom.style.transition = mode.duration / 1000 + 's'
。
一個簡樸的栗子
{
interval: '140',
duration: '1000',
init: function (row, col) {
this.row = row
this.col = col
this.num = 0
},
check: function (i, j) {
return i + j === this.num
},
next: function () {
this.num++
},
end: function () {
return this.col + this.row + 1 === this.num
}
}
-
init
函數參數即為Matrix
實例初始化的行列信息 -
check
函數參數即為每一個二維矩陣的點,從0
最先