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 日期选择器样式修改无效内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vscode 插件开发 + vue的操作方法

    vscode 插件开发 + vue的操作方法

    这篇文章主要介绍了vscode 插件开发 + vue的操作方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • vue解决一个方法同时发送多个请求的问题

    vue解决一个方法同时发送多个请求的问题

    今天小编就为大家分享一篇vue解决一个方法同时发送多个请求的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • vue3+TS 实现自定义指令长按触发绑定的函数

    vue3+TS 实现自定义指令长按触发绑定的函数

    这篇文章主要介绍了vue3+TS实现自定义指令长按触发绑定的函数,文中给大家分享了编写自定义指令时遇到的几个难点,本文结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • Vue使用Three.js创建交互式3D场景的全过程

    Vue使用Three.js创建交互式3D场景的全过程

    在现代Web开发中,通过在页面中嵌入3D场景,可以为用户提供更加丰富和交互性的体验,Three.js是一款强大的3D JavaScript库,它简化了在浏览器中创建复杂3D场景的过程,本文将介绍如何在Vue中使用Three.js,创建一个简单的交互式3D场景,需要的朋友可以参考下
    2023-11-11
  • vue+scss+element-ui实现表格表头斜杠一分为三方式

    vue+scss+element-ui实现表格表头斜杠一分为三方式

    这篇文章主要介绍了vue+scss+element-ui实现表格表头斜杠一分为三方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • vue cli使用iview自定义主题遇到的坑及解决

    vue cli使用iview自定义主题遇到的坑及解决

    vue cli使用iview自定义主题遇到的坑及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • Vue实现自动检测以及版本的更新

    Vue实现自动检测以及版本的更新

    当用户在当前站点停留时间比较长,中途站点进行升级更新之后,用户如果不刷新页面就任然停留在旧的页面里,如何让用户收到一个提示,引导用户进行更新操作呢?下面给大家介绍如何站点更新如何在生产环境提示用户更新,进行页面刷新操作,核心原理其实很简单
    2023-03-03
  • 详解Vue.js基于$.ajax获取数据并与组件的data绑定

    详解Vue.js基于$.ajax获取数据并与组件的data绑定

    这篇文章主要介绍了详解Vue.js基于$.ajax获取数据并与组件的data绑定,非常具有实用价值,需要的朋友可以参考下
    2017-05-05
  • Vue实现弹出框点击空白页弹框消失效果

    Vue实现弹出框点击空白页弹框消失效果

    这篇文章主要介绍了VUE实现弹出框点击空白页弹框消失,实现方法可以在Vue中实现弹出框然后通过点击空白页面来让弹窗隐藏,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • element日期时间选择器限制时间选择功能实现(精确到小时)

    element日期时间选择器限制时间选择功能实现(精确到小时)

    文章介绍了如何使用Element UI的DateTimePicker组件来实现一个时间选择器,该选择器只能选择当前时间之后的7天,并且不能选择当前小时,感兴趣的朋友跟随小编一起看看吧
    2025-01-01

最新评论