自己封装的目的:
使用场景:打卡,日期计划,日期选择,特别日期标志
根据自己的需求可以定制化何样式
不依赖任何第三方插件或者组件,
效果图:
1、日历组件封装
<template>
<div class="calendar">
<div class="year-month">
<div class="arrow up-page" @click="upPage"></div>
<span>{
{year}}年{
{month}}月</span>
<div class="arrow next-page" @click="nextPage"></div>
</div>
<div class="week">
<div class="item" v-for="item of weeks">{
{item}}</div>
</div>
<template v-for="line of dates">
<div class="week">
<div v-for="item of line" @click="onClick(item)" :class="['item' ,
{'current-month':month==item.month},
{'today':today==`${item.month}-${item.date}`},
{'clickFlag':clickFlag===item.timeStamp},
{'select':selectDates.find(t=> t>item.timeStamp&&t<item.timeStamp+oneDayTimeStamp)}]">{
{item.date}}</div>
</div>
</template>
</div>
</template>
<script setup>
import { watchEffect, ref, onBeforeMount