当前位置:首页 > CSS

制作日历css

2026-01-28 06:05:50CSS

基础日历结构

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

<div class="calendar">
  <div class="header">
    <button class="prev">←</button>
    <h2 class="month-year">January 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;
  font-family: Arial, sans-serif;
  box-shadow: 0 2px 10px rgba(0,0,0,0.1);
}

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

.header button {
  background: none;
  border: none;
  color: white;
  font-size: 16px;
  cursor: pointer;
}

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

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

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

.days div:hover {
  background-color: #e0e0e0;
}

动态日期填充

使用JavaScript动态填充日期格子,确保正确显示当前月份的日期分布:

const monthYear = document.querySelector('.month-year');
const daysContainer = document.querySelector('.days');
let currentDate = new Date();

function renderCalendar() {
  const year = currentDate.getFullYear();
  const month = currentDate.getMonth();

  monthYear.textContent = 
    new Date(year, month).toLocaleString('default', { month: 'long', year: 'numeric' });

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

  daysContainer.innerHTML = '';

  for (let i = 0; i < firstDay; i++) {
    daysContainer.innerHTML += '<div></div>';
  }

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

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

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

renderCalendar();

高亮当前日期

在CSS中添加样式以突出显示当前日期:

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

在JavaScript中更新renderCalendar函数以标记当前日期:

// 在renderCalendar函数内部添加:
const today = new Date();
if (month === today.getMonth() && year === today.getFullYear()) {
  const dayElements = document.querySelectorAll('.days div');
  dayElements.forEach(day => {
    if (parseInt(day.textContent) === today.getDate()) {
      day.classList.add('current-day');
    }
  });
}

响应式设计

添加媒体查询使日历在不同屏幕尺寸下都能正常显示:

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

  .days div {
    height: 40px;
  }
}

动画效果

为月份切换添加平滑的过渡动画:

制作日历css

.month-year {
  transition: transform 0.3s ease;
}

.header button:active + .month-year {
  transform: scale(1.1);
}

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

相关文章

css 制作字体

css 制作字体

使用CSS自定义字体 在CSS中,可以通过@font-face规则引入自定义字体,并使用font-family属性应用这些字体。 @font-face { font-family: 'MyCus…

css制作三行三列表格

css制作三行三列表格

使用HTML和CSS创建三行三列表格 通过HTML的<table>标签结合CSS样式可以轻松实现三行三列的表格结构。 <table class="three-by-three"&g…

vue实现日历

vue实现日历

Vue 实现日历组件 使用 Vue 实现日历组件可以通过自定义开发或借助第三方库完成。以下是两种常见方法: 方法一:自定义日历组件 创建基础日历结构,利用 Vue 的响应式特性动态渲染日期。核心逻…

css制作时钟

css制作时钟

CSS 制作时钟的方法 使用纯CSS和少量JavaScript可以创建一个动态的时钟。以下是实现步骤: HTML结构 <div class="clock"> <div cla…

vue怎么实现日历

vue怎么实现日历

实现基础日历布局 使用Vue的模板语法构建日历的HTML结构,通常采用表格形式展示日期。月份切换通过计算属性动态生成日期数组。 <template> <div class=…

css样式制作

css样式制作

CSS样式制作基础 CSS(层叠样式表)用于控制网页的视觉呈现。通过CSS可以定义字体、颜色、布局等样式。 选择器与属性 /* 标签选择器 */ p { color: blue; font…