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

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

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

实现思路:

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

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

实现代码:

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

  1. .content pre{
  2. position: relative;
  3. background-color: #f5f5f5;
  4. border: 1px solid #ccc;
  5. border-radius: 4px;
  6. padding: 10px;
  7. }
  8. pre .btn-pre-copy{
  9. -webkit-user-select: none;
  10. -moz-user-select: none;
  11. -ms-user-select: none;
  12. -khtml-user-select: none;
  13. user-select: none;
  14. position: absolute;
  15. top: 10px;
  16. right: 12px;
  17. font-size: 12px;
  18. line-height: 1;
  19. cursor: pointer;
  20. color: hsla(0,0%,54.9%,.8);
  21. transition: color .1s;
  22. }

js部分,js部分主要是给pre标签增加按钮和实现拷贝部分,我这里拷贝部分的实现是先实例化一个临时的节点textarea,然后吧pre的内容设置进这个临时节点,然后选中内容进行复制,最后销毁这个节点。具体参考代码。js部分有依赖于jquery

  1. $(function(){
  2. //给每一串代码元素增加复制代码节点
  3. let preList = $(".content pre");
  4. for (let pre of preList) {
  5. //给每个代码块增加上“复制代码”按钮
  6. let btn = $("<span class=\"btn-pre-copy\" onclick='preCopy(this)'>复制代码</span>");
  7. btn.prependTo(pre);
  8. }
  9. });
  10. /**
  11. * 执行复制代码操作
  12. * @param obj
  13. */
  14. function preCopy(obj) {
  15. //执行复制
  16. let btn = $(obj);
  17. let pre = btn.parent();
  18. //为了实现复制功能。新增一个临时的textarea节点。使用他来复制内容
  19. let temp = $("<textarea></textarea>");
  20. //避免复制内容时把按钮文字也复制进去。先临时置空
  21. btn.text("");
  22. temp.text(pre.text());
  23. temp.appendTo(pre);
  24. temp.select();
  25. document.execCommand("Copy");
  26. temp.remove();
  27. //修改按钮名
  28. btn.text("复制成功");
  29. //一定时间后吧按钮名改回来
  30. setTimeout(()=> {
  31. btn.text("复制代码");
  32. },1500);
  33. }

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

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

更多相关文章

  1. android 6.0权限问题处理的核心代码--shouldShowRequestPermissi
  2. android启动其他应用的一段代码
  3. Android小代码——设置全屏
  4. Android(安卓)修改系统时间代码
  5. Android(安卓)RecyclerView的简单使用
  6. android手机短信总结
  7. Android几个常用功能代码(校园助手开发笔记)
  8. android 页面跳转(intent)
  9. Android客户端Socket连接PC服务器端(加评论)

随机推荐

  1. 精选PHP中常用的20个类库
  2. 分析PHP错误处理(核心特性)
  3. PHP操作Redis数据库常用方法(总结)
  4. PHP使用redis作为缓存(高效技术)
  5. php性能优化的方法介绍
  6. php实现顺序线性表
  7. Kubernetes 如果是个水族馆
  8. 自学系列 | 就谈自我管理!
  9. 智慧城市信息安全探讨
  10. 1-22