block by enjalot 740429dcf26cb1a3530e6cebc6ac4b88

siumei 囍 ian

Full Screen

Built with blockbuilder.org

forked from enjalot‘s block: siumei & ian

index.html

<!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>