Simple header grayout will occur for one day.
Example:
<style>
td[date="12/25/2019"]
{
background-color:#CCCCCC;
}
</style>
https://i.sstatic.net/3v2fY.png
If you wish to gray out the ENTIRE grid cell, it becomes more intricate. You would need to incorporate custom logic for calendar rendering to assess the month and dynamically apply or remove CSS.
<style>
td[date="12/25/2019"] {
background-color: #CCCCCC;
}
</style>
<script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script type="text/javascript">
ExecuteOrDelayUntilScriptLoaded(CustomizeCalendarEvents, "SP.UI.ApplicationPages.Calendar.js");
function CustomizeCalendarEvents() {
//Month Calendar View
SP.UI.ApplicationPages.SummaryCalendarView.prototype.renderGrids_Old =
SP.UI.ApplicationPages.SummaryCalendarView.prototype.renderGrids;
SP.UI.ApplicationPages.SummaryCalendarView.prototype.renderGrids =
function SP_UI_ApplicationPages_SummaryCalendarView$renderGrids($p0) {
this.renderGrids_Old($p0);
//alert(document.getElementById("WPQ2_nav_header").innerText);
if (document.getElementById("WPQ2_nav_header").innerText == "December 2019") {
var css = 'table.ms-acal-month tr:nth-child(9) td:nth-child(4){background-color: #CCCCCC;}',
head = document.head || document.getElementsByTagName('head')[0],
style = document.createElement('style');
head.appendChild(style);
style.type = 'text/css';
style.title = 'MSCustom';
if (style.styleSheet) {
// This is required for IE8 and below.
style.styleSheet.cssText = css;
} else {
style.appendChild(document.createTextNode(css));
}
} else {
$('style[title="MSCustom"]').remove();
}
};
}
</script>
https://i.sstatic.net/zN9Ra.png