FullCalendar 周视图中高亮指定日期与时间范围的完整实现指南-html教程

本文详解如何在 fullcalendar 的周视图(agendaweek)中精准高亮包含具体时间的日期范围,通过 `dayrender` 回调结合 moment.js 的 `isbetween` 方法实现动态样式控制,并规避 dom 直接操作的兼容性风险。

在 FullCalendar 中,月视图(month view)可通过 jQuery 选择器直接定位 .fc-day 元素并设置背景色,但该方式在周视图(如 agendaWeek 或 timeGridWeek)中不可靠——因为周视图的单元格结构更复杂(含多行时间槽),且日期容器类名和 DOM 层级随版本变化较大(v5+ 已移除 fullCalendar 方法,改用 @fullcalendar/core)。因此,推荐使用官方支持的生命周期回调函数进行语义化渲染控制。

核心方案是利用 dayRender 回调(v4 及更早)或 dayCellDidMount(v5+),它会在每个日期单元格渲染完成时触发,并传入标准化的日期对象与 DOM 节点。以下以兼容性更广的 v4 版本为例(适用于 jQuery + FullCalendar v3/v4):

$('#calendar').fullCalendar({
  defaultView: 'agendaWeek',
  // 注意:startDate 和 endDate 需为 Moment 对象或 ISO 字符串(自动解析)
  dayRender: function(date, cell) {
    const startDate = moment('2023-04-02T09:00:00');
    const endDate   = moment('2023-04-06T17:30:00');

    // 使用 isBetween 判断 date 是否落在 [startDate, endDate] 闭区间内
    if (date.isBetween(startDate, endDate, null, '[]')) {
      $(cell).css('background-color', 'rgba(143, 223, 130, 0.5)');
      // 可选:增强可访问性,添加 aria-label 提示
      $(cell).attr('aria-label', '高亮时段:' + startDate.format('MM/DD HH:mm') + ' 至 ' + endDate.format('MM/DD HH:mm'));
    }
  }
});

✅ 关键要点说明:

  • date 参数是 Moment 实例(v4),代表当前渲染的日期粒度(不含具体时间),因此 isBetween 的比较逻辑默认按“日”对齐;若需精确到小时/分钟,应改用 eventRender 或 businessHours 配置,或结合 slotDuration 手动计算时间槽高亮。
  • ‘[]’ 表示闭区间(包含起止日期),若仅需高亮中间日期,可改为 ‘(]’(左开右闭)等。
  • 避免在循环中重复创建 Moment 对象,建议将 startDate/endDate 提取为外部常量或组件状态变量。

⚠️ 注意事项:

夏夕资源网专注于CMS网站模板,主流语言整站网站源码下载,网站建设相关教程分享,好用的软件素材整合下载,提供一站式便捷自助服务。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"zy.lucklyus.top",如遇到无法解压的请联系管理员!
夏夕资源网-网站模板_免费源码_资源素材 » FullCalendar 周视图中高亮指定日期与时间范围的完整实现指南-html教程
在线时间:12:00 - 22:00
关注微信公众号:微信公众号
站长邮箱:[email protected]
  • 运营天数: 1393+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4023803+
  • 本周更新: 0+
  • 最后更新: 2026-03-16

本站指数

×
  • 运营天数: 1393+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4023803+
  • 本周更新: 0+
  • 最后更新: 2026-03-16