elementplus 中 DatePicker 日期选择器样式修改无效的问题及解决方案

 更新时间:2024年01月28日 11:36:18   作者:Jiang_JY  
这篇文章主要介绍了elementplus中DatePicker日期选择器样式修改无效的问题,DatePicker日期选择器弹出面板默认挂载在body上,所以在组件中添加了 scoped 属性的 style 标签下是修改不到其样式的,讲解了datepicker的使用方法,及常见的配置项和对应的值,需要的朋友可以参考下

elementplus 中 DatePicker 日期选择器样式修改无效

问题

遇到一个需求需要修改 DatePicker 日期选择器的样式,在添加了 scoped 属性的 style 标签,并且使用了 deep 样式穿透的情况下并不能修改其样式。

原因

DatePicker 日期选择器弹出面板默认挂载在 body 上,所以在组件中添加了 scoped 属性的 style 标签下是修改不到其样式的。

解决

官网中提供了一个给弹出面板设置 class 类名的属性——popper-class,通过该属性添加类名后选择该类名来修改样式即可。

需要注意的是,虽然官网提供了该属性,但是我们通过属性来修改样式的时候也并不能改变弹出面板是挂载在 body 的事实,所以我们要修改其样式的话需要把 scoped 属性去掉才行,我们可以添加一个新的不带 scoped 属性的 style 标签来对其样式进行修改。代码如下:

<template>
  <el-date-picker
     v-model="time"  
     type="datetime"
     placeholder="请选择时间"
     popper-class="date-cell">
  </el-date-picker>
</template>
<style scoped lang="scss">
	...//组件内部样式
</style>
<style lang="scss"> //去掉 scoped 属性
	...//时间选择器样式
</style>

补充介绍datepicker的使用方法

===导语:前一章已经实现了点击输入框弹出datepicker日期插件,但业务的处理逻辑放在哪里还未解决。此章主要介绍datepicker的使用方法,以及常见的配置项和对应的值。

使用方法:

方法很简单$(‘selector’).datepicker({});此方法内包含着配置参数的对象,根据需要按需配置即可。
*需要注意的是:因为此插件的调用默认事件是focus或者是button所以在写html时就选择input或者是button元素。

常见配置项:

1.minDate:最小可选日期*
值:日期或数字或字符串
==日期:包含最小日期的日期对象。
== 数字:从今天开始的几天。例,2代表从今天开始的两天,-1代表昨天。
==字符串:由dateFormat选项定义的格式的字符串,或相对日期。
相对日期 必 须包含值和期间对; 有效期为数"y"年,
"m"数 月,“w"数周和数"d"天。例如,”+1m +7d"代表
从今天起一个月零七天。

2.maxDate:最大可选日期
值:日期或数字或字符串(同上)
默认为null,没有最大值。

3.dateFormat:日期格式
值:字符串
默认:“mm/dd/yy”
4.monthNames:月份名称
值:包含12个月份的数组(主要用于本土化)
默认: [ “January”, “February”, “March”, “April”, “May”, “June”, “July”, “August”, “September”, “October”, “November”, “December” ]
5.dayNamesMin:列标题
值:包含周日到周六的数组(主要用于本土化)
默认:[ “Su”, “Mo”, “Tu”, “We”, “Th”, “Fr”, “Sa” ]
6.showMonthAfterYear:年月显示顺序
值:布尔值
默认:false
7.beforeShow:日期面板显示之前的处理函数(处理业务中面板显示与否相关的逻辑)
默认:null
功能:获取输入字段和当前datepicker实例并返回选项对象以更新datepicker的函数。它在显示datepicker之前调用。
8.beforeShowDay:面板显示之前可以为每个日期做处理的函数(处理业务中对日期的相关处理逻辑)
值:一个以日期作为参数的函数,必须返回一个数组:
[0]:true/ false表示此日期是否可选
[1]:要添加到日期单元格的CSS类名称
[2]:此日期的可选弹出工具提示语
默认: null
*在显示日期选择器之前,每个日期都会调用该函数。(相当于对每个日期遍历,此函数会被调用多次)

