<canvas></canvas>
<div class="loop"></div>
<div class="no" id="no">X</div>
<div class="days" id="days">DAYS</div>
<div class="line"></div>
<div class="text" id="text">UNTIL CHRISTMAS</div>
body{
  margin: 0;
  padding: 0;
  background: #100d04;
  overflow: hidden;
}

canvas{
  -webkit-filter: blur(8px);
}

div.no{
  position: absolute;
  top: -webkit-calc(50% - 100px);
  left: -webkit-calc(50% - 50px);
  background: rgb(163,114,46); /* Old browsers */
  background: -moz-linear-gradient(-45deg, rgba(163,114,46,1) 0%, rgba(208,157,47,1) 0%, rgba(255,254,170,1) 67%, rgba(254,218,79,1) 99%); /* FF3.6+ */
  background: -webkit-gradient(linear, left top, right bottom, color-stop(0%,rgba(163,114,46,1)), color-stop(0%,rgba(208,157,47,1)), color-stop(67%,rgba(255,254,170,1)), color-stop(99%,rgba(254,218,79,1))); /* Chrome,Safari4+ */
  background: -webkit-linear-gradient(-45deg, rgba(163,114,46,1) 0%,rgba(208,157,47,1) 0%,rgba(255,254,170,1) 67%,rgba(254,218,79,1) 99%); /* Chrome10+,Safari5.1+ */
  background: -o-linear-gradient(-45deg, rgba(163,114,46,1) 0%,rgba(208,157,47,1) 0%,rgba(255,254,170,1) 67%,rgba(254,218,79,1) 99%); /* Opera 11.10+ */
  background: -ms-linear-gradient(-45deg, rgba(163,114,46,1) 0%,rgba(208,157,47,1) 0%,rgba(255,254,170,1) 67%,rgba(254,218,79,1) 99%); /* IE10+ */
  background: linear-gradient(135deg, rgba(163,114,46,1) 0%,rgba(208,157,47,1) 0%,rgba(255,254,170,1) 67%,rgba(254,218,79,1) 99%); /* W3C */
  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#a3722e', endColorstr='#feda4f',GradientType=1 ); /* IE6-9 fallback on horizontal gradient */
  border: 2px solid #e1c15c;
  border-radius: 5px;
  font-family: Arial Black;
  font-size: 72px;
  width: 130px;
  height: 100px;
  text-align: center;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}

div.days{
  position: absolute;
  top: -webkit-calc(50% - 10px);
  left: -webkit-calc(50% - 95px);
  background: rgb(163,114,46); /* Old browsers */
  background: -moz-linear-gradient(-45deg, rgba(163,114,46,1) 0%, rgba(208,157,47,1) 0%, rgba(255,254,170,1) 67%, rgba(254,218,79,1) 99%); /* FF3.6+ */
  background: -webkit-gradient(linear, left top, right bottom, color-stop(0%,rgba(163,114,46,1)), color-stop(0%,rgba(208,157,47,1)), color-stop(67%,rgba(255,254,170,1)), color-stop(99%,rgba(254,218,79,1))); /* Chrome,Safari4+ */
  background: -webkit-linear-gradient(-45deg, rgba(163,114,46,1) 0%,rgba(208,157,47,1) 0%,rgba(255,254,170,1) 67%,rgba(254,218,79,1) 99%); /* Chrome10+,Safari5.1+ */
  background: -o-linear-gradient(-45deg, rgba(163,114,46,1) 0%,rgba(208,157,47,1) 0%,rgba(255,254,170,1) 67%,rgba(254,218,79,1) 99%); /* Opera 11.10+ */
  background: -ms-linear-gradient(-45deg, rgba(163,114,46,1) 0%,rgba(208,157,47,1) 0%,rgba(255,254,170,1) 67%,rgba(254,218,79,1) 99%); /* IE10+ */
  background: linear-gradient(135deg, rgba(163,114,46,1) 0%,rgba(208,157,47,1) 0%,rgba(255,254,170,1) 67%,rgba(254,218,79,1) 99%); /* W3C */
  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#a3722e', endColorstr='#feda4f',GradientType=1 ); /* IE6-9 fallback on horizontal gradient */
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  font-family: Arial Black;
  font-size: 82px;
}

