当前位置:首页 > CSS

css日历制作教程

2026-04-02 06:00:27CSS

基础日历结构

使用HTML创建一个简单的日历框架,包含星期标题和日期格子。以下是一个基础的HTML结构示例:

<div class="calendar">
  <div class="header">
    <span class="month">January 2023</span>
  </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 class="empty"></div>
    <div>1</div>
    <div>2</div>
    <!-- 更多日期... -->
  </div>
</div>

日历样式设计

通过CSS为日历添加基本样式,包括容器、星期栏和日期的布局与颜色:

css日历制作教程

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

.header {
  background: #4285f4;
  color: white;
  padding: 10px;
  text-align: center;
}

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

.weekdays div {
  text-align: center;
}

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

.days div {
  height: 30px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.days div:hover {
  background: #e9e9e9;
  cursor: pointer;
}

.empty {
  background: transparent;
}

动态日期生成

结合JavaScript动态生成日历日期,自动计算当月天数及起始星期:

css日历制作教程

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

  let html = '';
  for (let i = 0; i < firstDay; i++) {
    html += '<div class="empty"></div>';
  }

  for (let i = 1; i <= daysInMonth; i++) {
    html += `<div>${i}</div>`;
  }

  document.querySelector('.days').innerHTML = html;
}

// 调用示例:生成2023年1月日历
generateCalendar(2023, 0);

响应式布局优化

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

@media (max-width: 600px) {
  .calendar {
    width: 100%;
  }

  .days div {
    height: 25px;
    font-size: 14px;
  }
}

高级交互效果

添加当前日期高亮和事件标记功能:

.current-day {
  background: #4285f4;
  color: white;
  border-radius: 50%;
}

.has-event {
  position: relative;
}

.has-event::after {
  content: '';
  position: absolute;
  bottom: 2px;
  left: 50%;
  transform: translateX(-50%);
  width: 4px;
  height: 4px;
  background: red;
  border-radius: 50%;
}
// 在generateCalendar函数中添加:
const today = new Date();
if (year === today.getFullYear() && month === today.getMonth()) {
  const dayElement = document.querySelector(`.days div:nth-child(${firstDay + today.getDate()})`);
  dayElement.classList.add('current-day');
}

分享给朋友:

相关文章

css地图制作教程

css地图制作教程

CSS地图制作方法 使用CSS制作地图通常涉及利用HTML元素和CSS样式来绘制地理图形或交互式元素。以下是几种常见方法: 基础形状绘制 通过CSS的border、box-shadow和transf…

vue表格实现日历

vue表格实现日历

Vue 表格实现日历的方法 基础表格结构 使用 el-table 或原生 HTML 表格,通过 v-for 循环生成日历格子。月份天数通过 new Date() 计算,动态渲染表格内容。 &…

制作日历css

制作日历css

基础日历结构 使用HTML创建日历的基本框架,包含月份、星期和日期格子。以下是一个简单的HTML结构示例: <div class="calendar"> <div class=…

css标志制作教程

css标志制作教程

CSS标志制作教程 基础形状绘制 使用CSS的border、width、height等属性可以创建基本形状。例如,圆形可以通过border-radius: 50%实现: .circle { wi…

php实现日历周末变红

php实现日历周末变红

实现日历周末变红的方法 使用PHP实现日历中周末日期显示为红色,可以通过判断日期是否为周六或周日,然后应用CSS样式来实现。以下是具体步骤: 获取当前月份的天数和第一天是星期几 $year = d…

php 实现日历

php 实现日历

使用 PHP 实现日历 基础日历实现 PHP 可以通过日期函数和循环结构实现一个简单的日历。以下是一个基础示例: <?php function generateCalendar($year,…