el-calendar实现自定义展示效果

最终实现的日历效果

vue3页面已实现,可直接拿来用,背景需要自定义,这里把日历背景色设为透明了

js 复制代码
<template>
    <el-calendar ref="calendar" v-model="data.value">
        <template #header="{ date }">
            <div class="flex-between w100">
                <div class="flex-start">
                    <!-- 上一年 -->
                    <el-icon color="#445cbf" @click="selectDate('prev-year')"><DArrowLeft /></el-icon>
                    <!-- 上一月 -->
                    <el-icon color="#445cbf" @click="selectDate('prev-month')"><ArrowLeft /></el-icon>
                </div>
                <span @click="selectDate('today')">{{ date }}</span>
                <div class="flex-start">
                    <!-- 下个月 -->
                    <el-icon color="#445cbf" @click="selectDate('next-month')"><ArrowRight /></el-icon>
                    <!-- 下一年 -->
                    <el-icon color="#445cbf" @click="selectDate('next-year')"><DArrowRight /></el-icon>
                </div>
            </div>
        </template>
    </el-calendar>
</template>
<script setup lang="ts">
import { reactive,ref } from "vue";
import type { CalendarDateType, CalendarInstance } from 'element-plus'
import { DArrowLeft, ArrowLeft, ArrowRight, DArrowRight } from '@element-plus/icons-vue'

const calendar = ref<CalendarInstance>()
const selectDate = (val: CalendarDateType) => {
  if (!calendar.value) return
  calendar.value.selectDate(val)
}
const data = reactive({
  value: new Date(),
});
</script>
<style lang="scss" scoped>

</style>
<style lang="scss">
.el-calendar{
    background: transparent;
    font-size: 14px;
}
.el-calendar-table .el-calendar-day{
    height: 35px;
    text-align: center;
}
.el-calendar-table thead th{
    color:#999;
}
.el-calendar-table tr td:first-child,.el-calendar-table tr:first-child td{
    border:0;
}

.el-calendar-table td{
    border:0;
}
.el-calendar-table td.is-today{
    background: #456cef;
    border-radius: 10px;
    color:#fff;
}
.el-calendar-table td.is-selected,.el-calendar-table .el-calendar-day:hover{
    border-radius: 10px;
}
</style>
相关推荐
烛阴3 小时前
Lua中的三个点(...):解锁函数参数的无限可能
前端·lua
拉不动的猪3 小时前
webpack分包优化简单分析
前端·vue.js·webpack
德莱厄斯4 小时前
没开玩笑,全框架支持的 dialog 组件,支持响应式
前端·javascript·github
非凡ghost4 小时前
Affinity Photo(图像编辑软件) 多语便携版
前端·javascript·后端
非凡ghost4 小时前
VideoProc Converter AI(视频转换软件) 多语便携版
前端·javascript·后端
endlesskiller4 小时前
3年前我不会实现的,现在靠ai辅助实现了
前端·javascript
用户904706683574 小时前
commonjs的本质
前端
Sailing4 小时前
5分钟搞定 DeepSeek API 配置:从配置到调用一步到位
前端·openai·ai编程
麦麦大数据4 小时前
F035 vue+neo4j中医南药药膳知识图谱可视化系统 | vue+flask
vue.js·知识图谱·neo4j·中医·中药·药膳·南药