div.line{
  position: absolute;
  top: -webkit-calc(50% + 90px);
  left: -webkit-calc(50% - 140px);
  background: rgb(163,114,46); /* Old browsers */
  background: -moz-linear-gradient(-45deg, rgba(163,114,46,1) 0%, rgba(208,157,47,1) 0%, rgba(255,254,170,1) 67%, rgba(254,218,79,1) 99%); /* FF3.6+ */
  background: -webkit-gradient(linear, left top, right bottom, color-stop(0%,rgba(163,114,46,1)), color-stop(0%,rgba(208,157,47,1)), color-stop(67%,rgba(255,254,170,1)), color-stop(99%,rgba(254,218,79,1))); /* Chrome,Safari4+ */
  background: -webkit-linear-gradient(-45deg, rgba(163,114,46,1) 0%,rgba(208,157,47,1) 0%,rgba(255,254,170,1) 67%,rgba(254,218,79,1) 99%); /* Chrome10+,Safari5.1+ */
  background: -o-linear-gradient(-45deg, rgba(163,114,46,1) 0%,rgba(208,157,47,1) 0%,rgba(255,254,170,1) 67%,rgba(254,218,79,1) 99%); /* Opera 11.10+ */
  background: -ms-linear-gradient(-45deg, rgba(163,114,46,1) 0%,rgba(208,157,47,1) 0%,rgba(255,254,170,1) 67%,rgba(254,218,79,1) 99%); /* IE10+ */
  background: linear-gradient(135deg, rgba(163,114,46,1) 0%,rgba(208,157,47,1) 0%,rgba(255,254,170,1) 67%,rgba(254,218,79,1) 99%); /* W3C */
  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#a3722e', endColorstr='#feda4f',GradientType=1 ); /* IE6-9 fallback on horizontal gradient */
  width: 350px;
  height: 1px;
}

div.text{
  position: absolute;
  top: -webkit-calc(50% + 100px);
  left: -webkit-calc(50% - 110px);
  background: rgb(163,114,46); /* Old browsers */
  background: -moz-linear-gradient(-45deg, rgba(163,114,46,1) 0%, rgba(208,157,47,1) 0%, rgba(255,254,170,1) 67%, rgba(254,218,79,1) 99%); /* FF3.6+ */
  background: -webkit-gradient(linear, left top, right bottom, color-stop(0%,rgba(163,114,46,1)), color-stop(0%,rgba(208,157,47,1)), color-stop(67%,rgba(255,254,170,1)), color-stop(99%,rgba(254,218,79,1))); /* Chrome,Safari4+ */
  background: -webkit-linear-gradient(-45deg, rgba(163,114,46,1) 0%,rgba(208,157,47,1) 0%,rgba(255,254,170,1) 67%,rgba(254,218,79,1) 99%); /* Chrome10+,Safari5.1+ */
  background: -o-linear-gradient(-45deg, rgba(163,114,46,1) 0%,rgba(208,157,47,1) 0%,rgba(255,254,170,1) 67%,rgba(254,218,79,1) 99%); /* Opera 11.10+ */
  background: -ms-linear-gradient(-45deg, rgba(163,114,46,1) 0%,rgba(208,157,47,1) 0%,rgba(255,254,170,1) 67%,rgba(254,218,79,1) 99%); /* IE10+ */
  background: linear-gradient(135deg, rgba(163,114,46,1) 0%,rgba(208,157,47,1) 0%,rgba(255,254,170,1) 67%,rgba(254,218,79,1) 99%); /* W3C */
  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#a3722e', endColorstr='#feda4f',GradientType=1 ); /* IE6-9 fallback on horizontal gradient */
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  font-family: Arial;
  font-size: 32px;
}

