广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue实现周日历切换效果
  • 581
分享到

vue实现周日历切换效果

2024-04-02 19:04:59 581人浏览 安东尼
摘要

本文实例为大家分享了Vue实现周日历切换效果的具体代码,供大家参考,具体内容如下 废话不多说,直接上干货,需要的朋友自取 代码: <!DOCTYPE html> <

本文实例为大家分享了Vue实现周日历切换效果的具体代码,供大家参考,具体内容如下

废话不多说,直接上干货,需要的朋友自取

代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta Http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>周日历</title>
    <!-- 引入组件样式 -->
    <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.CSS" >
</head>
<body>
    <div id="app">
        <!-- 上面的日历 -->
        <div class="calendar">
            <div class="arrow">
                <i class="el-icon-arrow-left" @click="arrow('left')"></i>
                <i class="el-icon-arrow-right" @click="arrow('right')"></i>
            </div>
            <el-calendar v-model="value" :range="dateRange"></el-calendar>
        </div>
        <!-- 下面的日历 -->
        <div class="date">
            <div class="arrow0">
                <i class="el-icon-arrow-left" @click="weekPre"></i>
                <i class="el-icon-arrow-right" @click="weekNext"></i>
            </div>
            <!-- 年份 月份 -->
            <div class="month">
                <p>{{ currentYear }}年{{ currentMonth }}月</p>
            </div>
            <!-- 星期 -->
            <ul class="weekdays">
                <li>一</li>
                <li>二</li>
                <li>三</li>
                <li>四</li>
                <li>五</li>
                <li>六</li>
                <li>日</li>
            </ul>
            <!-- 日期 -->
            <ul class="days">
                <li @click="pick(day)" v-for="(day, index) in days" :key="index">
                    <!--本月-->
                    <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>
    </div>
