2014-11-23
7:42 PM
以下程式碼範例為圖片讀取完成後
淡出原本容器的背景 再淡入背景圖片的效果
程式碼範例
- var target = $(value);
- var src = "/image/cover/thumbnail";
- $('<img/>').attr('src', src).on("load", function() {
- var base64 = convertImgToBase64( $(this)[0] );
- $(this).remove();
- TweenMax.to(target, 0.5, {
- alpha:0,
- ease:Quad.easeInOut,
- onCompleteParams:[target, base64],
- onComplete:function(t, i){
- t.css("background", "rgba(31, 31, 31, 1) url(" + i + ") no-repeat center center");
- TweenMax.to(t, 1.3, {alpha:1, ease:Quad.easeInOut});
- }
- });
- });
- function convertImgToBase64(img){
- var canvas = document.createElement('CANVAS');
- var ctx = canvas.getContext('2d');
- canvas.height = img.height;
- canvas.width = img.width;
- ctx.drawImage(img, 0, 0);
- var dataURL = canvas.toDataURL();
- canvas = null;
- return dataURL;
- }
詳細解說
- // 取得要加入背景圖片的物件
- var target = $("#coverDiv");
- // 設定URL
- var src = "/image/cover/thumbnail";
- // 建立圖片讀取及暫存物件
- $('<img/>').attr('src', src).on("load", function() {
- // 讀取完成後將圖片轉換為base64編碼
- // 以防止瀏覽器無設定快取時造成圖片重複讀取
- var base64 = cmc.util.convertImgToBase64( $(this)[0] );
- // 避免佔用記憶體
- $(this).remove();
- // 再將base64編碼指定至background url即可
- // 此處為加入動畫釋例
- // 完成讀取後使用淡出原本背景 -> 淡入圖片背景效果
- TweenMax.to(target, 0.5, {
- alpha:0,
- ease:Quad.easeInOut,
- onCompleteParams:[target, base64],
- onComplete:function(t, u){
- t.css("background", "rgba(31, 31, 31, 1) url(" + u + ") no-repeat center center");
- TweenMax.to(t, 1.3, {alpha:1, ease:Quad.easeInOut});
- }
- });
- });
- // 將圖片物件轉換為base64編碼
- function convertImgToBase64(img){
- // 首先建立canvas物件 必須使用到cavas物件的方法
- var canvas = document.createElement('CANVAS');
- // 設定內容為2D
- var ctx = canvas.getContext('2d');
- // 將cavas的寬高設定為與圖片相同
- canvas.height = img.height;
- canvas.width = img.width;
- // 繪製圖片至cavas內
- ctx.drawImage(img, 0, 0);
- // 使用cavas的toDataURL功能轉換為base64編碼
- var dataURL = canvas.toDataURL();
- // 清除cavas物件
- canvas = null;
- return dataURL;
- }
各項資料連結
JQuery 官方網站
Base64 - 維基百科
No comments:
Post a Comment