写文章的时候,作为一名专业的码农,经常会在文章中粘贴一些代码。有的时候代码块比较长,在后期使用中需要复制这段代码就比较麻烦

参考其他比较专业的博客系统,都在代码块上有一个复制代码的按钮。用来快速复制整个代码块的代码。于是我也想给我的博客增加一个这个功能。

注:chrome测试通过。其他浏览器未进行测试。

实现思路:

1、在页面加载完成之后,使用js给每个pre标签增加一个按钮“复制代码”

2、给按钮增加点击事件,点击事件的功能就是复制代码块的内容

实现代码:

css部分,btn-pre-copy是pre标签中使用js增加的“复制代码”按钮。css的作用是让他显示在pre标签的右上角。这里要注意pre标签和按钮中position属性

.content pre{position: relative;background-color: #f5f5f5;border: 1px solid #ccc;border-radius: 4px;padding: 10px;
}
pre .btn-pre-copy{-webkit-user-select: none;-moz-user-select: none;-ms-user-select: none;-khtml-user-select: none;user-select: none;position: absolute;top: 10px;right: 12px;font-size: 12px;line-height: 1;cursor: pointer;color: hsla(0,0%,54.9%,.8);transition: color .1s;
}

js部分,js部分主要是给pre标签增加按钮和实现拷贝部分,我这里拷贝部分的实现是先实例化一个临时的节点textarea,然后吧pre的内容设置进这个临时节点,然后选中内容进行复制,最后销毁这个节点。具体参考代码。js部分有依赖于jqueryhttp://www.17wansf.com/thread-9096235-1-1.html
http://www.17wansf.com/thread-9093891-1-1.html
http://www.17wansf.com/thread-9090353-1-1.html
http://www.17wansf.com/thread-9089885-1-1.html
http://www.17wansf.com/thread-9090353-1-1.html
http://www.17wansf.com/thread-9165243-1-1.html
http://www.17wansf.com/thread-9162850-1-1.html
http://www.17wansf.com/thread-9149928-1-1.html
http://www.17wansf.com/thread-9145741-1-1.html
http://www.17wansf.com/thread-9143579-1-1.html
http://www.17wansf.com/thread-9137113-1-1.html
http://www.17wansf.com/thread-9124554-1-1.html
http://www.17wansf.com/thread-9123085-1-1.html
http://www.17wansf.com/thread-9120408-1-1.html
http://www.17wansf.com/thread-9118605-1-1.html
http://www.17wansf.com/thread-9117571-1-1.html
http://www.17wansf.com/thread-9113544-1-1.html
http://www.17wansf.com/thread-9112703-1-1.html
http://www.17wansf.com/thread-9111922-1-1.html
http://www.17wansf.com/thread-9110099-1-1.html
http://www.17wansf.com/thread-9109104-1-1.html
http://www.17wansf.com/thread-9105468-1-1.html
http://www.17wansf.com/thread-9105036-1-1.html
http://www.17wansf.com/thread-9103920-1-1.html
http://www.17wansf.com/thread-9102958-1-1.html
http://www.17wansf.com/thread-9102021-1-1.html
http://www.17wansf.com/thread-9097455-1-1.html
http://www.17wansf.com/thread-9097015-1-1.html
http://www.17wansf.com/thread-9096577-1-1.html
https://vk.com/topic-212368028_48707930
https://vk.com/topic-212368028_48707929
https://vk.com/topic-212368028_48707928
https://vk.com/topic-212368028_48707927
https://vk.com/topic-212368028_48707926
https://vk.com/topic-212368028_48707925

$(function(){//给每一串代码元素增加复制代码节点let preList = $(".content pre");for (let pre of preList) {//给每个代码块增加上“复制代码”按钮let btn = $("<span class=\"btn-pre-copy\" onclick='preCopy(this)'>复制代码</span>");btn.prependTo(pre);}
});/*** 执行复制代码操作* @param obj*/
function preCopy(obj) {//执行复制let btn = $(obj);let pre = btn.parent();//为了实现复制功能。新增一个临时的textarea节点。使用他来复制内容let temp = $("<textarea></textarea>");//避免复制内容时把按钮文字也复制进去。先临时置空btn.text("");temp.text(pre.text());temp.appendTo(pre);temp.select();document.execCommand("Copy");temp.remove();//修改按钮名btn.text("复制成功");//一定时间后吧按钮名改回来setTimeout(()=> {btn.text("复制代码");},1500);
}

这里在gitee上做了一个简单的demo。demo示例:

在线测试:pre代码复制功能

到此这篇关于为网站代码块pre标签增加一个复制代码按钮代码的文章就介绍到这了。

