当前位置:首页 > CSS

css日历制作

2026-02-12 18:32:45CSS

基础日历结构

使用HTML创建日历的基本框架,通常包含表格式布局。以下是一个简单的日历HTML结构示例:

<div class="calendar">
  <div class="header">
    <button class="prev">←</button>
    <h2 class="month-year">June 2023</h2>
    <button class="next">→</button>
  </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"></div>
</div>

基础样式设计

为日历添加基础CSS样式,包括布局、颜色和字体:

css日历制作

.calendar {
  width: 300px;
  border: 1px solid #ddd;
  border-radius: 8px;
  overflow: hidden;
  font-family: Arial, sans-serif;
}

.header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 10px;
  background-color: #4285f4;
  color: white;
}

.weekdays {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  background-color: #f1f1f1;
  text-align: center;
  padding: 5px 0;
}

.days {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 2px;
  padding: 5px;
}

动态日期填充

使用JavaScript动态生成日期格子,并处理月份切换:

function renderCalendar(month, year) {
  const daysContainer = document.querySelector('.days');
  daysContainer.innerHTML = '';

  const firstDay = new Date(year, month, 1).getDay();
  const daysInMonth = new Date(year, month + 1, 0).getDate();

  // 填充空白格子
  for (let i = 0; i < firstDay; i++) {
    const emptyDay = document.createElement('div');
    emptyDay.classList.add('empty');
    daysContainer.appendChild(emptyDay);
  }

  // 填充日期格子
  for (let day = 1; day <= daysInMonth; day++) {
    const dayElement = document.createElement('div');
    dayElement.textContent = day;
    dayElement.classList.add('day');
    daysContainer.appendChild(dayElement);
  }
}

// 初始化日历
const currentDate = new Date();
renderCalendar(currentDate.getMonth(), currentDate.getFullYear());

交互样式增强

为日期格子添加悬停和选中效果:

css日历制作

.day {
  padding: 10px;
  text-align: center;
  cursor: pointer;
  transition: background-color 0.2s;
}

.day:hover {
  background-color: #e6e6e6;
}

.day.selected {
  background-color: #4285f4;
  color: white;
}

.empty {
  padding: 10px;
  visibility: hidden;
}

响应式设计

添加媒体查询使日历适应不同屏幕尺寸:

@media (max-width: 400px) {
  .calendar {
    width: 100%;
    border-radius: 0;
  }

  .day {
    padding: 8px 5px;
    font-size: 14px;
  }
}

完整实现示例

将所有代码组合在一起,并添加月份切换功能:

document.querySelector('.prev').addEventListener('click', () => {
  currentDate.setMonth(currentDate.getMonth() - 1);
  updateCalendar();
});

document.querySelector('.next').addEventListener('click', () => {
  currentDate.setMonth(currentDate.getMonth() + 1);
  updateCalendar();
});

function updateCalendar() {
  const monthNames = ["January", "February", "March", "April", "May", "June",
                      "July", "August", "September", "October", "November", "December"];
  document.querySelector('.month-year').textContent = 
    `${monthNames[currentDate.getMonth()]} ${currentDate.getFullYear()}`;

  renderCalendar(currentDate.getMonth(), currentDate.getFullYear());
}

这个实现创建了一个功能完整的CSS日历,包含月份导航、日期选择和响应式设计。可以根据需要进一步自定义样式和功能。

标签: 日历css
分享给朋友:

相关文章

css导航栏制作

css导航栏制作

CSS导航栏制作方法 水平导航栏 使用display: inline-block或flexbox布局创建水平导航栏。设置背景色、间距和悬停效果增强视觉体验。 <nav class="horiz…

使用css制作同心圆

使用css制作同心圆

使用 CSS 制作同心圆 同心圆可以通过嵌套多个圆形元素并利用 CSS 的定位和样式属性实现。以下是几种常见方法: 方法一:使用绝对定位和多个 div 通过嵌套多个 div 元素,设置相同的圆心位置…

css制作教程

css制作教程

CSS基础入门 CSS(层叠样式表)用于控制网页的视觉表现,包括布局、颜色、字体等。以下是一个系统化的学习路径: 选择器与基本语法 CSS规则由选择器和声明块组成: 选择器 { 属性: 值;…

css制作圆形

css制作圆形

使用 border-radius 属性 通过设置 border-radius 为 50%,可以将元素变为圆形。此方法适用于正方形元素,确保宽度和高度相等。 .circle { width: 10…

vue实现日历插件

vue实现日历插件

Vue 日历插件实现方案 使用现成组件库 推荐直接使用成熟的 Vue 日历组件,如: V-Calendar:专为 Vue 设计的轻量级日历组件 FullCalendar:功能强大的日历库,有 Vue…

css制作下拉导航条

css制作下拉导航条

使用HTML和CSS创建基础下拉导航条 HTML结构需包含导航项和下拉内容容器: <nav class="navbar"> <ul> <li><…