Built with blockbuilder.org
forked from enjalot's block: siumei & ian
| license: mit |
Built with blockbuilder.org
forked from enjalot's block: siumei & ian
| <!DOCTYPE html> | |
| <head> | |
| <meta charset="utf-8"> | |
| <script src="https://d3js.org/d3.v4.min.js"></script> | |
| <link href="https://fonts.googleapis.com/css?family=Libre+Baskerville:400,400i,700" rel="stylesheet"> | |
| <style> | |
| body { margin:0;position:fixed;top:0;right:0;bottom:0;left:0; } | |
| text { | |
| font-size: 140px; | |
| font-family: 'Libre Baskerville', serif; | |
| text-anchor: middle; | |
| } | |
| .mei { | |
| fill: "#f33" | |
| } | |
| </style> | |
| </head> | |
| <body> | |
| <script> | |
| var cX = 500; | |
| var cY = 300; | |
| var txm = 50; | |
| var mei = [ | |
| {c: 's', tx: txm + 365}, | |
| {c: 'i', tx: txm + 320}, | |
| {c: 'u', tx: txm + 265}, | |
| {c: 'm', tx: txm + 155}, | |
| {c: 'e', tx: txm + 55}, | |
| {c: 'i', tx: txm}, | |
| ]; | |
| var txi = 130 | |
| var ian = [ | |
| {c: 'i', tx: txi}, | |
| {c: 'a', tx: txi + 55}, | |
| {c: 'n', tx: txi + 130}, | |
| ]; | |
| //var AND = "&"; | |
| var AND = "囍"; | |
| var speed = 0.01 | |
| var svg = d3.select("body").append("svg") | |
| .attr("width", 960) | |
| .attr("height", 500) | |
| // RENDER MEI | |
| var meig = svg.selectAll("g.mei").data(mei) | |
| var meigE = meig.enter().append("g").classed("mei", true) | |
| .attr("transform", function(d,i) { | |
| if(i == 5) | |
| return "translate(" + [cX, cY] + ")" | |
| return "translate(" + [cX - 25 - txm, cY] + ")" | |
| }) | |
| .style("opacity", function(d,i) { | |
| if(i == 5) return 1 | |
| return 0; | |
| }) | |
| meigE.append("rect") | |
| //.attr("width", 20) | |
| //.attr("height", 20) | |
| meigE.append("text") | |
| .text(function(d) {return d.c}) | |
| meig = meigE.merge(meig) | |
| meig | |
| .transition() | |
| .duration(function(d,i) { | |
| if(i == 5) return (1000) * speed | |
| return (1200 + (5-i) * 200) * speed; | |
| }) | |
| .delay(function(d,i) { | |
| if(i == 5) return 0; | |
| return (1000 + (5-i) * 100) * speed | |
| }) | |
| .style("opacity", 1) | |
| .attr("transform", function(d,i) { | |
| return "translate(" + [cX - d.tx, cY] + ")" | |
| }) | |
| // RENDER IAN | |
| var iang = svg.selectAll("g.ian").data(ian) | |
| var iangE = iang.enter().append("g").classed("ian", true) | |
| .attr("transform", function(d,i) { | |
| if(i == 0) | |
| return "translate(" + [cX, cY] + ")" | |
| return "translate(" + [cX + txi + 25, cY] + ")" | |
| }) | |
| .style("opacity", function(d,i) { | |
| if(i == 0) return 1 | |
| return 0; | |
| }) | |
| iangE.append("rect") | |
| //.attr("width", 20) | |
| //.attr("height", 20) | |
| iangE.append("text") | |
| .text(function(d) {return d.c}) | |
| iang = iangE.merge(iang) | |
| iang | |
| .transition() | |
| .duration(function(d,i) { | |
| return (1000 + (i) * 500) * speed | |
| }) | |
| .delay(function(d,i) { | |
| if(i == 0) return 0 | |
| return (400 + (i) * 600) * speed | |
| }) | |
| .style("opacity", 1) | |
| .attr("transform", function(d,i) { | |
| return "translate(" + [cX + d.tx, cY] + ")" | |
| }) | |
| var amp = svg.append("text").text(AND) | |
| .attr("x", cX + 40) | |
| .attr("y", cY - 6) | |
| .style("fill", "#111") | |
| .style("font-size", "120px") | |
| .style("font-family", "LiHei Pro") | |
| .style("opacity", 0) | |
| .transition() | |
| .ease(d3.easeSin) | |
| .duration(2000 * speed) | |
| .delay(2500 * speed) | |
| .style("opacity", 1) | |
| .style("fill", "#992300") | |
| </script> | |
| </body> |