JSFiddle - React, Tailwind, and code Playground

by electronoob

HTML

<section>
    <div style="position:absolute;left:50%;transform:translateX(-50%);top:-150px;z-index:-1;">
      <canvas id="canvas" width="710" height="740" style="transform: scale(0.5);">
        <p>Update your browser my guy (づ ̄ ³ ̄)づ</p>
      </canvas>
    </div>
    <div style="margin-top: 450px;">
      <h1>“One must not commit adultery my child” <em>-jesus</em></h1>
      <div class="menu-items">
        <a class="btn-A" href="/apps/blog/">Blog</a>
        <a class="btn-A" href="/bookmarks.html">Bookmarks</a>
        <a class="btn-A" href="/portfolio.html">Portfolio</a>
      </div>
      <h2>Services</h2>
      <div class="menu-items">
        <a class="btn-A" href="/apps/proxy">Proxy Scraper</a>
        <a class="btn-A" href="/apps/discord">Discord Self Bot</a>
        <a class="btn-A" href="/apps/aurora">Aurora Service</a>
        <a class="btn-A" href="/anonymity.html">Anonymity Test</a>
      </div>
      <h2>About / Contact</h2>
      <div class="menu-items">
        <a class="btn-A" href="#" onclick="fadeInOut(event,document.getElementById('whoami'),document.getElementsByTagName('section')[0]);">Whoami</a>
        <a class="btn-A" href="#" onclick="fadeInOut(event,document.getElementById('discord'),document.getElementsByTagName('section')[0]);">Discord</a>
        <a class="btn-A" href="#" onclick="fadeInOut(event,document.getElementById('matrix'),document.getElementsByTagName('section')[0]);">Matrix</a>
      </div>
      <br><br><br>
    </div>
  </section>
  <center id="discord">
    <a class="btn-B" href="#" onclick="fadeInOut(event,document.getElementsByTagName('section')[0],document.getElementById('discord'));">Take me back</a>
    <h2>Enter the cesspool and become a member of the Christian Hacking Club.</h2>
    <iframe src="https://discordapp.com/widget?id=709921316647469086&theme=dark" width="40%" height="500px" allowtransparency="true" frameborder="0"></iframe>
  </center>
  <center id="matrix">
    <div>
      <h2>Join our official matrix...

CSS

@import url('https://fonts.googleapis.com/css?family=Anonymous+Pro&display=swap');@import url('https://fonts.googleapis.com/css?family=Montserrat&display=swap');:root{--primary:#00ff7a;--primary-variant:#23d35b;--secondary:#03dac6;--secondary-variant:#018786;--tertiary:#6200ee;--tertiary-variant:#3700b3;--background:#131313;--background-variant:#212121;--surface:#1c1c1c;--text-on-dark:#fff;--text-on-light:#2d2d2d;--shadow:2px 2px 3px rgba(10, 10, 10, 0.8);--shadow-hov:2px 2px 7px rgba(0, 0, 0, 0.8);}*{box-sizing:border-box;margin:0;padding:0;}body{font-family:'Anonymous Pro', monospace;line-height:1.4;background-color:var(--background);color:var(--text-on-dark);}header{padding:50px 5vw;background:url('/assets/backgroundB.png');background-size:cover;background-attachment:fixed;}.info{padding:50px 5vw;background:url('/assets/tile4.png');background-attachment:fixed;}a{color:var(--primary);transition:color .2s;}a:hover, a:active{color:var(--primary-variant);}nav.global{background-color:var(--surface);display:flex;flex-direction:row;justify-content:center;}nav.global a{padding:20px;display:block;color:var(--text-on-dark);text-decoration:none;text-align:center;box-shadow:inset 0 0 0 0 var(--background-variant);transition:box-shadow .4s;font-family:'Montserrat', sans-serif;}nav.global a:hover{box-shadow:inset 0 0 0 30px var(--background-variant);}button{cursor:pointer;width:22ch;text-align:center;font-family:'Montserrat', sans-serif !important;text-decoration:none;display:table;background:none;border:2px solid;margin:0.5em;padding:1em 2em;transition:0.25s;color:var(--primary);box-shadow:0.3em 0.3em 0 0 var(--primary), inset 0.3em 0.3em 0 0 var(--primary);font-weight:bold;}button:hover,button:focus{color:var(--text-on-light);border-color:var(--primary-variant);box-shadow:0 0 0 0 var(--primary-variant), inset 6em 3.5em 0 0 var(--primary-variant);}

section{height:100vh;width:100%;position:absolute;top:50%;left:50%;transform:translate(-50%,...

JavaScript

function draw() {
  var canvas = document.getElementById('canvas');
  var ctx = canvas.getContext('2d');

  cords_short = [[155, 10], [335, 10], [565, 587], [663, 557], [699, 671], [487, 738], [352, 398], [146, 701], [4, 701], [292, 253], [253, 133], [155, 133], [155, 10]];

  // define the path to plot
  var vertices=[{x: 155, y: 10}, {x: 335, y: 10}, {x: 565, y: 587}, {x: 663, y: 557}, {x: 699, y: 671}, {x: 487, y: 738}, {x: 352, y: 398}, {x: 351, y: 398}, {x: 146, y: 701}, {x: 4, y: 701}, {x: 292, y: 254}, {x: 292, y: 252}, {x: 253, y: 133}, {x: 155, y: 133}, {x: 155, y: -4}];
  // calc waypoints traveling along vertices
  function calcWaypoints(vertices){
    var waypoints=[];
    for(var i=1;i<vertices.length;i++){
      var pt0=vertices[i-1];
      var pt1=vertices[i];
      var dx=pt1.x-pt0.x;
      var dy=pt1.y-pt0.y;
      for(var j=0;j<10;j++){
        var x=pt0.x+dx*j/10;
        var y=pt0.y+dy*j/10;
        waypoints.push({x:x,y:y});
      }
    }
    return(waypoints);
  }
  var points=calcWaypoints(vertices);
  var t=1;
  // start the animation
  setTimeout(function() {
    animate();
  },600);
  // animate();
  // incrementally draw additional line segments along the path
  function animate(){
    if(t<points.length-1){
      requestAnimationFrame(animate);
    }
    // draw a line segment from the last waypoint
    // to the current waypoint
    ctx.beginPath();
    ctx.strokeStyle = '#32de84';
    ctx.lineWidth = 6;
    ctx.moveTo(points[t-1].x,points[t-1].y);
    ctx.lineTo(points[t].x,points[t].y);
    ctx.stroke();
    // increment "t" to get the next waypoint
    t++;
  }

  var i = 0;
  function drawDots(coords, s=0) {
    setTimeout(() => {
      ctx.clearRect(0, 0, canvas.width, canvas.height);
      for (let i = 0; i < coords.length; i++) {
        let v1 = coords[i][0];
        let v2 = coords[i][1];
        ctx.beginPath();
        ctx.fillStyle = '#32de84';
        ctx.arc(s*v1, s*v2, 5, 0, 2*Math.PI);
        ctx.fill();
       ...