fullCalendar 月视图下,自动定位到今天所在行
时间: 2024-02-05 16:02:44 浏览: 131
您可以使用fullCalendar的`gotoDate()`方法和`getDate()`方法结合起来实现自动定位到今天所在行的效果。具体实现步骤如下:
1. 获取当前日期,可以使用`getDate()`方法获取:
```javascript
var today = new Date();
```
2. 使用`gotoDate()`方法将fullCalendar跳转到当前日期所在的月份:
```javascript
$('#calendar').fullCalendar('gotoDate', today);
```
3. 获取当前日期所在行的DOM元素,可以通过jQuery选择器和`getDate()`方法获取行的日期信息:
```javascript
var todayDate = $('#calendar').fullCalendar('getDate');
var todayRow = $('td[data-date="' + todayDate.format("YYYY-MM-DD") + '"]').parent();
```
4. 将fullCalendar滚动到当前日期所在行,可以使用jQuery的`scrollTop()`方法实现:
```javascript
$('#calendar .fc-scroller').scrollTop(todayRow.position().top);
```
通过以上步骤,您就可以实现自动定位到今天所在行的效果了。
相关问题
fullCalendar月视图,自动定位到今天所在行,完整代码
以下是一个使用fullCalendar实现月视图自动定位到今天所在行的完整代码示例:
```html
<!DOCTYPE html>
<html>
<head>
<title>使用fullCalendar实现月视图自动定位到今天所在行示例</title>
<link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.4.0/fullcalendar.min.css' />
<link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.6/css/bootstrap.min.css' />
</head>
<body>
<div id='calendar'></div>
<script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.4.0/fullcalendar.min.js'></script>
<script>
$(document).ready(function() {
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
// 设置默认视图为月视图
defaultView: 'month',
// 设置日历开始日期为当前日期
defaultDate: moment(),
events: [{
title: 'Event 1',
start: '2021-08-20T10:00:00',
end: '2021-08-20T12:00:00'
}, {
title: 'Event 2',
start: '2021-08-22T14:00:00',
end: '2021-08-22T16:00:00'
}, {
title: 'Event 3',
start: '2021-08-24T09:00:00',
end: '2021-08-24T11:00:00'
}, {
title: 'Event 4',
start: '2021-08-26T16:00:00',
end: '2021-08-26T18:00:00'
}, {
title: 'Event 5',
start: '2021-08-28T12:00:00',
end: '2021-08-28T14:00:00'
}, {
title: 'Event 6',
start: '2021-08-30T10:00:00',
end: '2021-08-30T12:00:00'
}],
// 在日历加载完成后自动定位到今天所在行
viewRender: function(view, element) {
var today = moment();
var firstDay = view.calendar.getDate();
var lastDay = moment(firstDay).endOf('month');
if (today > firstDay && today < lastDay) {
var todayIndex = today.date() + firstDay.day() - 1;
var row = Math.floor(todayIndex / 7) + 1;
$('.fc-content-skeleton tbody tr:nth-child(' + row + ')').addClass('today-row');
}
}
});
});
</script>
<style>
.today-row {
background-color: #f2f2f2;
font-weight: bold;
}
</style>
</body>
</html>
```
在这个示例中,我们使用了fullCalendar库来创建一个日历,然后使用events选项来设置一些事件。我们还设置了默认视图为月视图,并将日历开始日期设置为当前日期。接下来,我们使用了viewRender回调函数来自动定位到今天所在的行。在这个回调函数中,我们首先获取今天的日期和当前视图的第一天和最后一天。然后,我们计算出今天在当前视图中的索引,并将其所在的行添加一个特殊的CSS类(today-row)。最后,我们使用CSS样式来将今天所在的行突出显示。
fullCalendar 月视图下,自动定位到今天所在行 完整代码
完整的代码如下:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8' />
<link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.10.2/fullcalendar.min.css' />
<script src='https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.10.2/fullcalendar.min.js'></script>
<script>
$(document).ready(function() {
$('#calendar').fullCalendar({
viewRender: function(view, element){
// 获取今天的日期
var today = moment().format('YYYY-MM-DD');
// 获取所有日期元素
var allDayCells = $('.fc-day');
// 遍历所有日期元素
for(var i=0; i<allDayCells.length; i++){
var cell = allDayCells[i];
// 如果该日期元素包含今天的日期,则滚动到该元素所在行
if($(cell).data('date') == today){
var row = $(cell).closest('.fc-row');
var top = row.position().top;
$('.fc-scroller').scrollTop(top);
break;
}
}
}
});
});
</script>
<style>
body {
margin: 40px 10px;
padding: 0;
font-family: "Lucida Grande",Helvetica,Arial,Verdana,sans-serif;
font-size: 14px;
}
#calendar {
max-width: 900px;
margin: 0 auto;
}
</style>
</head>
<body>
<div id='calendar'></div>
</body>
</html>
```
这里引入了 FullCalendar 的相关依赖库,并在页面加载完成后初始化 FullCalendar 实例。在 `viewRender` 回调函数中,实现了自动定位到今天所在行的功能。最后通过 CSS 设置了日历表格的样式。
阅读全文