如何设置FullCalendar将当前周置于顶部显示?
FullCalendar 设置当前周置顶显示方案
针对你想让FullCalendar将当前周固定在顶部(6周布局)的需求,核心未修改的情况下可以通过自定义视图+动态可见范围实现,不需要额外隐藏的开关,具体方案如下:
自定义6周视图并锚定当前周为起点
利用FullCalendar的views配置自定义一个6周的视图,通过visibleRange动态计算以当前周为起始的6周范围,这样当前周会自动排在顶部。示例代码:document.addEventListener('DOMContentLoaded', function() { const calendarEl = document.getElementById('calendar'); const today = new Date(); // 计算当前周的第一天(此处以周一为一周起始,可根据你的firstDay配置调整偏移) const startOfCurrentWeek = new Date(today); startOfCurrentWeek.setDate(today.getDate() - today.getDay() + 1); // 计算6周范围的结束日期(当前周+5周) const endRange = new Date(startOfCurrentWeek); endRange.setDate(endRange.getDate() + 42); // 6*7=42天 const calendar = new FullCalendar.Calendar(calendarEl, { initialView: 'custom6WeekView', views: { custom6WeekView: { type: 'dayGridMonth', // 保持和你原有月视图一致的类型 duration: { weeks: 6 }, visibleRange: { start: startOfCurrentWeek, end: endRange } } }, // 保留你原有的ICS导入等配置 firstDay: 1, // 对应上述周一为起始的设置,按需修改 fixedWeekCount: true // 强制固定6周显示 }); calendar.render(); });注意:如果你的一周起始是周日,把计算
startOfCurrentWeek的偏移改为today.getDate() - today.getDay()即可。配合现有参数优化显示
- 确保
showNonCurrentDates: true,这样跨月的日期会正常显示(符合你观察到的“下月第一周添加到底部”的场景); fixedWeekCount: true保证始终显示6周,避免月份切换时周数变化。
- 确保
分支版本兼容性说明
你使用的多ICS导入分支核心未修改,上述FullCalendar原生配置完全适用,不需要改动核心源码,仅需在Calendar初始化时添加视图和可见范围的配置即可。
内容的提问来源于stack exchange,提问作者Stan Glomb
相关产品推荐
相关产品推荐

