【vue】【element-plus】 el-date-picker使用cell-class-name进行标记,type=year不生效解决方法

type=dete ,自定义cell-class-name打标记效果如下:

相关代码:
bash 复制代码
        <el-date-picker
            v-model="date"
            :clearable="false"
            :editable="false"
            :cell-class-name="cellClassName"
            type="date"
            format="YYYY-MM-DD"
            value-format="YYYY-MM-DD"
        >
        </el-date-picker>


	//customDateArr : ['2025-04-01', '2025-04-23','2025-04-11']

      cellClassName:(date)=>{
        let that = this
        let nDate = parseTime(date, '{y}-{m}-{d}')//日期格式化方法
        // console.log(nDate)
        if (that.customDateArr.includes(nDate)) {
          return 'custom_date_class'; // 应用自定义样式类
        }
        return ''; // 其他日期不应用样式
      },
bash 复制代码
<style lang="scss">
.custom_date_class {
  span::after{
    content: "";
    position: absolute;
    width: 6px;
    height: 6px;
    background: var(--el-color-danger);
    border-radius: 50%;
    bottom: -5px;
    left: 50%;
    transform: translateX(-50%);
  }
}
</style>
type=year相关内容:

同样方法,当type=year时候,改成对应年份匹配后发现方法没有被调用,使用官方文档中的插槽方式(已升级到最新版)也无法实现。

最后通过焦点事件和面板更换事件直接操作dom元素进行强制赋值解决!!

bash 复制代码
<div class="select-center-left date-select">
        <el-date-picker
            popper-class="custom-year-picker"
            v-model="year"
            :clearable="false"
            :editable="false"
            type="year"
            value-format="YYYY"
            @focus="handleYearPickerOpen"
            @panel-change="handleYearPickerOpen"
            :disabled-date="disabledDate"
        />

const handleYearPickerOpen = () => {
  nextTick(() => {
    const pickerPanel = document.querySelector(' .custom-year-picker');
    // console.log(pickerPanel)
    if (pickerPanel) {
      const cells = pickerPanel.querySelectorAll('td');
      cells.forEach(cell => {
        // 示例:为 2023 年的单元格添加样式
        if (cell.textContent.includes('2023')||cell.textContent.includes('2019')) {
          cell.classList.add('custom_date_class');
        }else {
       		//不匹配需手动移除,否则切换面板后上次样式依旧存在
          	cell.classList.remove('custom_date_class')
        }
      });
    }
  });
};

类型为月份相关解决:element-ui的日期选择器cellClassName无效问题

相关推荐
hh随便起个名3 小时前
力扣二叉树的三种遍历
javascript·数据结构·算法·leetcode
我是小路路呀3 小时前
element级联选择器:已选中一个二级节点,随后又点击了一个一级节点(仅浏览,未确认选择),此时下拉框失去焦点并关闭
javascript·vue.js·elementui
程序员爱钓鱼4 小时前
Node.js 编程实战:文件读写操作
前端·后端·node.js
PineappleCoder4 小时前
工程化必备!SVG 雪碧图的最佳实践:ID 引用 + 缓存友好,无需手动算坐标
前端·性能优化
JIngJaneIL4 小时前
基于springboot + vue古城景区管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
敲敲了个代码4 小时前
隐式类型转换:哈基米 == 猫 ? true :false
开发语言·前端·javascript·学习·面试·web
澄江静如练_5 小时前
列表渲染(v-for)
前端·javascript·vue.js
JustHappy5 小时前
「chrome extensions🛠️」我写了一个超级简单的浏览器插件Vue开发模板
前端·javascript·github
Loo国昌5 小时前
Vue 3 前端工程化:架构、核心原理与生产实践
前端·vue.js·架构