为网站代码块pre标签增加一个复制代码按钮代码相关推荐

  1. java中静态变量,静态代码块,静态方法,实例变量,匿名代码块的加载顺序

    1. java中静态变量,静态代码块,静态方法,实例变量,匿名代码块 在Java中,使用{}括起来的代码称为代码块,代码块可以分为以下四种: (1)普通代码块:就是类中方法的方法体 public vo ...

  2. java 静态代码块_关于Java你不知道的那些事之代码块

    前言 普通代码块:在方法或语句中出现的{},就被称为代码块 静态代码块:静态代码块有且仅加载一次,也就是在这个类被加载至内存的时候 普通代码块和一般语句执行顺序由他们在代码中出现的次序决定,先出现先执 ...

  3. java 静态代码块有什么用,java编程开发静态代码块的使用方法都有哪些

    代码块是程序员在学习java编程开发的时候会接触到的一个代码,而今天我们就通过案例分析来了解一下,java编程开发静态代码块的使用方法都有哪些. (一)java静态代码块静态方法区别 一般情况下,如果 ...

  4. java 代码块 作用_Java核心(三):代码块的作用

    Java中用{ }括起来的代码段就是代码块,他分为如下几种类型 位置 作用 局部代码块 在方法当中使用,作用是控制变量的生命周期. 局部代码块的变量,只能在代码块内部使用,在执行结束后会被Java回收 ...

  5. java 静态代码块的作用_Java中什么是静态代码块,有什么作用?

    在java中使用static关键字声明的代码块.静态块用于初始化类,为类的属性初始化.每个静态代码块只会执行一次.静态代码块随着类加载而加载,有多个静态代码块的,按代码块前后顺序加载. 由于JVM在加 ...

  6. 代码块:在Java中用{}括起来的代码

    代码块:在Java中用{}括起来的代码 (1)在Java中用{}括起来的代码. (2)代码块分类:(根据其位置和声明的不同) A:局部代码块 在方法定义中,用于限定变量的生命周期,及早释放,提高内存利 ...

  7. pre 显示html代码插件,pre标签内JavaScript代码的高亮显示插件

    插件经过IE6-10.Chrome.Firefox等浏览器的测试. 目前支持关键字.字符串.注释.正则表达式的高亮显示,现在逻辑可能比较简单,后期会继续完善. 使用示例: Html代码 Page Ti ...

  8. 参数是html代码,一些html标签的参数messup html/php代码

    当我创建/编辑帖子到我的网站,并且当我使用html标签时(无论是我自己还是使用所见即所得的编辑器键入(在这种情况下nicEdit,但我使用不同的一个 - 同样的问题))它不会在页面上显示任何内容.一些 ...

  9. 表示python代码块的是_编写高质量Python代码的59个有效方法,你用过几个

    欢迎点击右上角关注小编,除了分享技术文章之外还有很多福利,私信学习资料可以领取包括不限于Python实战演练.PDF电子文档.面试集锦.学习资料等. 这个周末断断续续的阅读完了<Effectiv ...

最新文章

  1. 在腾讯工作半年,我获得了什么?
  2. 判断程序是否运行在虚拟机中的代码
  3. glass fish_Glass Fish 4.0.1中的Jersey SSE功能
  4. HTTP、TCP、UDP、Socket (转)
  5. 嵌入式Linux多任务编程 进程 管道 命名管道
  6. PL/pgSQL的RETURN QUERY例子
  7. 云服务器远程桌面复制
  8. CT一般扫描参数_工业CT检测服务
  9. html整体居中文字,html文字居中 html图片居中代码
  10. Confluence 插入符号和特殊字符
  11. (转)DirectX支配游戏!历代GPU架构全解析
  12. UE4 角色添加武器后 移动出现漂移
  13. APP分享多张图片和文字到微信朋友圈(android 7.0以上适配)
  14. 凭什么都是Java开发三年,而他能进大厂薪资是“我”2倍?
  15. python常用关键字意思_Python 关键字列表及示例
  16. Linux之线程Thread小结
  17. webrtc】windows 构建 :depot_tools 采坑
  18. Android 高质量开发之崩溃优化,kotlinnativerust跨端
  19. 南航计算机硬件实验,南航计硬实验四数据块移动实验报告.doc
  20. Linux(Centos7) 运行脚本程序,终端只返回 “已杀死”

热门文章

  1. 【故事】马老师告诉你,什么叫一把好牌被打烂了
  2. 不卷大厂了,78位高校青年教师晒出工资
  3. RuntimeError:Given input size:(256x1x1). Calculated output size: (256x0x0).Output size is too small
  4. 中科院院士梅宏用哪5个字描绘了云计算的未来?
  5. 【C语言程序】输入一个字符串,将其反转并输出
  6. [随笔]关于如何实现鼠标穿透窗口和窗口半透明
  7. 战争迷雾效果 第05章 项目源码下载
  8. 【系统性学习】Linux Shell常用命令
  9. html网页读后感,《HTML与CSS网站设计实践之旅》读后感锦集
  10. Vue之集成阿里云滑块验证