纯CSS如何禁止用户复制网页的内容


Posted in HTML / CSS onNovember 01, 2021

前言

在敲打自己的个人博客时,在博客的详情页,对于不同的内容,我是想有不同的复制方式的。例如代码块我就想读者单击就可以复制,这样方便读者本地调试,而对于文字描述部分,希望可以不允许读者复制。作为一个坚定的能用CSS绝不上JS的极端份子,我最终找到了CSS3中的user-select。

兼容性

纯CSS如何禁止用户复制网页的内容

user-select

用来控制用户是否可以选中文本。全选,部分选中。

全选

在很多时候用户希望的可能是一次性复制完整的内容,例如一段代码,密码,一些key。
user-select:all :  让用户可以单击选中元素。
这里我们演示了三个不同的Html标签下的效果。

h2 {
        user-select: all;
      }

      code {
        user-select: all;
        width: 500px;
        display: block;
        padding: 10px;
        color: #31808c;
        background-color: #f5f4ef;
      }

      div {
        user-select: all;
      }
<h2>点击试试看</h2>
    <pre>
        <code>
        const num = 1;

        const result = (function () {
          delete num;
          return num;
        })();
        
        console.log(result);
        </code>
    </pre>
    <p>
      const num = 1; const result = (function () { delete num; return num; })();
      console.log(result);
    </p>

纯CSS如何禁止用户复制网页的内容

不过all同样存在一个令人尴尬的缺点,只要你设定了all,那你就不能选中部分内容。

禁止选中

对于网页中的元素,可以使用user-select: none; 禁止用户选中内容。

部分选中

为啥会有这个说法吗,对于通常的网页,我们是可以选择特定的内容的。例如在下面的页面中,我们就可以部分选择内容,

纯CSS如何禁止用户复制网页的内容

但是这里的标题的部分,主要是指在对立面无法选中的元素。例如html中有这样一个标签sup,这个标签主要是用来给元素添加角标。

<p>我后面有个角标<sup>1</sup>我前面有角标</p>

当你想复制这段文本的时候:我后面有个角标1我前面有角标,这个角标也会被复制下来。
此时我们就需要针对角标设置,这样设置还可以保证当你p标签是user-select:all的时候,复制也会忽略角标!

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

纯CSS如何禁止用户复制网页的内容

扩展:设置选中式样

CSS提供了::selection`伪元素来设置文本选择的样式
您可以通过定位::selection伪元素来设置文本选择的样式。但是,只有下面的几个属性可以设置:

color
background-color
cursor
caret-color
outline and its longhands
text-decoration and its associated properties
text-emphasis-color (en-US)
text-shadow

例如

p::selection {
  color: #fffaa5;
  background-color: #f38630;
  text-shadow: 2px 2px #31808c;
}

选中后的效果如下:

 纯CSS如何禁止用户复制网页的内容

到此这篇关于纯CSS如何禁止用户复制网页的内容的文章就介绍到这了,更多相关CSS禁止用户复制内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

 
HTML / CSS 相关文章推荐
css3 box-shadow阴影(外阴影与外发光)图示讲解
Aug 11 HTML / CSS
一款利用纯css3实现的超炫3D表单的实例教程
Dec 01 HTML / CSS
CSS3圆角和渐变2种常用功能详解
Jan 06 HTML / CSS
10分钟理解CSS3 Grid布局
Dec 20 HTML / CSS
CSS 3.0 结合video视频实现的创意开幕效果
Jun 01 HTML / CSS
html5+css3之制作header实例与更新
Dec 21 HTML / CSS
详解Html5 Canvas画线有毛边解决方法
Mar 01 HTML / CSS
Html5新标签datalist实现输入框与后台数据库数据的动态匹配
May 18 HTML / CSS
uniapp+Html5端实现PC端适配
Jul 15 HTML / CSS
AmazeUI底部导航栏与分享按钮的示例代码
Aug 18 HTML / CSS
AmazeUI在模态框中嵌入表单形成模态输入框
Aug 20 HTML / CSS
纯CSS实现hover图片pop-out弹出效果的实例代码
Apr 16 HTML / CSS
CSS实现单选折叠菜单功能
CSS 一行代码实现头像与国旗的融合
如何利用 CSS Overview 面板重构优化你的网站
基于HTML十秒做出淘宝页面
css 边框添加四个角的实现代码
HTML基础详解(下)
Oct 16 #HTML / CSS
HTML基础详解(上)
Oct 16 #HTML / CSS
You might like
让PHP支持断点续传的源码
2010/05/16 PHP
php环境套包 dedeampz 伪静态设置示例
2014/03/26 PHP
ThinkPHP3.1之D方法实例详解
2014/06/20 PHP
PHP中单引号与双引号的区别分析
2014/08/19 PHP
PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
2019/04/16 PHP
JavaScript高级程序设计 阅读笔记(二十一) JavaScript中的XML
2012/09/14 Javascript
javascript内置对象arguments详解
2014/03/16 Javascript
通过实例理解javascript中没有函数重载的概念
2015/06/03 Javascript
详解AngularJS中的依赖注入机制
2015/06/17 Javascript
JavaScript在网页中画圆的函数arc使用方法
2015/11/13 Javascript
Jquery表单验证失败后不提交的解决方法
2016/10/18 Javascript
Jquery通过ajax请求NodeJS返回json数据实例
2016/11/08 NodeJs
MUI 上拉刷新/下拉加载功能实例代码
2017/04/13 Javascript
Vuex的基本概念、项目搭建以及入坑点
2018/11/04 Javascript
Vue实现浏览器打印功能的代码
2020/04/17 Javascript
vue-cli或vue项目利用HBuilder打包成移动端app操作
2020/07/29 Javascript
详解ES6 中的Object.assign()的用法实例代码
2021/01/11 Javascript
python 实时遍历日志文件
2016/04/12 Python
Python3学习笔记之列表方法示例详解
2017/10/06 Python
python函数式编程学习之yield表达式形式详解
2018/03/25 Python
python图像处理模块Pillow的学习详解
2019/10/09 Python
用 Python 制作地球仪的方法
2020/04/24 Python
Keras之fit_generator与train_on_batch用法
2020/06/17 Python
使用Python Tkinter实现剪刀石头布小游戏功能
2020/10/23 Python
Python绘制数码晶体管日期
2021/02/19 Python
英国乡村时尚和宠物用品专家:Pet & Country
2018/07/02 全球购物
香港百佳网上超级市场:PARKNSHOP.com
2020/06/10 全球购物
武汉英思工程科技有限公司&ndash;ORACLE面试测试题目
2012/04/30 面试题
经典的班主任推荐信
2013/10/28 职场文书
函授毕业生自我鉴定
2013/11/06 职场文书
加工操作管理制度
2014/01/19 职场文书
关于感恩的演讲稿400字
2014/08/26 职场文书
教师学期末个人总结
2015/02/13 职场文书
2016年父亲节寄语
2015/12/04 职场文书
NGINX 权限控制文件预览和下载的实现原理
2022/01/18 Servers
oracle设置密码复杂度及设置超时退出的功能
2022/06/28 Oracle