transform從基礎到高階到資料驅動

2021-10-01 09:47:26 字數 2044 閱讀 4862

先來看乙個例子

旋轉        

斜切

斜切

大家應該都能看的明白,這是用最原始的方法來實現動畫。

簡單易懂,但是這樣的話我們會寫很多重複的**,rotate.style.transform = 'scale(2)',這樣的**每個事件內部我們都要寫一遍。

一般遇到重複**的時候,就可以考慮下是否可以封裝函式了,我們先從最簡單的引數出發,這個函式大概需要3個引數,ele元素,prop動畫的動作,value,動畫的值。

所以我們可以先封裝這樣乙個帶有3個引數的函式。

v1.js

/**

* * @param element // 要操作的元素

* @param prop // 運動屬性

* @param value // 具體值

*/function csstransform(element, prop, value)

if(value !== undefined)

element.style.webkittransform = element.style.transform = transformvalue;

}} else

}

rotate.addeventlistener('touchstart', function() )
每次使用的時候直接呼叫這樣的乙個函式,傳入相應的值就可以了,是不是看起來簡單了很多。

但是這樣的寫法還是有點繁瑣,每次都需要傳遞3個引數。那能不能再簡化乙個,只傳遞兩個引數呢?

我們給原型加上乙個方法,看會怎樣?

可以看到任何乙個元素都會有乙個start方法,並且內部的this,就是呼叫者本身。所以我們可以用這種方式來封裝

htmlelement.prototype.csstransform = function (prop, value) 

}this.style.webkittransform = this.style.transform = transformvalue;

} else

}

rotate.addeventlistener('touchstart', function() )
這樣呼叫,也可以實現需求,是不是又簡單了一步。

那還能不能再優化呢?我們能不能只傳遞乙個引數呢?

能不能這樣 ele.scale(2);就能達到我們想要的效果呢?下面我們來實現一下

function transform(ele) ,

set: function (value)

}ele.style.webkittransform = ele.style.transform = transformvalue;}})

})return ele;

}

var ele = transform(rotate);

ele.addeventlistener('touchstart', function() )

親測一下發現,功能實現了,很神奇,這就是我們的資料驅動思想,我只管發指令,具體怎麼實現,內部去做處理。這樣是不是比最初的那種封裝看上去高大上了許多。

Python 從基礎到高階 檔案物件

在python中,讀寫檔案有3個步驟 呼叫open 函式,返回乙個file物件 呼叫file物件的read 或write 方法 呼叫file物件的close 方法,關閉該檔案 呼叫open 將返回乙個file物件。file物件代表計算機中的乙個檔案,它只是python中另一種型別的值,就像你已熟悉的...

grep與egrep用法從基礎到高階高階

一 grep 國際音標 grep grep是shell指令碼中的文字搜尋工具,根據使用者指定的文字模式對目標檔案進行逐行搜尋,顯示能被模式所匹配到的行。格式 grep options pattern file,常用選項 v 反向匹配,顯示不能被模式所匹配到的行。o 僅顯示被模式匹配到的字串,而非整行...

查詢(從基本到高階)

查詢語句是sql語言裡面使用頻率最高的語句。這主要是為程式開發人員所使用。我們對資料的操作概括起來就四個字,增,刪,改,查。對於刪和改操作,首先要先進行查詢操作。那麼下面將介紹所有查詢的語句,來給大家參考。首先要先建立一張表,然後對該錶進行查詢。sql 如下 使用student資料庫 use stu...