div.loop{
  position: absolute;
  top: -webkit-calc(50% - 134px);
  left: -webkit-calc(50% + 12px);
  border: 2px solid #e1c15c;
  border-radius: 0 50px 50px 50px;
  width: 30px;
  height: 30px;
  -webkit-transform: rotate(265deg);
}

div.loop:after{
  content: '';
  position: absolute;
  top: -31px;
  left: 0px;
  border: 2px solid #e1c15c;
  border-radius: 0 50px 50px 50px;
  width: 30px;
  height: 30px;
  -webkit-transform: rotate(280deg);
}

div.loop:before{
  content: '';
  position: absolute;
  top: -8px;
  left: -16px;
  border-left: 2px solid #e1c15c;
  border-bottom: 2px solid #e1c15c;
  width: 10px;
  height: 10px;
  -webkit-transform: rotate(230deg);
}
window.requestAnimFrame = (function(){
  return  window.requestAnimationFrame || 
    window.webkitRequestAnimationFrame || 
    window.mozRequestAnimationFrame    || 
    window.oRequestAnimationFrame      || 
    window.msRequestAnimationFrame     ||  
    function( callback ){
    window.setTimeout(callback, 1000 / 60);
  };
})();

var canvas = document.getElementsByTagName("canvas")[0];
var ctx = canvas.getContext("2d");

var w = window.innerWidth, h = window.outerHeight;
canvas.width = w;
canvas.height = h;

var circles = 60;
var circle_array = [];

function init(){
  ctx.fillStyle = "#100d04";
  ctx.rect(this.x,this.y,w,h);
  ctx.fill();
  for(var i=0;i<circles;i++){
    var c = new circle();
    circle_array.push(c);
  }
  var d = new Date();
  var day = d.getDate();
  var days_to_go = 25 - day;
  if(d.getMonth() != 11){
    days_to_go = -1;
  }
  if(days_to_go == 0){
    // IT'S CHRISTMAS
    document.getElementById("no").innerHTML = "X";
    document.getElementById("days").innerHTML = "CHRISTMAS";
    document.getElementById("days").style.left = "-webkit-calc(50% - 240px)";
    document.getElementById("text").innerHTML = "IS HERE";
    document.getElementById("text").style.left = "-webkit-calc(50% - 40px)";
  }
  else if(days_to_go < 0){
    // IT'S CHRISTMAS
    document.getElementById("no").innerHTML = "X";
    document.getElementById("days").innerHTML = "CHRISTMAS";
    document.getElementById("days").style.left = "-webkit-calc(50% - 240px)";
    document.getElementById("text").innerHTML = "HAS PAST, COME BACK NEXT YEAR";
    document.getElementById("text").style.left = "-webkit-calc(50% - 240px)";
  }
  else{
    document.getElementById("no").innerHTML = ""+days_to_go+"";
  }
}

function circle(){
  this.x = Math.random()*w;
  this.y = Math.random()*h;
  this.r = 0;
  this.r_max = Math.floor(Math.random() * 55)+15;
  this.opacity = Math.floor(Math.random() * 1)+0.2;
  this.draw = function(){
    ctx.fillStyle = "hsla(48,97%,59%,"+this.opacity+")";
    ctx.beginPath();
    ctx.arc(this.x,this.y,this.r, 0, Math.PI*2, false);
    ctx.fill();
  }
}

function drawscene(){
  ctx.fillStyle = "rgba(0,0,0,1)";
  ctx.rect(0,0,w,h);
  ctx.fill();
  for(var i=0;i<circle_array.length;i++){
    if(circle_array[i].r>=circle_array[i].r_max){
      if(circle_array[i].opacity<0.01){
        circle_array[i] = new circle();
      }
      else{
        circle_array[i].opacity -= 0.01;
      }
    }
    else{
      circle_array[i].r += Math.random()*0.3;
    }
    circle_array[i].draw();
  }
}

function animloop() {
  drawscene();
  requestAnimFrame(animloop); 
}
init();
animloop();
Run Pen

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. //cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js