有日记日期标记:小圆点 + 加粗字重 + 点击跳转

前言

在日历中,标记有日记的日期可以帮助用户快速定位已记录的内容。"海风日记"的日历页通过小圆点、加粗字重和点击跳转三种方式,让有日记的日期一目了然。

本文将从源码出发,深入讲解有日记日期的视觉标记和交互逻辑。


一、有日记日期标记

1.1 源码

typescript 复制代码
// 有日记小圆点
if (this.hasDiary(day) && !this.isToday(day)) {
  Circle().width(4).height(4).fill(COLOR_PRIMARY)
}

// 加粗字重
.fontWeight(
  this.hasDiary(day) || this.isToday(day) ? FontWeight.Bold : FontWeight.Normal
)

// 点击跳转
.onClick(() => {
  if (this.hasDiary(day)) {
    router.pushUrl({ url: 'pages/diary/DiaryDetailPage' })
  }
})

1.2 三种标记方式

标记方式 实现 效果
小圆点 4px Circle 日期下方橙色小点
加粗字重 FontWeight.Bold 日期数字加粗
点击跳转 router.pushUrl 点击进入日记详情

二、有日记日期的判断

typescript 复制代码
private diaryDates: Set<string> = new Set(
  MOCK_DIARIES.map(d => d.date)
)

private hasDiary(day: number): boolean {
  const key = `${this.curYear}-${String(this.curMonth+1).padStart(2,'0')}-${String(day).padStart(2,'0')}`
  return this.diaryDates.has(key)
}

三、月统计面板

typescript 复制代码
Row({ space: 16 }) {
  Column({ space: 4 }) {
    Text(MOCK_DIARIES.length.toString())
      .fontSize(22).fontColor(COLOR_PRIMARY).fontWeight(FontWeight.Bold)
    Text('本月日记').fontSize(11).fontColor(COLOR_TEXT_SECONDARY)
  }

  Divider().vertical(true).height(30).color(COLOR_DIVIDER)

  Column({ space: 4 }) {
    Text('7').fontSize(22).fontColor(COLOR_AMBER).fontWeight(FontWeight.Bold)
    Text('连续天数').fontSize(11).fontColor(COLOR_TEXT_SECONDARY)
  }

  Divider().vertical(true).height(30).color(COLOR_DIVIDER)

  Column({ space: 4 }) {
    Text('😊').fontSize(22)
    Text('主要心情').fontSize(11).fontColor(COLOR_TEXT_SECONDARY)
  }
}

四、常见问题

4.1 小圆点与其他标记重叠

问题:今日的橙色圆底和小圆点重叠。

解决方案 :使用 !this.isToday(day) 条件,今日不显示小圆点。


总结

本文通过"海风日记"的日历页,深入讲解了有日记日期的标记:

  1. 小圆点:4px 橙色圆点
  2. 加粗字重:FontWeight.Bold
  3. 点击跳转:router.pushUrl
  4. 月统计面板:本月日记数、连续天数、主要心情

下一篇文章将深入讲解 月份切换与年份导航,敬请期待。

如果这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注🔔,你的支持是我持续创作的动力!


相关资源:

相关推荐
jay神6 分钟前
【计算机毕业设计】基于Spring Boot的宠物领养管理系统
java·spring boot·后端·vue·毕业设计·宠物
2601_9620566018 分钟前
可造成敏感信息泄露!Spring Boot之Actuator信息泄露漏洞三种利用方式总结
java·spring boot·后端
码视野26 分钟前
基于 Spring Boot + Vue3 的【城市道路地下空洞塌陷微动传感监测与路面脱空沉降预警中台】设计与实现(含PRD/三端高保真源码/大屏)
vue.js·spring boot·后端
2601_962181962 小时前
Spring boot从0到1 - day01
java·spring boot·后端
码视野3 小时前
基于 Spring Boot + Vue3 的【智慧公厕微负压排风除臭与客流人感空间占用导引中台】设计与实现(含PRD/三端高保真源码/大屏)
前端·vue.js·人工智能·spring boot·后端
ERD Online3 小时前
Cursor 连上 MCP:读一张 ER 图,提交一版建议
数据库·后端·开源·cursor·mcp
思考着亮3 小时前
4.依赖注入_Depends用法_四大应用场景_Yield生成器原理.
后端
思考着亮3 小时前
3.全局中间件_洋葱模型执行机制_跨域CORS配置
后端
思考着亮4 小时前
5.数据库ORM_连接池_自动事务_增删改查高级语法与字典解包
后端
叫我:松哥4 小时前
基于flask仿小米商城管理系统,使用flask开的一个商场网站
数据库·后端·python·flask