Calendar
Home
Snippets
Calendar
HTML
CSS
JS
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css" /> <div class="calendar"> <div class="header"> <div id="prev" class="btn"><i class="fa-solid fa-arrow-left"></i></div> <div id="month-year"></div> <div id="next" class="btn"><i class="fa-solid fa-arrow-right"></i></div> </div> <div class="weekdays"> <div>Sun</div> <div>Mon</div> <div>Tue</div> <div>Wed</div> <div>Thu</div> <div>Fri</div> <div>Sat</div> </div> <div class="days" id="days"></div> </div>
body { font-family: Arial, sans-serif; display: grid; place-items: center; height: 100vh; margin: 0; background-color: #333333; } .calendar { background-color: #111111; border-radius: 10px; box-shadow: 0 0 30px #222222; overflow: hidden; width: 300px; color: white; padding: 20px; } .header { display: flex; justify-content: space-between; align-items: center; padding: 10px; } .btn { cursor: pointer; } #month-year { font-weight: bold; font-size: 20px; } .weekdays, .days { display: flex; flex-wrap: wrap; } .days { height: 210px; } .weekdays div, .days div { width: 14.28%; text-align: center; padding: 10px 0; border-radius: 5px; } .days div { cursor: pointer; transition: background-color 0.3s; } .days div:hover { background-color: white; color: orangered; } .days .today { background-color: orangered; color: white; } .days .fade { color: #555; }
document.addEventListener('DOMContentLoaded', function () { const monthYear = document.getElementById('month-year'); const daysContainer = document.getElementById('days'); const prevButton = document.getElementById('prev'); const nextButton = document.getElementById('next'); const months = [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ]; let currentDate = new Date(); let today = new Date(); function renderCalendar(date) { const year = date.getFullYear(); const month = date.getMonth(); const firstDay = new Date(year, month, 1).getDay(); const lastDay = new Date(year, month + 1, 0).getDate(); monthYear.textContent = `${months[month]} ${year}`; daysContainer.innerHTML = ''; // Previous month's dates const prevMonthLastDay = new Date(year, month, 0).getDate(); for (let i = firstDay; i > 0; i--) { const dayDiv = document.createElement('div'); dayDiv.textContent = prevMonthLastDay - i + 1; dayDiv.classList.add('fade'); daysContainer.appendChild(dayDiv); } // Current month's dates for (let i = 1; i <= lastDay; i++) { const dayDiv = document.createElement('div'); dayDiv.textContent = i; if (i === today.getDate() && month === today.getMonth() && year === today.getFullYear()) { dayDiv.classList.add('today'); } daysContainer.appendChild(dayDiv); } // Next month's dates const nextMonthStartDay = 7 - new Date(year, month + 1, 0).getDay() - 1; for (let i = 1; i <= nextMonthStartDay; i++) { const dayDiv = document.createElement('div'); dayDiv.textContent = i; dayDiv.classList.add('fade'); daysContainer.appendChild(dayDiv); } } prevButton.addEventListener('click', function () { currentDate.setMonth(currentDate.getMonth() - 1); renderCalendar(currentDate); }); nextButton.addEventListener('click', function () { currentDate.setMonth(currentDate.getMonth() + 1); renderCalendar(currentDate); }); renderCalendar(currentDate); });
Ad #1
Ad #2
Scroll to Top