标签在现代浏览器中完全不闪烁,chrome、firefox、safari、edge均不支持,仅被静默解析为普通内联元素;唯一可靠方案是css @keyframes动画配合step-end实现硬切换式闪烁。

BLINK 标签在现代浏览器中根本不会闪烁
直接说结论:<blink></blink> 是 Netscape 4 时代的废弃标签,Chrome、Firefox、Safari、Edge 全部不支持。写 <blink>Hello</blink>,文字只会安静地显示,毫无闪烁效果,控制台也不会报错——它被当成未知内联元素静默处理。
CSS animation 是当前唯一可靠方案
用 @keyframes + animation 实现闪烁,兼容性好(IE10+),行为可控:
<style>
@keyframes blink {
0%, 100% { opacity: 1; }
50% { opacity: 0; }
}
.blinking {
animation: blink 1s step-end infinite;
}
</style><p class="blinking">这段文字会闪烁</p>
-
step-end关键:避免淡入淡出,实现“硬切换”式闪烁 - 动画时长(如
1s)太短易引发视觉疲劳,建议 ≥ 0.8s - 部分屏幕刷新率高或开启平滑滚动时,可能因帧率对齐问题导致闪烁不稳
JavaScript 控制闪烁启停更灵活
若需响应用户操作(比如点击开关闪烁),CSS 方案就得配合 JS 切换 class:
<button onclick="toggleBlink()">切换闪烁</button>
<p id="target">可控制的文字</p>
<script>
function toggleBlink() {
const el = document.getElementById('target');
el.classList.toggle('blinking');
}
</script>
- 不要用
setInterval频繁 togglevisibility或display:触发重排,性能差,且无法与 CSS 过渡协同 - 禁用闪烁时,确保移除 class 或设
animation: none,否则动画可能残留 - 无障碍提示:闪烁内容需提供关闭选项,否则可能触发光敏性癫痫风险(WCAG 2.3.2)
为什么别碰
有人尝试用 marquee、contenteditable 模拟或引入旧版 polyfill,都不现实:
-
<marquee></marquee>同样被主流浏览器弃用,且滚动 ≠ 闪烁 - 所谓 “blink polyfill” 实际是用 JS 注入 CSS 动画,绕路又增加 bundle 体积
- 某些 Electron 或 WebView 嵌入场景若强制启用
<blink></blink>,依赖的是底层 Chromium 的私有 flag(如--enable-blink-features=LegacyBlinkFeatures),不可靠、不跨平台
真正要做的,就是忘掉 <blink></blink> 这个词,老老实实用 @keyframes 写两行 CSS —— 简单、标准、能进生产环境。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