</body>
<!-- 引入vue -->
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<!-- 引入组件库 -->
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
<script>
    new Vue({
    el: '#app',
    data: function() {
            return { 
                // 上
                value: "",
                endDate: "",
                dateRange: [],
                dateNum: 0,
                // 下
                currentYear: "",   // 年份
                currentMonth: "",  // 月份
                currentDay: "",    // 日期
                currentWeek: "",    // 星期
                days: [],
            }
        },
    mounted () {
     
    },
    created () {
        // 上面的日历
        this.dateList(this.dateNum);
        console.log(this.dateRange);
        // 下面的日历
        this.initData();
    },
    methods: {
        // 上面的日历
 
        // 获取当前时间的周一
        getMonday(date) {
            var day = date.getDay();
            var deltaDay;
            if (day == 0) {
                deltaDay = 6;
            } else {
                deltaDay = day - 1;
            }
            var monday = new Date(date.getTime() - deltaDay * 24 * 60 * 60 * 1000);
            monday.setHours(0);
            monday.setMinutes(0);
            monday.setSeconds(0);
            return monday; //返回选定时间的周一的0时0分0秒
        },
        getDateNew(time) {
            console.log(time);
            let times = new Date(time);
            let year = times.getFullYear();
            let month = times.getMonth() + 1 < 10 ? "0" + (times.getMonth() * 1 + 1) : times.getMonth() * 1 + 1;
            let day = times.getDate() < 10 ? "0" + times.getDate() * 1 : times.getDate() * 1;
            return year + "-" + month + "-" + day;
        },
        dateList(delta) {
            //将时间对象转换为时间戳并加几天后转换为时间对象
            var DateNews = this.getMonday(
                new Date((new Date().getTime() / 1000 + 86400 * 7 * delta) * 1000)
            );
            let startDate = this.getDateNew(DateNews, delta);
            this.endDate = this.getDateNew(
                new Date((DateNews.getTime() / 1000 + 6 * 86400) * 1000)
            );
            this.dateRange = [startDate, this.endDate];
        },
        arrow(arrow) {
            if (arrow == "left") {
                this.dateNum--;
                this.dateList(this.dateNum);
            } else if (arrow == "right") {
                this.dateNum++;
                this.dateList(this.dateNum);
            }
        },
 
        // 下面的日历
 
        fORMatDate (year, month, day) {
            const y = year
            let m = month
            if (m < 10) m = `0${m}`
            let d = day
            if (d < 10) d = `0${d}`
            return `${y}-${m}-${d}`
        },
        initData (cur) {
            let 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
            }
            const str = this.formatDate(this.currentYear, this.currentMonth, this.currentDay) // 今日日期 年-月-日
            this.days.length = 0
            // 今天是周日,放在第一行第7个位置,前面6个 这里默认显示一周,如果需要显示一个月,则第二个循环为 i<= 35- this.currentWeek
            
            for (let i = this.currentWeek - 1; i >= 0; i -= 1) {
                const d = new Date(str)
                d.setDate(d.getDate() - i)
                // console.log(y:" + d.getDate())
                this.days.push(d)
            }
            for (let i = 1; i <= 7 - this.currentWeek; i += 1) {
                const d = new Date(str)
                d.setDate(d.getDate() + i)
                this.days.push(d)
            }
        },
        //  上个星期
        weekPre () {
            const d = this.days[0]    // 如果当期日期是7号或者小于7号
            d.setDate(d.getDate() - 7)
            this.initData(d)
        },
        //  下个星期
        weekNext () {
            const d = this.days[6]    // 如果当期日期是7号或者小于7号
            d.setDate(d.getDate() + 7)
            this.initData(d)
        },
        // 上一個月   传入当前年份和月份
        pickPre (year, month) {
            const d = new Date(this.formatDate(year, month, 1))
            d.setDate(0)
            this.initData(this.formatDate(d.getFullYear(), d.getMonth() + 1, 1))
        },
        // 下一個月   传入当前年份和月份
        pickNext (year, month) {
            const d = new Date(this.formatDate(year, month, 1))
            d.setDate(35)
            this.initData(this.formatDate(d.getFullYear(), d.getMonth() + 1, 1))
        },
        // 当前选择日期
        pick (date) {
            alert(this.formatDate(date.getFullYear(), date.getMonth() + 1, date.getDate()))
        },
    },
})    
</script>
<style lang="scss">
    #app {
        width: 40%;
        margin: auto;
    }
    ul {
        padding: 0;
    }
    li {
        list-style-type: none;
    }
    
    .calendar {
        position: relative;
        width: 100%;
        background: #fff;
        margin-top: 20px;
        margin-left: 20px;
    }
    .el-calendar__header {
        display: block;
    }
    .el-calendar-table .el-calendar-day {
        height: auto;
        text-align: center;
    }
    .el-calendar-table td.is-selected {
        background-color: #24b18d;
        color: #fff;
    }
    .el-calendar-table .el-calendar-day:hover {
        background-color: #24b18d;
        color: #fff;
    }
    .el-calendar-table {
        border-bottom: 1px solid #e4e4e4;
        padding-bottom: 15px;
    }
    .el-calendar-table .next {
        color: rgb(143, 143, 143);
    }
    .el-calendar__title,.el-calendar__button-group {
        text-align: center;
    }
    .arrow {
        width: 100%;
        max-height: 46px;
        position: absolute;
        top: 15px;
        text-align: center;
    }
    .arrow i {
        font-size: 20px;
        cursor: pointer;
    }
    .arrow i:nth-child(1) {
        margin-right: 10%;
        text-align: left;
    }
    .arrow i:nth-child(2) {
        margin-left: 10%;
        text-align: right;
    }
 
    
    .date {
        position: relative;
        margin-top: 20px;
        padding: 10px 20px;
        background-color: #D3D3D3;
    }
    .arrow0 {
        width: 100%;
        max-height: 46px;
        position: absolute;
        top: 27px;
        left: 0px;
        text-align: center;
    }
    .arrow0 i {
        font-size: 20px;
        cursor: pointer;
    }
    .arrow0 i:nth-child(1) {
        margin-right: 10%;
        text-align: left;
    }
    .arrow0 i:nth-child(2) {
        margin-left: 10%;
        text-align: right;
    }
    .month {
        text-align: center;
    }  
    .weekdays {
        display: flex;
    } 
    .weekdays li {
        flex: 1;
        text-align: center;
    } 
    .days {
        display: flex;
    } 
    .days li {
        flex: 1;
        text-align: center;
        cursor: pointer;
    } 
    .days li span {
        display: inline-block;
        width: 22px;
        height: 22px;
    }
    .days li span:hover {
        color: #fff;
        background-color: #409EFF;
        border-radius: 50%;
    }
    .active {
        display: inline-block;
        color: #fff;
        border-radius: 50%;
        background-color: #fa6854!important;
    } 
    .other-month {
        color: #e4393c;
    }   
