网站使用百度编辑器,为代码块添加一个"复制代码"按钮,并实现点击按钮后,将代码块的内容复制到剪贴板中。
下面这段代码的作用是,为网页中的代码块添加一个复制按钮,方便复制代码片段。
var codeBlocks = document.querySelectorAll('pre'); codeBlocks.forEach(function(codeBlock) { var copyButton = document.createElement('text'); copyButton.className = 'copy'; copyButton.textContent = '复制代码'; // 创建包裹代码块和按钮的容器元素 var container = document.createElement('div'); container.className = 'code-container'; // 将按钮添加到容器元素内 container.appendChild(copyButton); // 将容器元素插入到代码块之前 codeBlock.parentNode.insertBefore(container, codeBlock); // 设置容器元素样式,使其定位为相对定位(position: relative) container.style.position = 'relative'; // 设置复制按钮样式,使其绝对定位于容器元素的右上角 copyButton.style.position = 'absolute'; copyButton.style.top = '8px'; copyButton.style.right = '10px'; copyButton.addEventListener('click', function() { // 获取代码块的文本内容 var code = codeBlock.textContent; // 创建一个临时的textarea元素,并将代码块的内容设置为其值 var textarea = document.createElement('textarea'); textarea.value = code; // 将textarea元素追加到body中 document.body.appendChild(textarea); // 选中textarea中的文本 textarea.select(); // 执行复制操作 document.execCommand('copy'); // 移除临时的textarea元素 document.body.removeChild(textarea); // 修改复制按钮文本为“已复制” this.textContent = '复制成功'; }); });
可以把这段代码加入独立建的JS文件里,例如:建个copy.js文件,也可以直接加到使用的网页代码里。
用于设置复制按钮和代码块的样式。具体样式如下:
.code-wrapper 类选择器用于设置包裹代码块的容器元素的样式。在这里设置了相对定位(position: relative)。
.code-block 类选择器用于设置代码块的样式。在这里设置了相对定位(position: relative)。
.copy 类选择器用于设置复制按钮的样式。具体样式如下:
font-size:设置字体大小为 13px。
transition:设置颜色变化的过渡效果为 0.1秒。
color:设置按钮的颜色为带透明度的灰色(hsla(0, 0%, 54.9%, 0.8))。
border:去掉按钮的边框。
border-radius:设置按钮的圆角为4px。
cursor:设置鼠标悬停在按钮上时的样式为指针。
z-index:将复制按钮的层级置于顶层,确保按钮显示在其他内容之上。
下面对CSS文件代码:
.code-wrapper { position: relative; } .code-block { position: relative; } .copy { font-size: 13px; transition: color 0.1s; color: hsla(0, 0%, 54.9%, 0.8); border: none; border-radius: 4px; cursor: pointer; z-index: 1; }
可以把这段代码加入独立建的CSS文件里,例如:建个copy.css文件,也可以直接加到使用的网页代码里。
把上面的两种代码,放在需要添加的网页底部 </body> 之前插入js、css文件代码。