Jekyll博客添加代码框一键复制按钮与复制提示

2024-02-19 16:12

本文主要是介绍Jekyll博客添加代码框一键复制按钮与复制提示,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


categories: [Frontend]
tags: Frontend HTML JavaScript CSS

写在前面

之前一直想试试代码一键复制, 但是看了很多博客都是大改主题, 自己并没有系统学过前端的东西, 只能求助于 AGI 了.

结果发现 chatGPT3.5 免费版还是厉害, Gemini 虽然上了 Pro 还是差点意思

我的博客在这里: zorchp.github.io

js 逻辑

assets/js/copy-to-clipboard.js

document.addEventListener('DOMContentLoaded', function () {var codeBlocks = document.getElementsByTagName('code');for (var i = 0; i < codeBlocks.length; i++) {var codeBlock = codeBlocks[i];var button = document.createElement('button');button.textContent = 'Copy';button.classList.add('copy-button'); // add CSS classcodeBlock.parentNode.insertBefore(button, codeBlock.nextSibling);var clipboard = new ClipboardJS(button, {target: function (trigger) {return trigger.previousSibling;}});clipboard.on('success', function (e) {e.clearSelection();var notification = document.createElement('div');notification.textContent = 'Copied!';notification.classList.add('notification');document.body.appendChild(notification);setTimeout(function () {notification.style.opacity = '0';setTimeout(function () {document.body.removeChild(notification);}, 1000);}, 1000);// console.log('已复制到剪贴板:', e.text);});clipboard.on('error', function (e) {console.error('复制失败:', e.action);});}
});

主要是使用 clipboard.js 来实现. 遍历找 code 标签页. 我加了复制成功的渐隐效果.

CSS

assets/css/copy.css

div.highlight {position: relative;
}div.highlight .copy-button {position: absolute;top: 0px;right: 0px;border: .3px solid orange;border-radius: 1px;
}.notification {position: fixed;top: 0;left: 50%;transform: translateX(-50%);padding: 10px;color: antiquewhite;opacity: 1;transition: opacity 1s;
}

html

_includes/head/custom.html

<!-- copy to clipboard -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.11/clipboard.min.js"></script>
<script src="/assets/js/copy-to-clipboard.js"></script>
<link rel="stylesheet" type="text/css" href="/assets/css/copy.css" />

把主要逻辑放进 head 的自定义 html 中, 就可以了.

这篇关于Jekyll博客添加代码框一键复制按钮与复制提示的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/725204

相关文章

利用Python调试串口的示例代码

《利用Python调试串口的示例代码》在嵌入式开发、物联网设备调试过程中,串口通信是最基础的调试手段本文将带你用Python+ttkbootstrap打造一款高颜值、多功能的串口调试助手,需要的可以了... 目录概述:为什么需要专业的串口调试工具项目架构设计1.1 技术栈选型1.2 关键类说明1.3 线程模

Python Transformers库(NLP处理库)案例代码讲解

《PythonTransformers库(NLP处理库)案例代码讲解》本文介绍transformers库的全面讲解,包含基础知识、高级用法、案例代码及学习路径,内容经过组织,适合不同阶段的学习者,对... 目录一、基础知识1. Transformers 库简介2. 安装与环境配置3. 快速上手示例二、核心模

Java的栈与队列实现代码解析

《Java的栈与队列实现代码解析》栈是常见的线性数据结构,栈的特点是以先进后出的形式,后进先出,先进后出,分为栈底和栈顶,栈应用于内存的分配,表达式求值,存储临时的数据和方法的调用等,本文给大家介绍J... 目录栈的概念(Stack)栈的实现代码队列(Queue)模拟实现队列(双链表实现)循环队列(循环数组

Android实现悬浮按钮功能

《Android实现悬浮按钮功能》在很多场景中,我们希望在应用或系统任意界面上都能看到一个小的“悬浮按钮”(FloatingButton),用来快速启动工具、展示未读信息或快捷操作,所以本文给大家介绍... 目录一、项目概述二、相关技术知识三、实现思路四、整合代码4.1 Java 代码(MainActivi

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指

Python运行中频繁出现Restart提示的解决办法

《Python运行中频繁出现Restart提示的解决办法》在编程的世界里,遇到各种奇怪的问题是家常便饭,但是,当你的Python程序在运行过程中频繁出现“Restart”提示时,这可能不仅仅是令人头疼... 目录问题描述代码示例无限循环递归调用内存泄漏解决方案1. 检查代码逻辑无限循环递归调用内存泄漏2.

使用Python构建一个Hexo博客发布工具

《使用Python构建一个Hexo博客发布工具》虽然Hexo的命令行工具非常强大,但对于日常的博客撰写和发布过程,我总觉得缺少一个直观的图形界面来简化操作,下面我们就来看看如何使用Python构建一个... 目录引言Hexo博客系统简介设计需求技术选择代码实现主框架界面设计核心功能实现1. 发布文章2. 加

C#TextBox设置提示文本方式(SetHintText)

《C#TextBox设置提示文本方式(SetHintText)》:本文主要介绍C#TextBox设置提示文本方式(SetHintText),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录C#TextBox设置提示文本效果展示核心代码总结C#TextBox设置提示文本效果展示核心代

使用Python实现全能手机虚拟键盘的示例代码

《使用Python实现全能手机虚拟键盘的示例代码》在数字化办公时代,你是否遇到过这样的场景:会议室投影电脑突然键盘失灵、躺在沙发上想远程控制书房电脑、或者需要给长辈远程协助操作?今天我要分享的Pyth... 目录一、项目概述:不止于键盘的远程控制方案1.1 创新价值1.2 技术栈全景二、需求实现步骤一、需求