当前位置:首页 > 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样式,包括布局、颜色和字体:

.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());

交互样式增强

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

.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表格制作

CSS 表格制作基础 使用 CSS 可以创建美观且响应式的表格。以下是一些基本方法: table 元素用于定义表格,tr 定义行,td 定义单元格,th 定义表头单元格。 <table>…

css制作表格

css制作表格

使用HTML和CSS创建表格 HTML中的<table>元素用于创建表格,结合CSS可以调整样式。以下是一个基础示例: <table> <tr> &…

css div 制作导航菜单

css div 制作导航菜单

基本导航菜单结构 使用HTML创建一个简单的导航菜单结构,通常使用<ul>和li>列表实现。每个菜单项用<a>标签包裹以实现链接功能。 <div class="n…

css 制作三角形

css 制作三角形

使用 CSS 制作三角形的方法 边框法(Border Method) 通过设置元素的宽高为0,并利用边框的透明属性来创建三角形。这是最常见且兼容性最好的方法。 向上三角形 .triangle-…

css制作圆形

css制作圆形

使用 border-radius 属性 通过设置 border-radius 为 50%,可以将元素变为圆形。元素的宽度和高度需相同,否则会呈现椭圆形。 .circle { width:…

css制作扇形

css制作扇形

使用 CSS 制作扇形 方法一:利用 border-radius 和 transform 通过设置 border-radius 和 transform 属性,可以创建一个扇形。以下是一个示例代码:…