广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >使用Vue实现简单日历效果
  • 558
分享到

使用Vue实现简单日历效果

2024-04-02 19:04:59 558人浏览 独家记忆
摘要

使用Vue实现简单的日历,供大家参考,具体内容如下 原理分析: 1.获取当前时间2.显示当前时间3.点击增加和减少月份4.大月和小月的天数 效果演示 初始样式(显示现在的日期时间)

使用Vue实现简单的日历,供大家参考,具体内容如下

原理分析:

1.获取当前时间
2.显示当前时间
3.点击增加和减少月份
4.大月和小月的天数

效果演示

初始样式(显示现在的日期时间)

增加一个月

在程序开始之前一定注意:

引入vue.js架包

代码演示

Body内容

<script type="text/x-template" id="calendar">
   <!-- 年份-->
       <div id="year">
               <!--月份 -->
                    <div class="month">
                        <ul>
                            <li class="arrow" @click="pickPre(currentYear,currentMonth)">❮</li>
                            <li class="year-month" @click="pickYear(currentYear,currentMonth)">
                                <span class="choosen-year" style="color:blue">{{ currentYear }}</span>
                                <span class="choosen-month" style="color:blue">{{ 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 v-for="dayobject in days">
                            <!--本月-->
        
                            <span v-if="dayobject.day.getMonth()+1 != currentMonth" class="other-month">{{ dayobject.day.getDate() }}</span>
        
                            <!--判断天数是否正确-->
                            <span v-else>
                                <!--今天-->
                                <span v-if="dayobject.day.getFullYear() == new Date().getFullYear() && dayobject.day.getMonth() == new Date().getMonth() && dayobject.day.getDate() == new Date().getDate()"
                                    class="active">{{ dayobject.day.getDate() }}</span>
                                <span v-else>{{ dayobject.day.getDate() }}</span>
                            </span>
        
                        </li>
                    </ul>
                </div>
            </script>
<div id="app">
      <calendar></calendar>
</div>

CSS样式

* {
            margin: 0;
            padding: 0;
        }
        
        
        
        
        #calendar {
            width: 98%;
            border: 2px solid #A4A7B0;
            height: 335px;
            margin-left: 0.5%;
        }
        
        .month {
            width: 92%;
            height: 48px;
            border: 2px solid #FFFFFF;
            margin-left: 3%;
            margin-top: 20px;
        }
        
        .month ul {
            margin: 0;
            padding: 0;
            display: flex;
            margin-top: 11px;
            justify-content: space-between;
        }
        
        .year-month {
            flex-direction: column;
            align-items: center;
            justify-content: space-around;
        }
        
        .choosen-year {
            padding: 0 20px;
            font-size: 16px;
            font-weight: 200;
        }
        
        .choosen-month {
            text-align: center;
            font-size: 16px;
            font-weight: 200;
        }
        
        .arrow {
            width: 3%;
            height: 25px;
        }
        
        .arrow1 {
            background: url(left.png) no-repeat 0 0 /100% 100%;
            margin-left: 44px;
        }
        
        .arrow2 {
            background: url(right.png) no-repeat 0 0 /100% 100%;
            margin-right: 44px;
        }
        
        .month ul li {
            color: #999;
            font-size: 20px;
            text-transfORM: uppercase;
            letter-spacing: 3px;
            list-style: none;
        }
        
        .weekdays {
            margin: 0;
            color: #FFFFFF;
            background: #A4A7B0;
            width: 96.6%;
            margin-top: 26px;
            height: 34px;
            line-height: 34px;
            margin-left: 2.2%;
        }
        
        .weekdays li {
            display: inline-block;
            text-align: center;
            color: #11616f;
            font-size: 14px;
            font-weight: 100;
            width: 12.7%;
        }
        
        .days {
            padding: 0;
            margin: 0;
            display: flex;
            flex-wrap: wrap;
            justify-content: space-around;
        }
        
        .days li {
            list-style-type: none;
            display: inline-block;
            width: 14.2%;
            text-align: center;
            padding-bottom: 3px;
            padding-top: 7px;
            font-size: 12.78px;
            color: rgb(14, 220, 235);
            font-weight: 200;
        }
        
        .days li span span {
            height: 29.5px;
            width: 27px;
            line-height: 29.5px;
            display: inline-block;
        }
        
        .days li .class-30 {
            background: url(bg_30.png) no-repeat 0 0 /100% 100%;
        }
        
        .days li .class-60 {
            background: url(bg_60.png) no-repeat 0 0 /100% 100%;
        }
        
        .days li .class-3060 {
            background: url(bg_3060.png) no-repeat 0 0 /100% 100%;
        }
        
        .days li .other-month {
            padding: 5px;
            color: #84a8ae;
        }

Vue.js内容

Vue.component("calendar", {
            template: "#calendar",
            data: function() {
                return {
                    currentDay: 1,
                    currentMonth: 1,
                    currentYear: 1970,
                    currentWeek: 1,
                    days: [],
                }
            },
            created() {
                let that = this;
                that.initData(null);
            },
            methods: {
                initData: function(cur) {
                    let that = this;
                    let leftcount = 0;
                    let date;
                    if (cur) {
                        date = new Date(cur);
                    } else {
                        let now = new Date();
                        let d = new Date(that.formatDate(now.getFullYear(), now.getMonth(), 1));
                        d.setDate(35);
                        date = new Date(that.formatDate(d.getFullYear(), d.getMonth() + 1, 1));
                    }
                    that.currentDay = date.getDate();
                    that.currentYear = date.getFullYear();
                    that.currentMonth = date.getMonth() + 1;
                    that.currentWeek = date.getDay(); // 1...6,0
                    if (that.currentWeek == 0) {
                        that.currentWeek = 7;
                    }
                    let str = that.formatDate(that.currentYear, that.currentMonth, that.currentDay);
                    that.days.length = 0;
                    //初始化
                    for (let i = that.currentWeek - 1; i >= 0; i--) {
                        let d = new Date(str);
                        d.setDate(d.getDate() - i);
                        let dayobject = {}; 
                        dayobject.day = d;
                        that.days.push(dayobject); 
                    }
                    for (let i = 1; i <= 35 - that.currentWeek; i++) {
                        let d = new Date(str);
                        d.setDate(d.getDate() + i);
                        let dayobject = {};
                        dayobject.day = d;
                        that.days.push(dayobject);
                    }

                },
                pickPre: function(year, month) {
                    let that = this;
                    let d = new Date(that.formatDate(year, month, 1));
                    d.setDate(0);
                    that.initData(that.formatDate(d.getFullYear(), d.getMonth() + 1, 1));
                },
                pickNext: function(year, month) {
                    let that = this;
                    let d = new Date(that.formatDate(year, month, 1));
                    d.setDate(35);
                    that.initData(that.formatDate(d.getFullYear(), d.getMonth() + 1, 1));
                },
                pickYear: function(year, month) {
                    alert(year + "," + month);
                },
                // 返回 类似 2016-01-02 格式的字符串
                formatDate: function(year, month, day) {
                    let y = year;
                    let m = month;
                    if (m < 10) m = "0" + m;
                    let d = day;
                    if (d < 10) d = "0" + d;
                    return y + "-" + m + "-" + d
                },
            }
        })
        let vm = new Vue({
            el: '#app',
        })

到此程序结束。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: 使用Vue实现简单日历效果

本文链接: https://www.lsjlt.com/news/166349.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用Vue实现简单日历效果
    使用Vue实现简单的日历,供大家参考,具体内容如下 原理分析: 1.获取当前时间2.显示当前时间3.点击增加和减少月份4.大月和小月的天数 效果演示 初始样式(显示现在的日期时间) ...
    99+
    2022-11-13
  • js实现简单日历效果
    本文实例为大家分享了js实现简单日历效果的具体代码,供大家参考,具体内容如下 ## css模块 <style type="text/css"> *{ ma...
    99+
    2022-11-12
  • JavaScript代码实现简单日历效果
    本文实例为大家分享了JavaScript实现简单日历效果的具体代码,供大家参考,具体内容如下 效果如下: 代码: <!DOCTYPE html> <html ...
    99+
    2022-11-12
  • js+html+css实现简单日历效果
    本文实例为大家分享了js+html+css实现简单日历效果的具体代码,供大家参考,具体内容如下 效果: 遇到的问题与解决方法: 1.“日”上移 方法:在&l...
    99+
    2022-11-13
  • HTML+CSS+JavaScript实现简单日历效果
    本文实例为大家分享了HTML+CSS+JavaScript实现简单日历效果的具体代码,供大家参考,具体内容如下 初学前端花了一下午写了一个简单的日历效果: 可以选择按月或者按年切换,...
    99+
    2022-11-13
  • 微信小程序实现简单日历效果
    本文实例为大家分享了微信小程序实现日历效果的具体代码,供大家参考,具体内容如下 效果: wxml: <!-- 日历 -->         <view class...
    99+
    2022-11-13
  • vue实现价格日历效果
    本文实例为大家分享了vue实现价格日历效果的具体代码,供大家参考,具体内容如下 1、效果图 2、下载全局安装:npm install ele-calendar 3、在compone...
    99+
    2022-11-12
  • vue实现签到日历效果
    本文实例为大家分享了vue实现签到日历效果的具体代码,供大家参考,具体内容如下 先看看我们的效果图: 一、页面部分: <template>   <div clas...
    99+
    2022-11-13
  • vue实现周日历切换效果
    本文实例为大家分享了vue实现周日历切换效果的具体代码,供大家参考,具体内容如下 废话不多说,直接上干货,需要的朋友自取 代码: <!DOCTYPE html> <...
    99+
    2022-11-13
  • python实现日历效果
    本文实例为大家分享了python实现日历效果的具体代码,供大家参考,具体内容如下 一、代码编程过程 根据年月日算出星期几 def get_week_with_data(y,m,d): '''根据年月日计算...
    99+
    2022-06-02
    python 日历
  • C#实现日历效果
    本文实例为大家分享了C#实现日历效果的具体代码,供大家参考,具体内容如下 展示: 主要代码: public partial class calendar : Form     {...
    99+
    2022-11-13
  • 使用vue怎么实现一个价格日历效果
    今天就跟大家聊聊有关使用vue怎么实现一个价格日历效果,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Vue的优点Vue具体轻量级框架、简单易学、双向数据绑定、组件化、数据和结构的分离...
    99+
    2023-06-14
  • Vue实现简单弹窗效果
    本文实例为大家分享了Vue实现简单弹窗效果的具体代码,供大家参考,具体内容如下 选中input 弹出选项框 显示弹窗 首先要在components中新建两个组件 要实现子组件向父...
    99+
    2022-11-13
  • vue怎么实现周日历切换效果
    本篇内容介绍了“vue怎么实现周日历切换效果”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!效果如下:代码:<!DOCTYPE ...
    99+
    2023-06-30
  • Bootstrap+Jquery实现日历效果
    本文实例为大家分享了Bootstrap+Jquery实现日历效果的具体代码,供大家参考,具体内容如下 一、效果图 二、代码 本案例中用到了Bootstrap和Jquery,除此之外...
    99+
    2022-11-12
  • Flutter 日历组件简单实现
    目录前言安装效果demo 演示业务使用 headerView使用配置属性DEMO感谢前言 近期有个业务需求,涉及用户付费相关的计算,需要一个日历组件,组件功能如下: 仅支持从明天开始...
    99+
    2022-11-13
    Flutter 日历组件 Flutter 日历
  • vue实现简单放大镜效果
    本文实例为大家分享了vue实现简单放大镜效果的具体代码,供大家参考,具体内容如下 <template> <div> <div...
    99+
    2022-11-12
  • Vue实现简单选项卡效果
    本文实例为大家分享了Vue实现简单选项卡效果的具体代码,供大家参考,具体内容如下 效果图 1.头部选项卡 点击切换下标ID 传递一个参数回去,active绑定选中样式 <di...
    99+
    2022-11-13
  • Vue实现跑马灯简单效果
    本文实例为大家分享了Vue实现跑马灯简单效果的具体代码,供大家参考,具体内容如下 1、跑马灯效果 说明:单击"应援"按钮文字向左飘动,再单击"暂停"按钮停止当前飘动 2、完整代码...
    99+
    2022-11-12
  • Android使用GridView实现日历的简单功能
    简单的日历实现,只是显示了每一个月,没有显示当天和记事这些功能 主要是计算月初是周几,月末是周几,然后相应的显示上一月多少天和下一月多少天。 先看一下关于日期的用到的几个工具...
    99+
    2022-06-06
    gridview Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作