<!-- Credit --->
<!-- how to calculate feColorMatrix - http://bit.ly/2t4ZuoC --->
<!-- photo credit - https://flic.kr/p/pG4piA --->
<!-- RGB color parser - http://mementoo.info/archives/594 --->

<svg style="visibility:hidden;" width="0" height="0"> 
  <filter id="duotone" color-interpolation-filters="sRGB">         <feColorMatrix type="matrix" values="0.7 0 0 0 0.3 0.6 0 0 0 0.2 0.3 0 0 0 0.6 0 0 0 1 0"></feColorMatrix> 
  </filter>
</svg>

<div class="flex-contatiner">
  <div class="calendar-container">
    <div class="image-container">
      <div class="image"></div>
    </div>
    <div class="calendar">
      <h2 class="month-title" id="js-month"></h2>
      <table class="calendar-table">
        <thead>
          <tr><th></th><th></th><th></th><th></th><th></th><th></th><th></th></tr>
        </thead>
        <tbody id="js-calendar-body"></tbody>
      </table>
    </div>
  </div>
</div>
@import url('https://fonts.googleapis.com/css?family=Josefin+Sans:600')
  
// -------- Mixins --------// 
size(w=100%,h=100%)
  width w
  height h
  
// -------- variables --------//    
$color-1 = rgb(254, 205, 211)
$color-2 = rgb(80, 50, 130)

// -------- Basic Styles --------// 
html
body
  size()

body
  background-image linear-gradient( 45deg, $color-1, $color-2)
  overflow hidden

*
  box-sizing border-box

.flex-contatiner
  size()
  display flex
  justify-content center
  align-items center
  overflow hidden

// -------- Styles --------//

.calendar-container
  position relative
  size(360px,360px)
  box-shadow  0 27px 24px 0 rgba(0, 0, 0, 0.2), 0 40px 77px 0 rgba(0, 0, 0, 0.22)
  overflow visible

.image-container
  position absolute
  top 0
  right 0
  bottom 0
  left 0
  background-color $color-2
  
.image
  size()
  background-image url('https://c1.staticflickr.com/4/3952/15549529232_83f16d2aa2_z.jpg')
  background-repeat no-repeat
  background-size cover
  background-position center center
  filter url(#duotone)

.calendar
  position absolute
  width 100%
  height 100%
  margin-top 10%
  margin-left 10%
  padding-top 15%
  border 10px solid #fff
  font-family 'Josefin Sans', sans-serif
  .month-title
    position absolute
    top -0.4em
    left -0.3em
    margin 0
    font-size 400px
    line-height 1
    letter-spacing 0
    color #fff
    opacity .15
  .calendar-table
    position absolute
    width 100%
    height 85%
    border-collapse collapse
    color #fff
    th, td
      text-align center
      font-size 16px
    td
      cursor pointer
      transition opacity .3s ease
      &:not(.is-today)
        opacity .5
      &:hover
        opacity 1
  .is-today
    opacity 1
    background-color #fff
    color $color-2
View Compiled
/* calendar built with the tutorial from https://liginc.co.jp/355474 */


var $window = $(window);
var $month = $('#js-month');
var $tbody = $('#js-calendar-body');

var today = new Date();
var currentYear = today.getFullYear(),
    currentMonth = today.getMonth();

$window.on('load',function(){
  calendarHeading(currentYear, currentMonth);
  calendarBody(currentYear, currentMonth, today);
});

function calendarBody(year, month, today){
  var todayYMFlag = today.getFullYear() === year && today.getMonth() === month ? true : false;
  var startDate = new Date(year, month, 1);
  var endDate  = new Date(year, month + 1 , 0);
  var startDay = startDate.getDay();
  var endDay = endDate.getDate();
  var textSkip = true;
  var textDate = 1;
  var tableTd ='';
  var tableBody ='';
  
  for (var row = 0; row < 6; row++){
    var tr = '<tr>';
    
    for (var col = 0; col < 7; col++) {
      if (row === 0 && startDay === col){
        textSkip = false;
      }
      if (textDate > endDay) {
        textSkip = true;
      }
      var addClass = todayYMFlag && textDate === today.getDate() && !textSkip ? 'is-today' : '';
      var textTd = textSkip ? '&nbsp;' : textDate++;
      var td = '<td class="'+addClass+'">'+textTd+'</td>';
      tr += td;
    }
    tr += '</tr>';
    tableBody += tr;
  }
  $tbody.html(tableBody);
}

function calendarHeading(year, month){
  $month.text(month + 1);
}

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js