<main >
<div class="calendar">
<div class="month-indicator">
<time datetime="2019-02"> February 2019 </time>
</div>
<div class="day-of-week">
<div>Su</div>
<div>Mo</div>
<div>Tu</div>
<div>We</div>
<div>Th</div>
<div>Fr</div>
<div>Sa</div>
</div>
<div class="date-grid">
<button>
<time datetime="2019-02-01">1</time>
</button>
<button>
<time datetime="2019-02-02">2</time>
</button>
<button>
<time datetime="2019-02-03">3</time>
</button>
<button>
<time datetime="2019-02-04">4</time>
</button>
<button>
<time datetime="2019-02-05">5</time>
</button>
<button>
<time datetime="2019-02-06">6</time>
</button>
<button>
<time datetime="2019-02-07">7</time>
</button>
<button>
<time datetime="2019-02-08">8</time>
</button>
<button>
<time datetime="2019-02-09">9</time>
</button>
<button>
<time datetime="2019-02-10">10</time>
</button>
<button>
<time datetime="2019-02-11">11</time>
</button>
<button>
<time datetime="2019-02-12">12</time>
</button>
<button>
<time datetime="2019-02-13">13</time>
</button>
<button>
<time datetime="2019-02-14">14</time>
</button>
<button>
<time datetime="2019-02-15">15</time>
</button>
<button>
<time datetime="2019-02-16">16</time>
</button>
<button>
<time datetime="2019-02-17">17</time>
</button>
<button>
<time datetime="2019-02-18">18</time>
</button>
<button>
<time datetime="2019-02-19">19</time>
</button>
<button>
<time datetime="2019-02-20">20</time>
</button>
<button>
<time datetime="2019-02-21">21</time>
</button>
<button>
<time datetime="2019-02-22">22</time>
</button>
<button>
<time datetime="2019-02-23">23</time>
</button>
<button>
<time datetime="2019-02-24">24</time>
</button>
<button>
<time datetime="2019-02-25">25</time>
</button>
<button>
<time datetime="2019-02-26">26</time>
</button>
<button>
<time datetime="2019-02-27">27</time>
</button>
<button>
<time datetime="2019-02-28">28</time>
</button>
</div>
</div>
</main>
// Colors used
:root {
--teal-050: #effcf6;
--teal-100: #c6f7e2;
--teal-200: #8eedc7;
--teal-300: #65d6ad;
--teal-400: #3ebd93;
--teal-500: #27ab83;
--teal-600: #199473;
--teal-700: #147d64;
--teal-800: #0c6b58;
--teal-900: #014d40;
--blue-grey-050: #f0f4f8;
--blue-grey-100: #d9e2ec;
--blue-grey-200: #bcccdc;
--blue-grey-300: #9fb3c8;
--blue-grey-400: #829ab1;
--blue-grey-500: #627d98;
--blue-grey-600: #486581;
--blue-grey-700: #334e68;
--blue-grey-800: #243b53;
--blue-grey-900: #102a43;
}
html {
font-family: "Roboto", "Helvetica", "Arial", sans-serif;
font-size: 125%;
line-height: 1.4;
font-weight: 400;
color: var(--blue-grey-900);
}
body {
min-height: 100vh;
background: var(--blue-grey-100);
}
main {
max-width: max-content;
margin: 3em auto 0 auto;
padding: 1.5em;
background-color: #fff;
border: 2px solid var(--blue-grey-200);
border-radius: 8px;
}
// For the month
.month-indicator {
color: var(--blue-grey-700);
text-align: center;
font-weight: 500;
}
// Flexbox Grid
.day-of-week,
.date-grid {
display: flex;
max-width: calc(4.5ch * 7);
}
.day-of-week {
justify-content: space-between;
}
.day-of-week > * {
flex-basis: calc(4.5ch / 0.7);
}
.date-grid {
flex-wrap: wrap;
}
.date-grid button:first-child {
margin-left: calc(4.5ch * 5);
margin-inline-start: calc(4.5ch * 5);
}
// CSS grid used for the dates
@supports(display: gridx) {
.day-of-week,
.date-grid {
display: grid;
grid-template-columns: repeat(7, 1fr);
max-width: 100%;
}
// Positioning the first day
.date-grid button:first-child {
grid-column: 6;
margin-left: 0;
margin-inline-start: 0;
}
}
// Styles for the weekday/weekend header
.day-of-week {
margin-top: 1.25em;
}
.day-of-week > * {
font-size: 0.7em;
color: var(--blue-grey-400);
font-weight: 500;
letter-spacing: 0.1em;
font-variant: small-caps;
}
.day-of-week > * {
text-align: center;
}
/* Dates */
.date-grid {
margin-top: 0.5em;
}
// Style for each day
.date-grid button {
position: relative;
border: 0;
width: 4.5ch;
height: 4.5ch;
border-radius: 50%;
background-color: transparent;
color: var(--blue-grey-600);
}
.date-grid button:hover,
.date-grid button:focus {
outline: none;
background-color: var(--blue-grey-050);
color: var(--blue-grey-700);
}
.date-grid button:active,
.date-grid button.is-selected {
background-color: var(--teal-100);
color: var(--teal-900);
}
View Compiled
This Pen doesn't use any external JavaScript resources.