css中制作日历
使用HTML和CSS制作日历
日历通常由表格结构构成,通过CSS样式调整布局和外观。
HTML结构示例:
<div class="calendar">
<div class="header">
<span class="month-year">June 2023</span>
</div>
<div class="days">
<span class="day-name">Sun</span>
<span class="day-name">Mon</span>
<span class="day-name">Tue</span>
<span class="day-name">Wed</span>
<span class="day-name">Thu</span>
<span class="day-name">Fri</span>
<span class="day-name">Sat</span>
<!-- 日期单元格 -->
<span class="day">28</span>
<span class="day">29</span>
<span class="day">30</span>
<!-- 更多日期... -->
</div>
</div>
基础日历样式
CSS样式设置:

.calendar {
width: 300px;
border: 1px solid #ddd;
border-radius: 8px;
overflow: hidden;
font-family: Arial, sans-serif;
}
.header {
background-color: #4285f4;
color: white;
padding: 10px;
text-align: center;
}
.month-year {
font-size: 18px;
font-weight: bold;
}
.days {
display: grid;
grid-template-columns: repeat(7, 1fr);
gap: 5px;
padding: 10px;
}
.day-name {
text-align: center;
font-weight: bold;
padding: 5px;
}
.day {
text-align: center;
padding: 8px;
cursor: pointer;
}
.day:hover {
background-color: #eee;
}
.day.today {
background-color: #4285f4;
color: white;
border-radius: 50%;
}
.day.other-month {
color: #aaa;
}
高级日历样式技巧
添加阴影和过渡效果增强视觉体验:
.calendar {
box-shadow: 0 4px 8px rgba(0,0,0,0.1);
transition: all 0.3s ease;
}
.calendar:hover {
box-shadow: 0 6px 12px rgba(0,0,0,0.15);
}
实现响应式布局:

@media (max-width: 400px) {
.calendar {
width: 100%;
}
.day {
padding: 5px;
}
}
使用CSS Grid布局
更灵活的日历布局方案:
.days {
display: grid;
grid-template-columns: repeat(7, minmax(30px, 1fr));
grid-auto-rows: minmax(30px, auto);
gap: 4px;
}
.day {
display: flex;
align-items: center;
justify-content: center;
aspect-ratio: 1;
}
添加动画效果
为日期切换添加平滑过渡:
.calendar {
perspective: 1000px;
}
.month-year {
transition: transform 0.5s;
}
.calendar:hover .month-year {
transform: rotateX(360deg);
}
暗黑模式支持
通过CSS变量实现主题切换:
.calendar {
--bg-color: #fff;
--text-color: #333;
--primary-color: #4285f4;
background-color: var(--bg-color);
color: var(--text-color);
}
.calendar.dark {
--bg-color: #2d3748;
--text-color: #f7fafc;
--primary-color: #667eea;
}
这些方法提供了从基础到高级的日历实现方案,可根据具体需求进行调整和扩展。






