基于vue的日历小demo
来源:互联网 发布:中国网络经纪人 安居客 编辑:程序博客网 时间:2024/05/18 10:36
因为现在用vue比jq熟练了,之前没接触过vue的日历,基于jq的日历五花八门的,所以还是决定基于vue一试。
html代码:
<div id="calendar"> <!-- 年份 月份 --> <div class="month"> <ul> <li class="arrow" @click="pickPre(currentYear,currentMonth)"></li> <li class="year-month" @click="pickYear(currentYear,currentMonth)"> <span class="choose-year">{{ currentYear }}</span> <span class="choose-month">{{ currentMonth }}月</span> </li> <li class="arrow" @click="pickNext(currentYear,currentMonth)"></li> </ul> </div> <!-- 星期 --> <ul class="weekdays"> <li>一</li> <li>二</li> <li>三</li> <li>四</li> <li>五</li> <li style="color:red">六</li> <li style="color:red">日</li> </ul> <!-- 日期 --> <ul class="days"> <li @click="pick(day)" v-for="day in days"> <!--本月--> <span v-if="day.getMonth()+1 != currentMonth" class="other-month">{{ day.getDate() }}</span> <span v-else> <!--今天--> <span v-if="day.getFullYear() == new Date().getFullYear() && day.getMonth() == new Date().getMonth() && day.getDate() == new Date().getDate()" class="active">{{ day.getDate() }}</span> <span v-else>{{ day.getDate() }}</span> </span> </li> </ul> </div>
po上主要逻辑代码:
// 执行日历 initData: function(cur) { var date; if (cur) { date = new Date(cur); } else { date = new Date(); } this.currentDay = date.getDate(); this.currentYear = date.getFullYear(); this.currentMonth = date.getMonth() + 1; this.currentWeek = date.getDay(); // 1...6,0 if (this.currentWeek == 0) { this.currentWeek = 7; } var str = this.formatDate(this.currentYear, this.currentMonth, this.currentDay); console.log("today:" + str + "," + this.currentWeek); this.days.length = 0; // 今天是周日,放在第一行第7个位置,前面6个 for (var i = this.currentWeek - 1; i >= 0; i--) { var d = new Date(str); d.setDate(d.getDate() - i); console.log("y:" + d.getDate()); this.days.push(d); } for (var i = 1; i <= 35 - this.currentWeek; i++) { var d = new Date(str); d.setDate(d.getDate() + i); this.days.push(d); } },
相关日期处理函数:
// 返回 类似 2016-01-02 格式的字符串 formatDate: function(year, month, day) { var y = year; var m = month; if (m < 10) m = "0" + m; var d = day; if (d < 10) d = "0" + d; return y + "-" + m + "-" + d },
这块逻辑对原生的日期格式转换要求很高,后续会整理处理日期相关的博文。
箭头表示和点击日期相关事件:
// 当前日期 pick: function(date) { alert(this.formatDate(date.getFullYear(), date.getMonth() + 1, date.getDate())); }, // 上一月 pickPre: function(year, month) { // setDate(0); 上月最后一天 // setDate(-1); 上月倒数第二天 // setDate(dx) 参数dx为 上月最后一天的前后dx天 var d = new Date(this.formatDate(year, month, 1)); d.setDate(0); this.initData(this.formatDate(d.getFullYear(), d.getMonth() + 1, 1)); }, // 下一月 pickNext: function(year, month) { var d = new Date(this.formatDate(year, month, 1)); d.setDate(35); this.initData(this.formatDate(d.getFullYear(), d.getMonth() + 1, 1)); }, // 当前年月 pickYear: function(year, month) { alert(year + "," + month); },
最后po上完整版代码:
- {{ currentYear }} {{ currentMonth }}月
- 一
- 二
- 三
- 四
- 五
- 六
- 日
- {{ day.getDate() }} {{ day.getDate() }} {{ day.getDate() }}
可以根据自己的需要,与后台进行交互。
- 基于vue的日历小demo
- 基于vue.js的小demo
- 一个基于ES5的vue小demo
- [IMWeb训练营作业]基于Vue的小demo--toodolist
- 一个基于ES6+webpack的vue小demo
- 基于vue的倒计时demo
- 基于vue的倒计时demo
- 基于Vue的时间倒计时DEMO
- 基于ssh2的小demo
- 基于vue.js开发的demo—天气APP
- 基于BaseAdapter的Listview小Demo
- 简单的vue日历组件
- 基于vue+vue-router+vuex+axios+webpack开发的个人Demo《Qu约》
- 基于vue+vue-router+vuex+axios+webpack开发的个人Demo《Qu约》
- vue 日历
- vue-router第一个小demo
- vue + webpack + node 开发一个小demo
- Vue小Demo,仿lofter移动端
- Oracle 数据库导入导出 dmp文件
- IOS越狱相关-2017
- MySQL索引设计背后的数据结构及算法详解
- 如何用消息系统避免分布式事务?
- Android 官网Train阅读记录——6
- 基于vue的日历小demo
- elasticsearch api中的get操作
- Echarts图表之插件生成PDF下载
- 基于rt2860v2的wifi探针
- Linux静默安装Oracle11g部分问题
- Graphviz python & anaconda中安装
- 几个检查当前运行的Linux是在VM还是在实体机中的方法
- TI android 源码下载镜像
- OkHttpUtils使用简析