Progress bar of today between dates (alternate version)

Set start date and end date, and the JS and CSS does the rest.

by Jon Fuller

HTML

<div id="date_progress_wrapper">
	<span id="date_progress_percent"></span>
	<div id="date_label" for="date_progress">Nov 1, 2022</div>
	<div id="date_progress_bar">
		<div id="date_progress_bar_inner"></div>
	</div>
</div>

CSS

body {
	background: tan;
	padding: 5%;
	font-family: sans-serif;
}

#date_progress_wrapper {
	position: relative;
	max-width: 700px;
	margin: 0 auto;
}

#date_progress_bar {
	width: 100%;
	height: 28px;
	position: relative;
}

#date_progress_bar {
	background-color: rgba(255, 255, 255, 0.5);
	border-radius: 14px;
	border: 2px solid white;
	overflow: hidden;
	padding: 3px;
	background-position: inherit;
	box-sizing: border-box;
}

#date_progress_bar_inner {
	width: auto;
	height: 100%;
	border-radius: 14px;
	background-image: repeating-linear-gradient(to right, rgb(254, 161, 0) 0%, rgb(126, 59, 255) 50%, rgb(254, 161, 0) 100%);
	background-size: 200% auto;
	background-position: inherit;
	animation: date-gradient 4s infinite linear;
}

@keyframes date-gradient { 
	0%   { background-position: 0 0; }
	100% { background-position: -200% 0; }
}

#date_progress_wrapper #date_label {
	position: absolute;
	bottom: 0;
	right: 10px;
	text-align: right;
	z-index: 1;
	color: white;
	height: 28px;
	line-height: 28px;
	white-space: nowrap;
	box-sizing: border-box;
	text-shadow: 0 1px 3px rgba(0, 0, 0, 0.5), 0 1px 20px rgba(0, 0, 0, 0.8);

	font-size: 13px;
}

#date_progress_wrapper #date_progress_percent {
	display: block;
	text-align: right;
	padding-bottom: 5px;
}

#date_progress_wrapper #date_progress_percent[data-value]::after {
	content: attr(data-value) '%';
	font-size: 13px;
	text-align: right;
	color: white;
}

JavaScript

var start = new Date(2022, 3, 1), // YYYY, M, D
	end = new Date(2022, 12, 8), // YYYY, M, D
	today = new Date(), // today
	percent = Math.floor(((today - start) / (end - start)) * 100); // percent of today so far between the dates	

// Update the progress bar
$('#date_progress_bar_inner').css('width', percent + '%');
$('#date_label').attr('data-value', percent);
$('#date_progress_percent').attr('data-value', percent);
$('#date_progress_percent').css('width', percent + '%');