Trang này trình bày tất cả các thành phần nội dung có thể sử dụng trong bài viết — từ ảnh full-width, gallery, quote, callout, bookmark đến embed video và audio.

Headings

Heading 1

Heading 2

Heading 3

Heading 4

Hình ảnh — Normal Width

Abstract 3D render
Normal width — Photo by Sebastian Svenson / Unsplash

Hình ảnh — Wide Width

Wide abstract gradient
Wide width — Photo by Fakurian Design / Unsplash

Hình ảnh — Full Width

Distorted Sun gradient
Full width — Photo by Gradienta / Unsplash

Quotes

Blockquote thông thường:

Cách duy nhất để làm việc tuyệt vời là yêu thích những gì bạn làm. — Steve Jobs

Blockquote kiểu alternate (căn giữa, italic):

Hành trình duy nhất không thể thực hiện là hành trình bạn chưa bao giờ bắt đầu. — Tony Robbins

Callout Cards

💡
Đây là một callout vàng — thường dùng để đánh dấu thông tin nổi bật hoặc mẹo hữu ích.
ℹ️
Đây là một callout xanh — dùng cho thông báo thông tin hoặc lưu ý trung tính.
⚠️
Đây là một callout đỏ — cảnh báo hoặc nội dung cần chú ý đặc biệt.
Đây là một callout xanh lá — thành công, xác nhận hoặc thực hành tốt.

Header Card

Xây dựng từng ngày

Mỗi dòng code là một bước tiến nhỏ. Hãy kiên trì và nhất quán.

Xem tất cả bài viết

Bookmark Card

Embed — YouTube

Audio

audio-thumbnail
Demo Audio Track — Free Music
0:00
/0:00

Video — Upload / Hosted

0:00
/0:00
Video demo — Big Buck Bunny (sample)

Toggle / Accordion

Khi nào nên dùng Toggle?

Toggle cho phép bạn ẩn/hiện nội dung — rất hữu ích cho mục FAQ, giải thích kỹ thuật hoặc nội dung bổ sung mà không làm rối bố cục chính.

Toggle có cần JavaScript không?

Với HTML thuần (<details> + <summary>), toggle hoạt động hoàn toàn không cần JavaScript. Đây là cách tiếp cận đơn giản và có khả năng truy cập tốt nhất.

Lists

Danh sách thứ tự:

  1. Xác định vấn đề cần giải quyết
  2. Nghiên cứu và thu thập thông tin
  3. Thiết kế giải pháp
  4. Triển khai và kiểm thử
  5. Đánh giá và cải tiến

Danh sách không thứ tự:

  • Performance là ưu tiên hàng đầu
  • Accessibility không phải tùy chọn
  • Code sạch hơn code nhanh
  • Đơn giản tốt hơn phức tạp

Code Blocks

Inline: const greeting = "Xin chào, thế giới!"

// Ví dụ async/await
async function fetchData(url) {
  try {
    const response = await fetch(url);
    if (!response.ok) throw new Error(`HTTP ${response.status}`);
    return await response.json();
  } catch (err) {
    console.error("Lỗi khi fetch:", err);
    throw err;
  }
}
/* Ghost kg-width utilities */
.kg-width-wide {
  grid-column: wide;
}
.kg-width-full {
  grid-column: full;
}

Table

Thành phầnMô tảCần JS?
Image (wide/full)Ảnh mở rộng ra ngoài contentKhông
GalleryLưới ảnh nhiều cộtKhông
CalloutKhối nổi bật có emojiKhông
BookmarkCard preview linkKhông
Header CardBanner full-widthKhông
Embediframe YouTube/VimeoKhông
AudioTrình phát âm thanh
VideoTrình phát video
ToggleẨn/hiện nội dungKhông*

*Sử dụng <details> HTML thuần.