禁用滚动文字选中变色需对滚动容器设置user-select: none;若含可交互子元素须单独设auto;marquee标签需外层包裹并设样式,不可直接作用于marquee自身。
滚动文字被选中变色是浏览器默认行为
HTML5 中用 <marquee></marquee> 或 CSS animation 实现的滚动文字,只要内容可聚焦、可交互(比如在文本节点里),用户鼠标拖拽或双击就可能触发选中态,背景色随之变蓝(或其他系统高亮色)。这不是 bug,是浏览器对可选中文本的正常响应。
禁用它的核心思路不是“阻止滚动”,而是“告诉浏览器这段文字不参与用户选中”:
-
user-select: none是最直接有效的 CSS 属性,兼容现代所有主流浏览器(Chrome 54+、Firefox 69+、Safari 15.4+、Edge 79+) - 必须作用于滚动容器本身(如
<div class="scroll-text">),而不是其父级或子级文本节点标签(已废弃但仍有使用),它内部文本无法通过 CSS 继承
<li>如果用了 <code><marquee></marquee>user-select,得额外加一层包裹并设样式
给滚动容器加 user-select: none 就够了
多数场景下,一行 CSS 就能解决。重点在于加在哪、怎么写: