当前位置:首页 > 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动态生成日历,并根据条件(如事件、状态)为日期格子添加颜色类。

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类,例如:

.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的简单示例:

js实现日历颜色

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

vue VUE实现日历组件功能

vue VUE实现日历组件功能

Vue 日历组件实现方法 基础日历结构 使用Vue的模板语法构建日历的HTML结构,通常包含头部(年月显示、切换按钮)和日历表格(星期标题和日期格子)。 <template> <…

js 实现日历

js 实现日历

实现日历的基本思路 日历的核心功能是展示日期,并允许用户进行日期选择或导航。JavaScript 可以动态生成日历的 HTML 结构,并处理用户交互逻辑。 基础日历结构 日历通常包含头部(显示月份和…

vue实现每日签到日历

vue实现每日签到日历

实现每日签到日历的基本思路 使用Vue实现每日签到日历需要结合日期处理和组件化设计。核心功能包括生成当月日历数据、标记签到状态以及交互逻辑。 日历数据生成 通过JavaScript的Date对象处理…

vue实现值班日历

vue实现值班日历

Vue 实现值班日历的方法 使用 FullCalendar 插件 FullCalendar 是一个功能强大的日历插件,支持 Vue 集成。安装依赖: npm install @fullcal…

vue实现背景颜色改变

vue实现背景颜色改变

Vue实现背景颜色改变的几种方法 在Vue中改变背景颜色可以通过多种方式实现,以下是常见的几种方法: 使用内联样式绑定 通过v-bind:style或简写:style直接绑定样式对象,动态改变背景颜…