diff --git "a/html/\345\234\226\345\203\217\350\236\215\345\220\210.coffee" "b/html/\345\234\226\345\203\217\350\236\215\345\220\210.coffee"
new file mode 100644
index 0000000..a4f7bbe
--- /dev/null
+++ "b/html/\345\234\226\345\203\217\350\236\215\345\220\210.coffee"
@@ -0,0 +1,62 @@
+window.圖像融合 =
+ 緩存: {} ,
+ 圖像融合: (圖片名組, f) ->
+ 緩存 = this.緩存
+ if 緩存[圖片名組.toString()]
+ console.log '用緩存'
+ t = this.緩存[圖片名組.toString()]
+ f(t[0], t[1])
+ m = 0
+ 圖片組 = []
+ for i in 圖片名組
+ t = new Image()
+ t.src = i[0]
+ t.setAttribute("crossOrigin", 'Anonymous')
+ t.偏移x = i[1]
+ t.偏移y = i[2]
+ 圖片組.push(t)
+ t.onload = ->
+ m += 1
+ if m == 圖片名組.length
+ go(緩存)
+ go = (緩存)->
+ 極x = Math.max.apply(Math, (圖片.width + 圖片.偏移x for 圖片 in 圖片組))
+ 極y = Math.max.apply(Math, (圖片.height + 圖片.偏移y for 圖片 in 圖片組))
+
+ canvas = document.createElement("canvas")
+ canvas.width = 極x
+ canvas.height = 極y
+
+ context = canvas.getContext("2d")
+ for 圖片 in 圖片組
+ context.drawImage(圖片, 圖片.偏移x , 圖片.偏移y , 圖片.width , 圖片.height)
+
+ base64 = canvas.toDataURL("image/png")
+ 緩存[圖片名組.toString()] = [[極x, 極y], base64]
+
+ f([極x, 極y], base64)
+
+ 融合到div: (圖片名組, 時間, dv) ->
+ this.圖像融合(圖片名組, (尺寸, base64) ->
+ dv = document.getElementById(dv)
+ if 時間 > 0
+ dv.style.transition = "background #{時間}s, width #{時間}s, height #{時間}s, top #{時間}s, left #{時間}s, transform #{時間}s"
+ else
+ dv.style.transition = ""
+ dv.style.width = 尺寸[0]
+ dv.style.height = 尺寸[1]
+ dv.style.backgroundImage = "url(#{base64})"
+ )
+
+
+# window.onload = ->
+# 融合到div([
+# ['體.png', 2, 156],
+# ['0.png', 423, 338],
+# ], 1)
+#
+# document.getElementById('avatar').onclick=->
+# 融合到div([
+# ['體.png', 2, 156],
+# ['1.png', 425, 336]
+# ], 0.5)
diff --git "a/html/\345\234\226\345\203\217\350\236\215\345\220\210.js" "b/html/\345\234\226\345\203\217\350\236\215\345\220\210.js"
new file mode 100644
index 0000000..a2d23a8
--- /dev/null
+++ "b/html/\345\234\226\345\203\217\350\236\215\345\220\210.js"
@@ -0,0 +1,92 @@
+// Generated by CoffeeScript 2.3.2
+(function() {
+ window.圖像融合 = {
+ 緩存: {},
+ 圖像融合: function(圖片名組, f) {
+ var go, i, j, len, m, t, 圖片組, 緩存;
+ 緩存 = this.緩存;
+ if (緩存[圖片名組.toString()]) {
+ console.log('用緩存');
+ t = this.緩存[圖片名組.toString()];
+ f(t[0], t[1]);
+ }
+ m = 0;
+ 圖片組 = [];
+ for (j = 0, len = 圖片名組.length; j < len; j++) {
+ i = 圖片名組[j];
+ t = new Image();
+ t.src = i[0];
+ t.setAttribute("crossOrigin", 'Anonymous');
+ t.偏移x = i[1];
+ t.偏移y = i[2];
+ 圖片組.push(t);
+ t.onload = function() {
+ m += 1;
+ if (m === 圖片名組.length) {
+ return go(緩存);
+ }
+ };
+ }
+ return go = function(緩存) {
+ var base64, canvas, context, k, len1, 圖片, 極x, 極y;
+ console.log(緩存);
+ 極x = Math.max.apply(Math, (function() {
+ var k, len1, results;
+ results = [];
+ for (k = 0, len1 = 圖片組.length; k < len1; k++) {
+ 圖片 = 圖片組[k];
+ results.push(圖片.width + 圖片.偏移x);
+ }
+ return results;
+ })());
+ 極y = Math.max.apply(Math, (function() {
+ var k, len1, results;
+ results = [];
+ for (k = 0, len1 = 圖片組.length; k < len1; k++) {
+ 圖片 = 圖片組[k];
+ results.push(圖片.height + 圖片.偏移y);
+ }
+ return results;
+ })());
+ console.log(極x, 極y);
+ canvas = document.createElement("canvas");
+ canvas.width = 極x;
+ canvas.height = 極y;
+ context = canvas.getContext("2d");
+ for (k = 0, len1 = 圖片組.length; k < len1; k++) {
+ 圖片 = 圖片組[k];
+ context.drawImage(圖片, 圖片.偏移x, 圖片.偏移y, 圖片.width, 圖片.height);
+ }
+ base64 = canvas.toDataURL("image/png");
+ 緩存[圖片名組.toString()] = [[極x, 極y], base64];
+ return f([極x, 極y], base64);
+ };
+ },
+ 融合到div: function(圖片名組, 時間, dv) {
+ return this.圖像融合(圖片名組, function(尺寸, base64) {
+ dv = document.getElementById(dv);
+ if (時間 > 0) {
+ dv.style.transition = `background ${時間}s, width ${時間}s, height ${時間}s, top ${時間}s, left ${時間}s, transform ${時間}s`;
+ } else {
+ dv.style.transition = "";
+ }
+ dv.style.width = 尺寸[0];
+ dv.style.height = 尺寸[1];
+ return dv.style.backgroundImage = `url(${base64})`;
+ });
+ }
+ };
+
+ // window.onload = ->
+// 融合到div([
+// ['體.png', 2, 156],
+// ['0.png', 423, 338],
+// ], 1)
+
+// document.getElementById('avatar').onclick=->
+// 融合到div([
+// ['體.png', 2, 156],
+// ['1.png', 425, 336]
+// ], 0.5)
+
+}).call(this);