element 日历组件应用相关的问题

1 篇文章 0 订阅

1.使用element日历组件会自带按钮组,要实现切换时间的时候去获取相关月份的排班数据,但是按钮组并不存在于日历组件中

<el-calendar v-model="value"> </el-calendar>

解决方法:watch监听日历组件绑定的value值,当value值变化后去请求日历组件数据

 

需要注意,只有当两次的月份不一致时才去获取数据

2.日历组件早于当天的日期样式区别于将来的日期

解决方法:用插槽里每一项的的日期转时间戳去和现在的时间戳做对比,如果早于现在的时间则显示另一种样式

注意:日历中的时间是默认获取的当天的08:00:00,所以比较的时候不能直接拿new Date()去比较,比较巧妙的办法是获取当天的时间然后自己手动去拼上时分秒,这样就完美啦~


     // 获取当天08:00:00的时间,与日历中时间戳相比较(日历中的时间默认为08:00)
    let date = new Date();
    let compareDate = date.getFullYear() + '-' + Number(date.getMonth() + 1) + '-' + date.getDate() + ' 08:00:00';
    this.compareDate = new Date(compareDate);

3.修改日历组件自带的按钮组中的文字

解决方法:操作原生dom获取按钮组的中第2项的span元素,将 今天 改成  本月

mounted() {
   
    this.$nextTick(() => {
      // 更改element原生日历组件中按钮文字由今天改成本月
      let prevBtn = document.querySelector('.el-calendar__button-group .el-button-group>button:nth-child(2)>span');
      prevBtn.innerHTML = '本月';
    })
 
  }

修改效果如下:

 

4.日历组件只显示当月日期

element日历组件会默认显示如下,本月第一行日期不是从周一开始时会补全第一行的日期,后一行也会补全

解决方法:非正规方法,是通过class类来实现,日历组件中上一个月的td标签的class为prev,下一个月为next,这里通过控制使用visibility: hidden来隐藏,不可用display: none ,如果使用display: none 则原有的日历组件会跑偏,故需要使用visibility: hidden来隐藏

 

 

.el-calendar-table:not(.is-range) td.next,
.el-calendar-table:not(.is-range) td.prev {
  visibility: hidden;

}

visibility: hidden和display: none 的区别

visibility: hidden----将元素隐藏,但是在网页中该占的位置还是占着。

display: none----将元素的显示设为无,即在网页中不占任何的位置。

最终实现效果如下所示

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值