当前位置:首页 > CSS

css制作日历

2026-02-12 12:40:38CSS

使用CSS Grid布局制作日历

日历的布局适合使用CSS Grid实现,可以轻松定义行和列的结构。以下是一个基础的日历HTML结构和CSS样式:

<div class="calendar">
  <div class="header">周日</div>
  <div class="header">周一</div>
  <!-- 其他星期标题 -->
  <div class="day">1</div>
  <div class="day">2</div>
  <!-- 其他日期格子 -->
</div>
.calendar {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 5px;
  max-width: 500px;
}

.header {
  background: #f0f0f0;
  text-align: center;
  padding: 10px;
}

.day {
  border: 1px solid #ddd;
  height: 50px;
  display: flex;
  align-items: center;
  justify-content: center;
}

添加月份标题和样式美化

为日历添加月份标题和更好的视觉效果:

.month-title {
  grid-column: span 7;
  text-align: center;
  font-size: 1.5em;
  padding: 10px;
}

.day:hover {
  background-color: #e6f7ff;
  cursor: pointer;
}

.other-month {
  color: #aaa;
  background-color: #f9f9f9;
}

实现响应式日历

使用媒体查询让日历在不同屏幕尺寸下表现良好:

@media (max-width: 600px) {
  .calendar {
    grid-template-columns: repeat(7, 30px);
    font-size: 0.8em;
  }

  .day {
    height: 30px;
  }
}

添加JavaScript动态生成日期

结合JavaScript动态生成日历日期会更实用:

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

  // 生成日期格子
  let html = '';

  // 添加空白格子
  for (let i = 0; i < firstDay; i++) {
    html += `<div class="day other-month"></div>`;
  }

  // 添加当月日期
  for (let i = 1; i <= daysInMonth; i++) {
    html += `<div class="day">${i}</div>`;
  }

  document.querySelector('.calendar').innerHTML += html;
}

完整日历组件示例

结合HTML、CSS和JavaScript的完整日历组件:

<div class="calendar-container">
  <div class="month-title">2023年10月</div>
  <div class="weekdays">
    <div>日</div>
    <div>一</div>
    <div>二</div>
    <div>三</div>
    <div>四</div>
    <div>五</div>
    <div>六</div>
  </div>
  <div class="days"></div>
</div>
.calendar-container {
  font-family: Arial, sans-serif;
  max-width: 600px;
  margin: 0 auto;
}

.month-title {
  text-align: center;
  font-size: 1.5em;
  padding: 15px;
  background: #4285f4;
  color: white;
}

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

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

.days div {
  height: 50px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 3px;
  border: 1px solid #eee;
}

.days div.today {
  background: #ffeb3b;
  font-weight: bold;
}

.days div:hover {
  background: #e3f2fd;
}
function renderCalendar() {
  const date = new Date();
  const year = date.getFullYear();
  const month = date.getMonth();

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

  let daysHTML = '';

  // 空白格子
  for (let i = 0; i < firstDay; i++) {
    daysHTML += `<div></div>`;
  }

  // 日期格子
  for (let i = 1; i <= daysInMonth; i++) {
    const isToday = i === date.getDate() && month === new Date().getMonth();
    daysHTML += `<div class="${isToday ? 'today' : ''}">${i}</div>`;
  }

  document.querySelector('.days').innerHTML = daysHTML;
  document.querySelector('.month-title').textContent = 
    `${year}年${month + 1}月`;
}

renderCalendar();

css制作日历

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

相关文章

vue怎么实现日历

vue怎么实现日历

实现日历组件的基本方法 使用Vue实现日历组件可以通过以下步骤完成。这里提供一个基础的实现思路,结合Vue 3的Composition API和模板语法。 安装依赖(如需要) npm instal…

css制作按钮

css制作按钮

基础按钮样式 创建一个基础的CSS按钮样式,可以通过以下代码实现。这个例子包含了按钮的基本属性,如背景色、边框、内边距和文字样式。 .button { background-color: #4…

用css制作网页

用css制作网页

创建HTML文件结构 新建一个index.html文件,写入基础HTML5结构。通过<link>标签引入外部CSS文件,示例结构如下: <!DOCTYPE html> &l…

css表单制作

css表单制作

基础表单结构 使用HTML创建表单的基本结构,包含<form>标签及输入字段。表单通常需要action(提交地址)和method(提交方法)属性。 <form action="/…

css网页制作教程下载

css网页制作教程下载

CSS网页制作教程下载资源推荐 免费在线教程平台 W3Schools(www.w3schools.com/css/)提供交互式CSS教程,涵盖基础到高级内容,支持在线练习。 MDN Web Docs(…

css制作扇形

css制作扇形

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