以上只是在此项目中用到的一些方法,具体其他的参数,值,以及函数的使用方法请参考datepicker官网

项目中的遇到的问题,及解决办法:

项目需求:
只有后台返回的日期时间可以选择,之外的日期都不可点。
已取得:
由以上的文档,可以得知处理业务中面板显示与否相关的逻辑应该放在beforeShow对应的处理函数中。
处理业务中对日期的相关处理逻辑应该放在beforeShowDay对应的处理函数中。
存在问题:
处理完毕后插件的整体处理逻辑没有问题了,但是重新写的样式无法覆盖原来的样式代码。

改造前代码:

日期插件内部样式改动找到对应的样式类名重新定义就可以,此处不在贴代码。但是点击输入框弹出插件时样式未被覆盖上。

因为此插件的样式要在点击后插件弹出来之前触发,此插件已经给这个输入框绑定上了focus事件,再绑定个click事件,在此事件内做样式修改不就可以了!
经实验,可用。

改造后代码:

总结:
1.$(‘selector’).datepicker({})默认已经绑定focus或者button事件触发,无需再次绑定对应事件。
2.处理业务中面板显示与否相关的逻辑应该放在beforeShow对应的处理函数中。
3.对日期的相关处理逻辑应该放在beforeShowDay对应的处理函数中。
4.再绑定个click事件,在此事件内做样式修改。

**最重要的还是先看官网文档,避免做很多无用功!!!!!

到此这篇关于elementplus 中 DatePicker 日期选择器样式修改无效的问题及解决方案的文章就介绍到这了,更多相关DatePicker 日期选择器样式修改无效内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 在vue中配置不同的代理同时访问不同的后台操作

    在vue中配置不同的代理同时访问不同的后台操作

    这篇文章主要介绍了在vue中配置不同的代理同时访问不同的后台操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • vue axios调用接口方法报错500 internal server error的两种解决方法

    vue axios调用接口方法报错500 internal server err

    前端使用axios 访问后端接口时报错,在浏览器中点击红色的报错数据,本文给大家分享vue axios调用接口方法报错500 internal server error的两种解决方法,感兴趣的朋友一起看看吧
    2023-10-10
  • vue项目实现减少app.js和vender.js的体积操作

    vue项目实现减少app.js和vender.js的体积操作

    这篇文章主要介绍了vue项目实现减少app.js和vender.js的体积操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • vue3中使用props和emits并指定其类型与默认值

    vue3中使用props和emits并指定其类型与默认值

    props是Vue3中的一个重要概念,它允许我们将数据从父组件传递到子组件,下面这篇文章主要给大家介绍了关于vue3中使用props和emits并指定其类型与默认值的相关资料,需要的朋友可以参考下
    2023-04-04
  • vue实现防抖的实例代码

    vue实现防抖的实例代码

    这篇文章主要给大家介绍了关于vue实现防抖的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • vue使用自定义icon图标的方法

    vue使用自定义icon图标的方法

    这篇文章主要介绍了vue使用自定义的icon图标的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-05-05
  • Vite性能优化之分包策略的实现

    Vite性能优化之分包策略的实现

    本文主要介绍了Vite性能优化之分包策略的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • 详解在vue3中使用jsx的配置以及一些小问题

    详解在vue3中使用jsx的配置以及一些小问题

    本文主要介绍了在vue3中使用jsx的配置以及一些小问题,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • vuejs使用FormData实现ajax上传图片文件

    vuejs使用FormData实现ajax上传图片文件

    本篇文章主要介绍了vuejs使用FormData实现ajax上传图片文件,具有一定的参考价值,有兴趣的可以了解一下
    2017-08-08
  • vue实现pdf导出解决生成canvas模糊等问题(推荐)

    vue实现pdf导出解决生成canvas模糊等问题(推荐)

    最近公司项目需要,利用vue实现pdf导出,从而保存到本地打印出来,说起来好像也很容易,具体要怎么实现呢?下面小编给大家带来了vue实现pdf导出解决生成canvas模糊等问题,需要的朋友参考下吧
    2018-10-10

最新评论