纯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 弹性布局快速入门
Jun 06 HTML / CSS
可自定义箭头样式的CSS3气泡提示框
Mar 16 HTML / CSS
5分钟让你掌握css3阴影、倒影、渐变小技巧(小编推荐)
Aug 15 HTML / CSS
html5 canvas-1.canvas介绍(hello canvas)
Jan 07 HTML / CSS
Html5游戏开发之乒乓Ping Pong游戏示例(一)
Jan 21 HTML / CSS
HTML5梦幻之旅——炫丽的流星雨效果实现过程
Aug 06 HTML / CSS
深入浅析HTML5中的SVG
Nov 27 HTML / CSS
详解HTML5 Canvas绘制时指定颜色与透明度的方法
Mar 25 HTML / CSS
完美解决IE8下不兼容rgba()的问题
Mar 31 HTML / CSS
html5 外链式实现加减乘除的代码
Sep 04 HTML / CSS
Html5实现首页动态视频背景的示例代码
Sep 25 HTML / CSS
CSS 制作波浪效果的思路
May 18 HTML / CSS
CSS实现单选折叠菜单功能
CSS 一行代码实现头像与国旗的融合
如何利用 CSS Overview 面板重构优化你的网站
基于HTML十秒做出淘宝页面
css 边框添加四个角的实现代码
HTML基础详解(下)
Oct 16 #HTML / CSS
HTML基础详解(上)
Oct 16 #HTML / CSS
You might like
聊天室php&amp;mysql(二)
2006/10/09 PHP
PHP 输出URL的快捷方式示例代码
2013/09/22 PHP
Zend Framework框架实现类似Google搜索分页效果
2016/11/25 PHP
用javascript实现点击链接弹出&quot;图片另存为&quot;而不是直接打开
2007/08/15 Javascript
JS对话框_JS模态对话框showModalDialog用法总结
2014/01/11 Javascript
jquery序列化表单去除指定元素示例代码
2014/04/10 Javascript
改变状态栏文字的js代码
2014/06/13 Javascript
Visual Studio中js调试的方法图解
2014/06/30 Javascript
详细介绍jQuery.outerWidth() 函数具体用法
2015/07/20 Javascript
开启Javascript中apply、call、bind的用法之旅模式
2015/10/28 Javascript
AngularJS 依赖注入详解及示例代码
2016/08/17 Javascript
微信小程序 canvas API详解及实例代码
2016/10/08 Javascript
一步步教你利用webpack如何搭一个vue脚手架(超详细讲解和注释)
2018/01/08 Javascript
JavaScript深拷贝和浅拷贝概念与用法实例分析
2018/06/07 Javascript
深入理解Vue.js轻量高效的前端组件化方案
2018/12/10 Javascript
Vue.js组件高级特性实例详解
2018/12/24 Javascript
vue组件命名和props命名代码详解
2019/09/01 Javascript
加速vue组件渲染之性能优化
2020/04/09 Javascript
js实现上传按钮并显示缩略图小轮子
2020/05/04 Javascript
python检测服务器是否正常
2014/02/16 Python
python引用DLL文件的方法
2015/05/11 Python
Python中的函数作用域
2018/05/07 Python
在Python中实现替换字符串中的子串的示例
2018/10/31 Python
python学生管理系统学习笔记
2019/03/19 Python
Python批量启动多线程代码实例
2020/02/18 Python
python批量修改xml属性的实现方式
2020/03/05 Python
python3+selenium获取页面加载的所有静态资源文件链接操作
2020/05/04 Python
Python基础教程(一)——Windows搭建开发Python开发环境
2020/07/20 Python
Windows 平台做 Python 开发的最佳组合(推荐)
2020/07/27 Python
美国著名珠宝品牌之一:Jared The Galleria Of Jewelry
2016/10/01 全球购物
次世代生活态度:Hypebeast
2018/07/05 全球购物
教师应聘自荐信范文
2014/03/14 职场文书
喷漆工的岗位职责
2014/03/17 职场文书
五星级酒店前台接待岗位职责
2015/04/02 职场文书
酒店收银员岗位职责
2015/04/07 职场文书
开发者首先否认《遗弃》被取消的传言
2022/04/11 其他游戏