当前位置:首页 > VUE

vue实现年历标记

2026-03-06 17:10:23VUE

实现年历标记的步骤

数据准备

创建一个数组存储需要标记的日期,每个日期对象包含日期和标记信息。

markedDates: [
  { date: '2023-10-01', mark: 'holiday' },
  { date: '2023-10-15', mark: 'meeting' }
]

日历组件渲染

使用v-for循环渲染月份,在每个月内部渲染日期格子。比较当前日期是否在标记数组中。

<div v-for="month in months" :key="month">
  <div class="month-title">{{ month }}</div>
  <div class="days-grid">
    <div 
      v-for="day in getDaysInMonth(month)" 
      :key="day"
      :class="{ 'marked': isMarked(month, day) }"
    >
      {{ day }}
    </div>
  </div>
</div>

标记判断方法

实现isMarked方法检查日期是否被标记,格式化日期与标记数组比较。

methods: {
  isMarked(month, day) {
    const dateStr = `${this.year}-${month}-${day}`;
    return this.markedDates.some(item => item.date === dateStr);
  }
}

样式处理

为标记日期添加特殊样式,通过CSS类名控制视觉效果。

.marked {
  background-color: #ffeb3b;
  position: relative;
}
.marked::after {
  content: '';
  position: absolute;
  bottom: 2px;
  left: 50%;
  width: 6px;
  height: 6px;
  background: red;
  border-radius: 50%;
  transform: translateX(-50%);
}

月份导航

添加年份和月份切换功能,使用计算属性动态生成日历数据。

vue实现年历标记

computed: {
  months() {
    return Array.from({length: 12}, (_, i) => i + 1);
  }
}

完整示例

export default {
  data() {
    return {
      year: new Date().getFullYear(),
      markedDates: [
        { date: '2023-10-01', mark: 'holiday' },
        { date: '2023-10-15', mark: 'meeting' }
      ]
    }
  },
  methods: {
    getDaysInMonth(month) {
      return new Date(this.year, month, 0).getDate();
    },
    isMarked(month, day) {
      const dateStr = `${this.year}-${month}-${day}`;
      return this.markedDates.some(item => item.date === dateStr);
    }
  }
}

注意事项

  • 日期格式需保持一致,建议使用YYYY-MM-DD格式
  • 跨年处理需要考虑年份切换时的数据更新
  • 大量日期标记时建议使用对象或Map存储提高查找效率
  • 移动端需考虑触摸事件和响应式布局

标签: 年历标记
分享给朋友:

相关文章

vue实现检索内容标记

vue实现检索内容标记

实现检索内容高亮标记的方法 在Vue中实现检索内容的高亮标记,可以通过以下方法实现: 使用v-html指令和正则表达式替换 创建一个方法,用于将匹配的检索词替换为带有高亮样式的HTML标签。在模板…

vue实现文本标记

vue实现文本标记

Vue 实现文本标记的方法 在 Vue 中实现文本标记功能,可以通过多种方式完成,以下是几种常见的方法: 使用 v-html 指令 通过 v-html 指令可以直接将 HTML 字符串渲染到 DOM…

java标记如何使用

java标记如何使用

Java标记的使用方法 Java标记(Label)用于标识代码块,通常与break或continue语句配合使用,控制循环或条件语句的跳转。以下是具体使用方法: 基本语法 标记的语法是在标识…

java如何标记注解

java如何标记注解

Java 注解标记方法 Java 中标记注解(Marker Annotation)是一种没有成员的注解,仅用于标记特定元素。以下是定义和使用标记注解的详细方法: 定义标记注解 使用 @interfa…

java如何标记整数

java如何标记整数

标记整数的方法 在Java中,标记整数可以通过多种方式实现,具体取决于应用场景和需求。以下是几种常见的方法: 使用注解 Java中的注解(Annotation)可以用于标记整数,为其附加元数据。例如…

java 如何标记循环

java 如何标记循环

循环标记方法 在Java中,可以使用标签(label)来标记循环,以便在嵌套循环中更精确地控制循环的流程。标签通常用于break或continue语句中,指定跳出或继续哪个循环。 标签语法 标签的语…