当前位置:首页 > JavaScript

js实现日历颜色

2026-03-16 01:28:53JavaScript

实现日历颜色标记的方法

使用HTML和CSS基础结构

创建一个基础的日历HTML结构,通常使用表格(<table>)来布局日历的日期格子。每个日期格子(<td>)可以添加自定义的类或数据属性来标记颜色。

<table id="calendar">
  <thead>
    <tr><th>Sun</th><th>Mon</th><th>Tue</th><th>Wed</th><th>Thu</th><th>Fri</th><th>Sat</th></tr>
  </thead>
  <tbody>
    <tr>
      <td data-date="2023-10-01">1</td>
      <td data-date="2023-10-02">2</td>
      <!-- 其他日期格子 -->
    </tr>
  </tbody>
</table>

动态生成日历并标记颜色

通过JavaScript动态生成日历,并根据条件(如事件、状态)为日期格子添加颜色类。

js实现日历颜色

function generateCalendar(year, month) {
  const daysInMonth = new Date(year, month + 1, 0).getDate();
  const firstDay = new Date(year, month, 1).getDay();
  const calendarBody = document.querySelector('#calendar tbody');
  calendarBody.innerHTML = '';

  let date = 1;
  for (let i = 0; i < 6; i++) {
    const row = document.createElement('tr');
    for (let j = 0; j < 7; j++) {
      if (i === 0 && j < firstDay) {
        row.appendChild(document.createElement('td'));
      } else if (date > daysInMonth) {
        break;
      } else {
        const cell = document.createElement('td');
        cell.textContent = date;
        cell.setAttribute('data-date', `${year}-${month + 1}-${date}`);

        // 标记颜色示例:偶数日为红色,奇数日为蓝色
        if (date % 2 === 0) {
          cell.classList.add('red-day');
        } else {
          cell.classList.add('blue-day');
        }

        row.appendChild(cell);
        date++;
      }
    }
    calendarBody.appendChild(row);
  }
}
generateCalendar(2023, 9); // 生成2023年10月的日历

通过CSS定义颜色样式

为不同的颜色标记定义CSS类,例如:

js实现日历颜色

.red-day {
  background-color: #ffcccc;
  color: #ff0000;
}

.blue-day {
  background-color: #ccccff;
  color: #0000ff;
}

.event-day {
  background-color: #ccffcc;
  border: 2px solid #00aa00;
}

根据事件数据动态标记颜色

从后端或本地数据获取事件信息,动态为日期格子添加颜色标记。

const events = {
  '2023-10-05': { color: 'event-day', title: 'Meeting' },
  '2023-10-12': { color: 'event-day', title: 'Birthday' }
};

function markEventDays() {
  document.querySelectorAll('#calendar td[data-date]').forEach(cell => {
    const date = cell.getAttribute('data-date');
    if (events[date]) {
      cell.classList.add(events[date].color);
      cell.setAttribute('title', events[date].title);
    }
  });
}
markEventDays();

使用第三方库简化实现

如果需要更复杂的日历功能,可以使用第三方库如FullCalendar、Day.js等。以下是FullCalendar的简单示例:

document.addEventListener('DOMContentLoaded', function() {
  const calendarEl = document.getElementById('calendar');
  const calendar = new FullCalendar.Calendar(calendarEl, {
    initialView: 'dayGridMonth',
    events: [
      { title: 'Event 1', start: '2023-10-05', color: '#ff0000' },
      { title: 'Event 2', start: '2023-10-12', color: '#00aa00' }
    ]
  });
  calendar.render();
});

标签: 日历颜色
分享给朋友:

相关文章

vue怎么实现颜色切换

vue怎么实现颜色切换

实现颜色切换的方法 在Vue中实现颜色切换可以通过多种方式完成,以下是一些常见的方法: 动态绑定class或style 通过动态绑定class或style属性,可以根据条件切换不同的颜色样式。例如:…

react如何实现点击切换颜色

react如何实现点击切换颜色

实现点击切换颜色的方法 在React中实现点击切换颜色可以通过状态管理来控制元素的样式。以下是几种常见的方法: 使用useState管理颜色状态 通过React的useState钩子来管理当前颜色…

react实现携程日历

react实现携程日历

实现携程日历的React组件 创建一个类似携程的日历组件需要处理日期选择、区间高亮、禁用日期等逻辑。以下是关键实现步骤: 日期选择与区间高亮 使用date-fns库处理日期操作,实现开始/结束日期选…

react实现日历

react实现日历

使用 React 实现日历 日历组件在 Web 应用中常用于日期选择、事件展示等场景。以下是几种实现日历的常见方法: 使用第三方库(如 react-calendar) 安装 react-calend…

css日历制作

css日历制作

CSS日历制作方法 使用HTML和CSS创建一个简单的日历布局,可以通过以下方式实现: HTML结构 <div class="calendar"> <div class="m…

php 实现日历

php 实现日历

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