Blog Tĩnh #07 – Tạo highlight code + nút copy – dùng PrismJS

Bài này giúp bạn hiển thị code đẹp, dễ đọc và cho phép người dùng copy chỉ với 1 click – đúng chuẩn một blog kỹ thuật chuyên nghiệp. Không cần framework, không cần plugin nặng, chỉ dùng PrismJS + JavaScript ngắn gọn.

Blog Tĩnh #07 – Tạo highlight code + nút copy – dùng PrismJS

1. Nạp PrismJS từ CDN

Chèn vào cuối thẻ <head> của index.html (và các bài khác nếu cần):

<link href="https://cdn.jsdelivr.net/npm/prismjs/themes/prism.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/prismjs/prism.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/prismjs/components/prism-markup.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/prismjs/components/prism-css.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/prismjs/components/prism-javascript.min.js"></script>

Tuỳ ngôn ngữ cần highlight, bạn nạp thêm file tương ứng (PHP, Python, Bash…)

2. Cấu trúc hiển thị code

<pre class="code-block">
  <code class="language-css">
body {
  background: #fff;
  color: #111;
}
  </code>
</pre>

3. Thêm nút Copy

Chèn HTML nút vào mỗi block code (có thể thủ công hoặc script auto):

<div class="code-wrapper">
  <button class="copy-btn">Copy</button>
  <pre><code class="language-markup">
<h1>Hello World</h1>
  </code></pre>
</div>

4. CSS nút Copy

.code-wrapper {
  position: relative;
}

.copy-btn {
  position: absolute;
  top: 8px;
  right: 8px;
  font-size: 0.8rem;
  padding: 2px 8px;
  cursor: pointer;
}

5. JavaScript xử lý copy

Chèn vào cuối trang:

<script>
document.querySelectorAll('.copy-btn').forEach(btn => {
  btn.addEventListener('click', () => {
    const code = btn.nextElementSibling.querySelector('code').innerText;
    navigator.clipboard.writeText(code).then(() => {
      btn.innerText = 'Đã copy!';
      setTimeout(() => btn.innerText = 'Copy', 1500);
    });
  });
});
</script>

6. Gợi ý theme Prism đẹp hơn (tuỳ chọn)

Vậy là bạn đã có hệ thống hiển thị code sạch – đẹp – có copy cực nhanh. Bài tiếp theo sẽ giúp bạn tối ưu hiệu suất toàn site, preload đúng cách, giảm tải JS không cần thiết.

Chúc bạn hiển thị code đẹp như sách – và đúng chất blog kỹ thuật hiện đại!

Bình luận


  • Không có bình luận.

Init Toolbox

Nhấn Ctrl + \ trên máy tính, hoặc vuốt sang trái ở bất kỳ đâu trên mobile.

Đăng nhập





Đang tải...