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