纯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 3D制作实战案例分析
Sep 18 HTML / CSS
CSS3用@font-face实现自定义英文字体
Sep 23 HTML / CSS
css实例教程 一款纯css3实现的超炫动画背画特效
Nov 05 HTML / CSS
css3的过滤效果简单实例
Aug 03 HTML / CSS
css3中单位px,em,rem,vh,vw,vmin,vmax的区别及浏览器支持情况
Dec 06 HTML / CSS
纯CSS3实现扇形动画菜单(简化版)实例源码
Jan 17 HTML / CSS
CSS3田字格列表的样式编写方法
Nov 22 HTML / CSS
HTML5 Web存储方式的localStorage和sessionStorage进行数据本地存储案例应用
Dec 09 HTML / CSS
HTML5 Canvas自定义圆角矩形与虚线示例代码
Aug 02 HTML / CSS
【HTML5】Canvas绘制简单图片教程
May 13 HTML / CSS
Canvas globalCompositeOperation
Dec 18 HTML / CSS
HTML 里 img 元素的 src 和 srcset 属性的区别详解
May 21 HTML / CSS
CSS实现单选折叠菜单功能
CSS 一行代码实现头像与国旗的融合
如何利用 CSS Overview 面板重构优化你的网站
基于HTML十秒做出淘宝页面
css 边框添加四个角的实现代码
HTML基础详解(下)
Oct 16 #HTML / CSS
HTML基础详解(上)
Oct 16 #HTML / CSS
You might like
php设计模式 Chain Of Responsibility (职责链模式)
2011/06/26 PHP
codeigniter使用技巧批量插入数据实例方法分享
2013/12/31 PHP
php教程之phpize使用方法
2014/02/12 PHP
Laravel 4 初级教程之Pages、表单验证
2014/10/30 PHP
php中字符查找函数strpos、strrchr与strpbrk用法
2014/11/18 PHP
PHP 验证登陆类分享
2015/03/13 PHP
PHP验证类的封装与使用方法详解
2019/01/10 PHP
PDO::inTransaction讲解
2019/01/28 PHP
如何通过Apache在本地配置多个虚拟主机
2020/07/29 PHP
Mootools 1.2教程 Tooltips
2009/09/15 Javascript
Javascript 面向对象之重载
2010/05/04 Javascript
Ajax同步与异步传输的示例代码
2013/11/21 Javascript
利用window.name实现windowStorage代码分享
2014/01/02 Javascript
javascript实现数字验证码的简单实例
2014/02/10 Javascript
jQuery不使用插件及swf实现无刷新文件上传
2014/12/08 Javascript
基于jQuery实现的仿百度首页滑动选项卡效果代码
2015/11/16 Javascript
jQuery增加与删除table列的方法
2016/03/01 Javascript
javascript html5移动端轻松实现文件上传
2020/03/27 Javascript
微信小程序 网络API 上传、下载详解
2016/11/09 Javascript
Node.js设置CORS跨域请求中多域名白名单的方法
2017/03/28 Javascript
详解vue-router和vue-cli以及组件之间的传值
2017/07/04 Javascript
vue 表单验证按钮事件交由父组件触发的方法
2018/12/17 Javascript
使用react context 实现vue插槽slot功能
2019/07/18 Javascript
vant实现购物车功能
2020/06/29 Javascript
JS删除对象中某一属性案例详解
2020/09/08 Javascript
几个提升Python运行效率的方法之间的对比
2015/04/03 Python
使用Python下的XSLT API进行web开发的简单教程
2015/04/15 Python
纯python实现机器学习之kNN算法示例
2018/03/01 Python
python保留小数位的三种实现方法
2020/01/07 Python
HTML5 SEO优化的一些建议
2020/08/27 HTML / CSS
军训自我鉴定200字
2014/02/13 职场文书
开学典礼演讲稿
2014/05/23 职场文书
乡镇精神文明建设汇报材料
2014/08/15 职场文书
违纪检讨书
2015/01/27 职场文书
环保建议书作文300字
2015/09/14 职场文书
使用Django框架创建项目
2022/06/10 Python