-for(var j = 0; j < 6; j++)
	.column
		-for(var i = 0; i < (j === 0 ? 3 : (10 - !(j % 2) * 4)); i++)
			.num=i
	-if(j % 2 === 1 && j < 5)
		.colon
View Compiled
@import url('https://fonts.googleapis.com/css?family=Roboto+Condensed:300');

$size: 86px;

body {
	text-align: center;
	background-color: hsl(210, 30%, 8%);
	color: hsla(210, 20%, 90%, 0.89);
	font-family: 'Roboto Condensed', sans-serif;
	font-weight: 300;
	overflow: hidden;
}

.column,
.colon {
	display: inline-block;
	vertical-align: top;
	font-size: $size;
	line-height: $size;
}

.column {
	transition: transform 300ms;
}

.colon {
	transition: transform 300ms;
	transform: translateY(calc(50vh - #{$size / 2}));
	
	&:after {
		content: ':';
	}
}

.num {
	transition: opacity 500ms, text-shadow 100ms;
		opacity: 0.025;
	
	&.visible {
		opacity: 1.0;
		text-shadow: 1px 1px 0px hsl(210, 50%, 40%);
	}
	&.close {
		opacity: 0.35;
	}
	&.far {
		opacity: 0.15;
	}
	&.distant {
		opacity: 0.1;
	}
}
View Compiled
let size = 86;
let columns = Array.from(document.getElementsByClassName('column'));
let d, c;
let classList = [ 'visible', 'close', 'far', 'far', 'distant', 'distant' ];
let use24HourClock = true;

function padClock(p, n) {
	return p + ('0' + n).slice(-2);
}

function getClock() {
	d = new Date();
	return [
			use24HourClock ? d.getHours() : (d.getHours() % 12 || 12),
			d.getMinutes(),
			d.getSeconds()
		]
		.reduce(padClock, '');
}

function getClass(n, i2) {
	return classList.find((class_, classIndex) => Math.abs(n - i2) === classIndex) || '';
}

let loop = setInterval(() => {
	c = getClock();

	columns.forEach((ele, i) => {
		let n = +c[i];
		let offset = -n * size;
		ele.style.transform = `translateY(calc(50vh + ${offset}px - ${size / 2}px))`;
		Array.from(ele.children).forEach((ele2, i2) => {
			ele2.className = 'num ' + getClass(n, i2);
		});
	});
}, 200 + Math.E * 10);
View Compiled

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.