You need to enable JavaScript to run this app. 如何根据当月10/15/20号区间为元素动态应用不同类传递紧迫感
优惠活动
大模型
产品
解决方案
定价
更多

如何根据当月10/15/20号区间为元素动态应用不同类传递紧迫感

前端动态日期梯度样式实现

实现思路

完全匹配你梳理的三层时间分支逻辑,基于「当月内日期梯度」判断,为目标元素绑定对应层级类名,通过梯度化的视觉参数提升元素可见度,传递随时间临近的紧迫感。整个逻辑不需要跨年月的日期差值计算,直接取当月的日数值判断即可。

可直接复用的代码

JS判断逻辑

借助new Date().getDate()方法获取当前是当月第几日(返回值范围1-31,刚好匹配节点判断需求),和预设节点做分支匹配,给目标元素绑定对应类名:

// 选取需要动态调整样式的目标元素
const tipEl = document.querySelector('.urgency-notice');
// 提取当前日期在当月的序号
const currentMonthDay = new Date().getDate();
let levelClass = '';

if (currentMonthDay <= 10) {
  // 月初低提示层级
  levelClass = 'urgency-low';
} else if (currentMonthDay <= 15) {
  // 月中常规提示层级
  levelClass = 'urgency-mid';
} else if (currentMonthDay <= 20) {
  // 月尾高提示层级
  levelClass = 'urgency-high';
} else {
  // 20号之后的最高提示层级
  levelClass = 'urgency-max';
}

// 给目标元素更新类名,清除之前的旧层级
tipEl.className = `urgency-notice ${levelClass}`;

梯度样式实现

通过不同类名控制元素的透明度、字号、字重,实现随时间推进逐步提升视觉权重的效果:

/* 最低层级:弱提示,半透明不干扰用户浏览 */
.urgency-low {
  opacity: 0.4;
  font-size: 14px;
}
/* 中间层级:常规提示,半透明状态 */
.urgency-mid {
  opacity: 0.7;
  font-size: 16px;
}
/* 较高层级:强化提示,接近不透明 */
.urgency-high {
  opacity: 0.9;
  font-size: 18px;
  font-weight: 500;
}
/* 最高层级:满提示,完全不透明,强化视觉吸引 */
.urgency-max {
  opacity: 1;
  font-size: 20px;
  font-weight: 700;
}

实现注意事项

  • 所有判断完全基于当月相对日期,不需要手动计算每个月的总天数,不管是28天的2月还是31天的大月,10号、15号、20号的节点判断都会自动生效
  • 替换类名时如果担心旧类残留,可以先移除元素上所有以urgency-开头的类名,再绑定新的层级类,避免多层样式叠加
  • 因为判断粒度是按天计算的,不需要添加定时器定时刷新,页面初始化时执行一次判断逻辑即可,减少不必要的性能消耗

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 22:15:05