</style>
</html>

第二种日历的实现方式

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

--结束END--

本文标题: vue实现周日历切换效果

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

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

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

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

下载Word文档
猜你喜欢
  • vue实现周日历切换效果
    本文实例为大家分享了vue实现周日历切换效果的具体代码,供大家参考,具体内容如下 废话不多说,直接上干货,需要的朋友自取 代码: <!DOCTYPE html> <...
    99+
    2022-11-13
  • vue怎么实现周日历切换效果
    本篇内容介绍了“vue怎么实现周日历切换效果”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!效果如下:代码:<!DOCTYPE ...
    99+
    2023-06-30
  • 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实现图片切换效果的具体代码,供大家参考,具体内容如下 1)v-if/v-show 二者都可以实现让元素隐藏和显示。但是实现原理不同: v-if 是通过将元素...
    99+
    2022-11-12
  • vue实现tab栏切换效果
    本文实例为大家分享了vue实现tab栏切换效果的具体代码,供大家参考,具体内容如下 一个简单的tab栏切换组件,由tabs以及tab-pane组成 效果图 使用 <templ...
    99+
    2022-11-13
  • vue实现3D切换滚动效果
    本文实例为大家分享了vue实现3D切换滚动效果的具体代码,供大家参考,具体内容如下 今天写项目,遇到一个点击切换的滚动需求,贴出来,做一个记录 这个是最终的一个效果,点击左右小箭头...
    99+
    2022-11-13
  • 使用Vue实现简单日历效果
    使用Vue实现简单的日历,供大家参考,具体内容如下 原理分析: 1.获取当前时间2.显示当前时间3.点击增加和减少月份4.大月和小月的天数 效果演示 初始样式(显示现在的日期时间) ...
    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实现简单图片切换的具体代码,供大家参考,具体内容如下 代码: <!DOCTYPE html> <html lang="en">...
    99+
    2022-11-12
  • vue怎么实现3D切换滚动效果
    本篇内容介绍了“vue怎么实现3D切换滚动效果”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!这个是最终的一个效果,点击左右小箭头,实现滚动效...
    99+
    2023-06-29
  • vue实现tab切换的放大镜效果
    本文实例为大家分享了vue实现tab切换的放大镜效果的具体代码,供大家参考,具体内容如下 废话不多说先看效果图 1.我这里并没有加遮罩层,如有需要请自行加上 2.图片建议使用4k高...
    99+
    2022-11-12
  • Vue中的table表单切换实现效果
    目录Vue表单切换实现效果首先给两个链接定义 一个numVue table切换组件Vue表单切换实现效果 点击第一个链接 出现以下数据 点击第二个链接 ,我没有写后台所以没有数据,...
    99+
    2022-11-13
    Vue table表单 table表单切换 Vue table表单切换
  • Bootstrap+Jquery实现日历效果
    本文实例为大家分享了Bootstrap+Jquery实现日历效果的具体代码,供大家参考,具体内容如下 一、效果图 二、代码 本案例中用到了Bootstrap和Jquery,除此之外...
    99+
    2022-11-12
  • Python实现周日历与时间相互转换
    目录前言基本介绍使用datetime类格式化进行转换问题正确方法使用isocalendar将日期转换为周日历使用 fromisocalendar 将周日历转换为日期python代码前...
    99+
    2022-11-11
  • Java实现动态日历效果
    本文实例为大家分享了Java实现动态日历效果的具体代码,供大家参考,具体内容如下 题目:动态日历 输入年份,月份,显示当前月份日历布局 分析 实现日历的基本思想为:确定一个基准日期,...
    99+
    2022-11-12
  • js实现简单日历效果
    本文实例为大家分享了js实现简单日历效果的具体代码,供大家参考,具体内容如下 ## css模块 <style type="text/css"> *{ ma...
    99+
    2022-11-12
  • 基于jquery实现日历效果
    本文实例为大家分享了jquery实现日历效果的具体代码,供大家参考,具体内容如下 function getBDays( y, m ) { return (new Da...
    99+
    2022-11-11
  • 小程序实现日历效果
    本文实例为大家分享了小程序实现日历效果的具体代码,供大家参考,具体内容如下 项目中需要做一个日历,最终效果如下: 日历实现是可以点击日期左右箭头和弹窗选择日期,下面上代码: htm...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作