You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular Material Calendar在Safari中点击任意日期后今日日期始终高亮,如何修复?

Angular Material Calendar Safari 下今日日期异常高亮问题

问题描述

点击Angular Material Calendar上的任意日期时,今日的日期方块会被高亮显示——哪怕它处于其他月份也会出现这个情况。在官方文档示例中也能复现该现象,所以我怀疑这是特性而非bug,但这个问题仅出现在Safari浏览器中,本质是点击日历后今日日期意外获取了焦点导致的高亮。

复现代码

模板代码

<mat-card class="demo-inline-calendar-card">
  <mat-calendar [(selected)]="selected"></mat-calendar>
</mat-card>

组件代码

import {Component} from '@angular/core';

/** @title Datepicker inline calendar example */
@Component({
  selector: 'datepicker-inline-calendar-example',
  templateUrl: 'datepicker-inline-calendar-example.html',
  styleUrls: ['datepicker-inline-calendar-example.css'],
})
export class DatepickerInlineCalendarExample {
  selected: Date | null;
}

解决方法

最简洁的方案是通过自定义CSS覆盖Safari下的焦点样式,移除今日日期的异常高亮:

通用CSS修复

/* 针对日历中今日日期的元素,移除焦点高亮 */
.mat-calendar-body-today:focus {
  outline: none;
  /* 保留原本今日日期的背景样式,避免移除焦点后样式丢失 */
  background-color: rgba(0, 0, 0, 0.04);
}

仅针对Safari的精准修复

如果不想影响其他浏览器的默认行为,可以通过浏览器特性检测,只在Safari中生效:

@media not all and (min-resolution:.001dpcm) { 
  @supports (-webkit-appearance:none) {
    .mat-calendar-body-today:focus {
      outline: none;
      background-color: rgba(0, 0, 0, 0.04);
    }
  }
}

内容的提问来源于stack exchange,提问作者Balto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 07:50:18