Merge pull request #34 from ClovertaTheTrilobita/dev
Some checks failed
Sync and Deploy Astro Blog / sync-blog-content (push) Has been cancelled
Sync and Deploy Astro Blog / manual-deploy (push) Has been cancelled
Sync and Deploy Astro Blog / build-and-deploy (push) Has been cancelled

Fix button layout
This commit is contained in:
ClovertaTheTrilobita 2026-08-05 12:35:47 +08:00 committed by GitHub
commit 8b8ca8cbc6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 29 additions and 11 deletions

View file

@ -4,9 +4,9 @@
✨SanYeCao Blog✨<br> ✨SanYeCao Blog✨<br>
🌊Lightweight / Fast / Beautiful🌊<br><br> 🌊Lightweight / Fast / Beautiful🌊<br><br>
Built With<br> Built With<br>
<img alt="Static Badge" src="https://img.shields.io/badge/Astro-6.0-purple"> <img alt="Static Badge" src="https://img.shields.io/badge/Astro-6.0-purple?style=for-the-badge">
<img alt="Static Badge" src="https://img.shields.io/badge/Nodejs-24-green"> <img alt="Static Badge" src="https://img.shields.io/badge/Nodejs-24-green?style=for-the-badge">
<img alt="Static Badge" src="https://img.shields.io/badge/Heart-♥️-pink"> <img alt="Static Badge" src="https://img.shields.io/badge/Heart-♥️-pink?style=for-the-badge">
<br> <br>
</p> </p>

View file

@ -6,12 +6,13 @@
✨三叶草Blog✨<br> ✨三叶草Blog✨<br>
🌊轻度/快速/美观🌊<br><br> 🌊轻度/快速/美观🌊<br><br>
Built With<br> Built With<br>
<img alt="Static Badge" src="https://img.shields.io/badge/Astro-6.0-purple"> <img alt="Static Badge" src="https://img.shields.io/badge/Astro-6.0-purple?style=for-the-badge">
<img alt="Static Badge" src="https://img.shields.io/badge/Nodejs-24-green"> <img alt="Static Badge" src="https://img.shields.io/badge/Nodejs-24-green?style=for-the-badge">
<img alt="Static Badge" src="https://img.shields.io/badge/Heart-♥️-pink"> <img alt="Static Badge" src="https://img.shields.io/badge/Heart-♥️-pink?style=for-the-badge">
<br> <br>
</p> </p>
## 😋 特性 ## 😋 特性
<br> <br>

View file

@ -45,11 +45,24 @@ const {
<script is:inline> <script is:inline>
function addCodeCopyButtons() { function addCodeCopyButtons() {
document.querySelectorAll("pre").forEach((pre) => { document.querySelectorAll("pre").forEach((pre) => {
if (pre.querySelector(":scope > .code-copy-button")) return;
const code = pre.querySelector("code"); const code = pre.querySelector("code");
if (!code) return; if (!code) return;
/* 已经处理过则跳过 */
if (
pre.parentElement?.classList.contains("code-block-wrapper")
) {
return;
}
/* 创建外层容器 */
const wrapper = document.createElement("div");
wrapper.className = "code-block-wrapper";
pre.parentNode?.insertBefore(wrapper, pre);
wrapper.appendChild(pre);
/* 创建复制按钮 */
const button = document.createElement("button"); const button = document.createElement("button");
button.className = "code-copy-button"; button.className = "code-copy-button";
button.type = "button"; button.type = "button";
@ -63,6 +76,7 @@ const {
icon.setAttribute("aria-hidden", "true"); icon.setAttribute("aria-hidden", "true");
button.appendChild(icon); button.appendChild(icon);
wrapper.appendChild(button);
button.addEventListener("click", async () => { button.addEventListener("click", async () => {
const text = code.textContent ?? ""; const text = code.textContent ?? "";
@ -74,6 +88,7 @@ const {
textarea.value = text; textarea.value = text;
textarea.style.position = "fixed"; textarea.style.position = "fixed";
textarea.style.opacity = "0"; textarea.style.opacity = "0";
textarea.style.pointerEvents = "none";
document.body.appendChild(textarea); document.body.appendChild(textarea);
textarea.select(); textarea.select();
@ -93,8 +108,6 @@ const {
button.classList.remove("copied"); button.classList.remove("copied");
}, 1500); }, 1500);
}); });
pre.appendChild(button);
}); });
} }

View file

@ -1,4 +1,8 @@
pre { .code-block-wrapper {
position: relative;
}
.code-block-wrapper pre {
padding: 1rem; padding: 1rem;
border-radius: 3px; border-radius: 3px;
overflow-x: auto; overflow-x: auto;