原生 默认禁选文字,无需加 user-select: none;若文字可选,说明用了 等非语义化替代方案; 等表单控件也无视该属性,仅能通过 readonly 或接受可编辑现实来处理。

button 元素默认就禁选,别乱加 user-select: none
原生 <button></button> 的文本双击不会被选中,这是浏览器默认行为——不是靠 CSS 实现的,而是内置逻辑。你给它加 user-select: none 不仅多余,还可能干扰可访问性(比如屏幕阅读器或键盘导航时的焦点样式)。如果发现按钮文字能被选中,大概率是它被替换成 <div> 或 <code><span></span> 模拟的,而不是真 <button></button>。
用 <button></button> 就别碰 CSS 禁选规则
只要用标准语义化写法:<button type="button">提交</button>,就不用任何额外样式。它天然支持:
- 鼠标双击不选中文本
- Ctrl+A 也不会选中它(因为它是替换元素,不在文档文本流中)
- 键盘 Tab 聚焦、Enter 触发,无障碍友好
- 所有现代浏览器(Chrome 54+、Firefox 69+、Safari 14+、Edge 12+)行为一致
别为了“统一风格”把 <button></button> 改成 <div class="btn"> 再补 <code>user-select: none——这是倒退。
如果非要用 <div> 模拟按钮,必须手动补全兼容写法<p>这时候才需要 CSS 控制选中行为,但只写 <code>user-select: none 一定失效。要一次性写全:
Article To Html
文章转信息图。将文章/笔记转化为手机可读的 HTML 信息图,自动匹配视觉风格。触发场景:文章转图、笔记转图、信息图、转小红书图、做张图、可视化这篇文章、文生图。
下载
.fake-btn {
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
-webkit-touch-callout: none; /* iOS 长按菜单 */
}
文章转信息图。将文章/笔记转化为手机可读的 HTML 信息图,自动匹配视觉风格。触发场景:文章转图、笔记转图、信息图、转小红书图、做张图、可视化这篇文章、文生图。
注意:
- -ms-user-select: none 已淘汰,Edge 102+ 完全支持标准语法
- 别对整个容器设该类然后指望子元素继承——user-select 不继承,<span></span> 或图标字体仍可被选
- 如果里面嵌了 <input> 或 <textarea></textarea>,它们照样能选,得单独处理(见下一条)
<input type="button"> 和 <input type="submit"> 怎么办
这类表单控件的文本选择行为由浏览器原生控制,user-select: none 对它完全无效——这不是 bug,是规范。真正可用的解法只有两个:
- 加
readonly属性:既阻止编辑,也自然失去文本选择焦点;再配cursor: default和浅灰背景强化不可操作感 - 保持可编辑?那就接受现实:现代浏览器没有标准方式只禁选不禁编,
user-select在这里就是摆设 - 绝对别用
pointer-events: none——它会让输入框无法聚焦、无法光标定位、无法键盘输入,体验比“能选中”还差










