CSS禁止选中文字的多方面详解

发布时间:2023-05-20

一、基本概述

在Web页面中,我们经常需要禁止用户选中文字。有时是为了保护版权,有时是为了提供更好的用户体验,但无论出于何种原因,我们都可以使用CSS实现禁止选中文字。下面我们来看看如何实现。

二、CSS属性user-select

CSS3引入了一个名为user-select的属性,可以通过它来实现禁止选中文字。该属性值有以下几种:

user-select: auto;    /* 默认值,允许选中 */
user-select: none;    /* 完全禁止选中 */
user-select: text;    /* 允许选中文本 */
user-select: contain; /* 允许选中非文本内容 */

如下代码实现禁止选中整个网页:

body {
  user-select: none;
}

三、CSS属性pointer-events

除了使用user-select属性禁止选中文字,还可以使用pointer-events属性来达到同样的效果。这个属性允许我们指定在哪些情况下元素会对用户的鼠标事件作出响应。该属性值有以下几种:

pointer-events: auto;      /* 默认值,元素对鼠标事件作出响应 */
pointer-events: none;      /* 元素对鼠标事件不作响应 */
pointer-events: visible;   /* 结合opacity:0.0时,元素对鼠标事件不作响应 */
pointer-events: hidden;    /* 元素对鼠标事件不作响应,但是子元素可以 */
pointer-events: all;       /* 元素和子元素均可以作出响应 */

我们可以在需要禁止选中的元素上加上pointer-events: none;,或者在作用于整个网页时,使用如下代码:

* {
  pointer-events: none;
}

四、CSS属性-webkit-user-select

前面讲到的user-select属性在WebKit/Blink内核的浏览器中有一个私有前缀:-webkit-user-select。该属性方式和user-select完全相同,两者的效果一样。因此我们可以象下面这样来禁止选中文字:

body {
  -webkit-user-select: none;
}

五、设置CSS属性cursor

有时,我们需要在禁止选中文字的元素上显示一个类似于禁止手的光标,这时就需要使用cursor属性。该属性用于定义鼠标指针在某个区域的样式。例如,我们可以在需要禁止选中文字的元素上添加如下CSS代码:

#no-select {
  cursor: not-allowed;
}

总结

在本文中,我们详细介绍了如何使用CSS实现禁止选中文字。用户可以使用user-select属性、pointer-events属性、 -webkit-user-select私有属性以及设置cursor属性等方式来达到目的。