Trang tĩnh (không qua API) trình diễn toàn bộ class có sẵn — mỗi mục có khung copy code riêng, bấm Copy rồi dán thẳng vào chế độ "Source code" của CKEditor.
Kho mẫu nội dung · Dev reference
Thư viện giao diện bài giảng — Tất cả style trong 1 trang
Trang này KHÔNG phải bài học thật — đây là bảng mẫu (kitchen sink) trình diễn toàn bộ component có
trong style-ck-content.css, dùng để tham khảo khi soạn theory/blog thật bằng CKEditor.
Mỗi mục bên dưới có khung copy code — bấm Copy rồi dán thẳng vào chế độ "Source code" của CKEditor.
Dùng cho thông báo hệ thống trung tính, khác callout (mang tính sư phạm).
Alert destructive
Dùng cho cảnh báo nghiêm trọng (lỗi, mất dữ liệu...).
Phần A — Component dùng cho mọi bài giảng
Áp dụng được cho bất kỳ môn học/dạng bài nào: lý thuyết, công thức, ví dụ có lời giải, bảng, ảnh, FAQ...
111 loại Callout
Mỗi loại có icon + màu riêng, dùng đúng ngữ cảnh sư phạm của nó:
Định nghĩa
Dùng cho phát biểu định nghĩa/định lý chính thức. Ví dụ: Số chẵn là số chia hết cho 2. 🔢
Thông tin
Thông tin bổ sung, không bắt buộc nhớ. Ví dụ: Trái Đất quay quanh Mặt Trời mất 365 ngày. 🌍
Ghi chú
Ghi chú phụ, ít quan trọng hơn info. Ví dụ: phần này sẽ học kỹ hơn ở lớp trên. ✏️
Mẹo hay
Mẹo giúp làm bài nhanh hơn. Ví dụ: số chia hết cho 5 luôn có tận cùng là 0 hoặc 5. ✨
Ví dụ 1
12 chia hết cho 3 vì 1 + 2 = 3, mà 3 chia hết cho 3. 🍬
Làm đúng rồi!
Tuyên dương khi học sinh giải đúng — tạo cảm giác thành công. 🎉
Chú ý
Lỗi sai thường gặp. Ví dụ: quên đổi đơn vị trước khi tính. ⚠️
Sai lầm nghiêm trọng
Lỗi khái niệm gốc, cần sửa ngay. Ví dụ: nhầm chu vi với diện tích. 🚫
Vì sao lại như vậy?
Giải thích "tại sao" thay vì chỉ cho công thức suông. 🤔
Bài tập về nhà
Danh sách bài tự luyện, không có lời giải kèm theo. 📓
Tổng kết
Tóm tắt lại toàn bộ kiến thức cuối bài bằng vài gạch đầu dòng. 📌
HTML
<h2 id="callouts" class="section-heading"><span class="section-num">1</span>11 loại Callout</h2>
<p>Mỗi loại có icon + màu riêng, dùng đúng ngữ cảnh sư phạm của nó:</p>
<div class="callout callout-definition"><p class="callout-title">Định nghĩa</p><div class="callout-body"><p>Dùng cho phát biểu định nghĩa/định lý chính thức. Ví dụ: <strong>Số chẵn</strong> là số chia hết cho 2. 🔢</p></div></div>
<div class="callout callout-info"><p class="callout-title">Thông tin</p><div class="callout-body"><p>Thông tin bổ sung, không bắt buộc nhớ. Ví dụ: Trái Đất quay quanh Mặt Trời mất 365 ngày. 🌍</p></div></div>
<div class="callout callout-note"><p class="callout-title">Ghi chú</p><div class="callout-body"><p>Ghi chú phụ, ít quan trọng hơn info. Ví dụ: phần này sẽ học kỹ hơn ở lớp trên. ✏️</p></div></div>
<div class="callout callout-tip"><p class="callout-title">Mẹo hay</p><div class="callout-body"><p>Mẹo giúp làm bài nhanh hơn. Ví dụ: số chia hết cho 5 luôn có tận cùng là 0 hoặc 5. ✨</p></div></div>
<div class="callout callout-example"><p class="callout-title">Ví dụ 1</p><div class="callout-body"><p>12 chia hết cho 3 vì 1 + 2 = 3, mà 3 chia hết cho 3. 🍬</p></div></div>
<div class="callout callout-success"><p class="callout-title">Làm đúng rồi!</p><div class="callout-body"><p>Tuyên dương khi học sinh giải đúng — tạo cảm giác thành công. 🎉</p></div></div>
<div class="callout callout-warning"><p class="callout-title">Chú ý</p><div class="callout-body"><p>Lỗi sai thường gặp. Ví dụ: quên đổi đơn vị trước khi tính. ⚠️</p></div></div>
<div class="callout callout-danger"><p class="callout-title">Sai lầm nghiêm trọng</p><div class="callout-body"><p>Lỗi khái niệm gốc, cần sửa ngay. Ví dụ: nhầm chu vi với diện tích. 🚫</p></div></div>
<div class="callout callout-question"><p class="callout-title">Vì sao lại như vậy?</p><div class="callout-body"><p>Giải thích "tại sao" thay vì chỉ cho công thức suông. 🤔</p></div></div>
<div class="callout callout-homework"><p class="callout-title">Bài tập về nhà</p><div class="callout-body"><p>Danh sách bài tự luyện, không có lời giải kèm theo. 📓</p></div></div>
<div class="callout callout-summary"><p class="callout-title">Tổng kết</p><div class="callout-body"><p>Tóm tắt lại toàn bộ kiến thức cuối bài bằng vài gạch đầu dòng. 📌</p></div></div>
2Formula box & Steps
S = a × a
S: diện tích hình vuông — a: độ dài cạnh
Bước 1
Đo độ dài 1 cạnh hình vuông (đơn vị: cm).
Bước 2
Lấy cạnh nhân với chính nó (a × a).
Bước 3
Ghi kết quả kèm đơn vị diện tích (cm²).
HTML
<h2 id="cong-thuc" class="section-heading"><span class="section-num">2</span>Formula box & Steps</h2>
<div class="formula-box">
<p class="formula">S = a × a</p>
<p class="formula-legend">S: diện tích hình vuông — a: độ dài cạnh</p>
</div>
<ol class="steps">
<li><span class="step-badge">Bước 1</span><div class="step-body"><p>Đo độ dài 1 cạnh hình vuông (đơn vị: cm).</p></div></li>
<li><span class="step-badge">Bước 2</span><div class="step-body"><p>Lấy cạnh nhân với chính nó (a × a).</p></div></li>
<li><span class="step-badge">Bước 3</span><div class="step-body"><p>Ghi kết quả kèm đơn vị diện tích (cm²).</p></div></li>
</ol>
3Problem type (khối "Dạng bài")
Dạng 1. Tính diện tích khi biết cạnh
Ví dụ
Một hình vuông có cạnh dài 5cm. Tính diện tích hình vuông đó.
Giải: Diện tích hình vuông là: 5 × 5 = 25 (cm²). Đáp số: 25cm².
HTML
<h2 id="dang-bai" class="section-heading"><span class="section-num">3</span>Problem type (khối "Dạng bài")</h2>
<section class="problem-type">
<p class="problem-type__title">Dạng 1. Tính diện tích khi biết cạnh</p>
<div class="problem-type__body">
<div class="callout callout-example">
<p class="callout-title">Ví dụ</p>
<div class="callout-body">
<p>Một hình vuông có cạnh dài 5cm. Tính diện tích hình vuông đó.</p>
<p><strong>Giải:</strong> Diện tích hình vuông là: <code>5 × 5 = 25 (cm²)</code>. Đáp số: <strong>25cm²</strong>.</p>
</div>
</div>
</div>
</section>
4Table & Table section
Hình
Công thức diện tích
Công thức chu vi
Hình vuông
a × a
a × 4
Hình chữ nhật
a × b
(a + b) × 2
📊 Bảng có tiêu đề riêng (table-section)
Khối lớp
Chủ đề
Lớp 4
Diện tích, chu vi hình chữ nhật
Lớp 5
Diện tích hình thang, hình tròn
HTML
<h2 id="bang" class="section-heading"><span class="section-num">4</span>Table & Table section</h2>
<figure class="table">
<table>
<thead><tr><th>Hình</th><th>Công thức diện tích</th><th>Công thức chu vi</th></tr></thead>
<tbody>
<tr><td>Hình vuông</td><td><code>a × a</code></td><td><code>a × 4</code></td></tr>
<tr><td>Hình chữ nhật</td><td><code>a × b</code></td><td><code>(a + b) × 2</code></td></tr>
</tbody>
</table>
</figure>
<section class="table-section">
<p class="table-section__title">📊 Bảng có tiêu đề riêng (table-section)</p>
<div class="table-section__body">
<figure class="table">
<table>
<thead><tr><th>Khối lớp</th><th>Chủ đề</th></tr></thead>
<tbody>
<tr><td>Lớp 4</td><td>Diện tích, chu vi hình chữ nhật</td></tr>
<tr><td>Lớp 5</td><td>Diện tích hình thang, hình tròn</td></tr>
</tbody>
</table>
</figure>
</div>
</section>
Văn bản in đậm, in nghiêng, gạch chân, gạch ngang, đánh dấu highlight, chữ nhỏ, số mũ x2, chỉ số H2O, phím tắt Ctrl + C, viết tắt kg.
Học, học nữa, học mãi.
Câu nói truyền cảm hứng học tập
v = s : t
s = v × t
t = s : v
Danh sách không thứ tự
Mục thứ hai
Mục con cấp 2
HTML
<h2 id="van-ban" class="section-heading"><span class="section-num">6</span>Định dạng văn bản & danh sách</h2>
<p>Văn bản <strong>in đậm</strong>, <em>in nghiêng</em>, <u>gạch chân</u>, <s>gạch ngang</s>, <mark>đánh dấu highlight</mark>, <small>chữ nhỏ</small>, số mũ x<sup>2</sup>, chỉ số H<sub>2</sub>O, phím tắt <kbd>Ctrl</kbd> + <kbd>C</kbd>, viết tắt <abbr title="Ki-lô-gam">kg</abbr>.</p>
<blockquote>
<p>Học, học nữa, học mãi.</p>
<cite>Câu nói truyền cảm hứng học tập</cite>
</blockquote>
<pre><code class="language-text">v = s : t
s = v × t
t = s : v</code></pre>
<ul>
<li>Danh sách không thứ tự</li>
<li>Mục thứ hai
<ul><li>Mục con cấp 2</li></ul>
</li>
</ul>
<ul class="todo-list">
<li class="todo-list__item"><label class="todo-list__label"><input type="checkbox" checked disabled><span class="todo-list__label__description">Đã học xong bảng cửu chương</span></label></li>
<li class="todo-list__item"><label class="todo-list__label"><input type="checkbox" disabled><span class="todo-list__label__description">Chưa học xong phân số</span></label></li>
</ul>
<hr>
7Hình ảnh, phóng to (Lightbox) & Gallery
Hình mẫu — thay bằng ảnh thật khi soạn bài chính thức.
Ảnh có thể bấm để phóng to toàn màn hình — không cần JavaScript, dùng kỹ thuật CSS :target (hoạt động cả khi nội dung được chèn bằng dangerouslySetInnerHTML). Icon 🔍 luôn hiện sẵn (mờ) trên thiết bị cảm ứng vì hiệu ứng hover không hoạt động khi chạm:
🔍Bấm vào ảnh để xem phóng to toàn màn hình, có nút đóng ở góc.
<h2 id="hinh-anh" class="section-heading"><span class="section-num">7</span>Hình ảnh, phóng to (Lightbox) & Gallery</h2>
<figure class="image">
<img alt="Hình minh hoạ mẫu (placeholder)" src="data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 220'%3E%3Crect width='640' height='220' fill='%23e0f2fe'/%3E%3Ctext x='320' y='115' font-size='24' text-anchor='middle' fill='%230e7490' font-family='sans-serif' font-weight='700'%3EHình minh hoạ (placeholder)%3C/text%3E%3C/svg%3E">
<figcaption>Hình mẫu — thay bằng ảnh thật khi soạn bài chính thức.</figcaption>
</figure>
<p>Ảnh có thể bấm để <strong>phóng to toàn màn hình</strong> — không cần JavaScript, dùng kỹ thuật CSS <code>:target</code> (hoạt động cả khi nội dung được chèn bằng <code>dangerouslySetInnerHTML</code>). Icon 🔍 luôn hiện sẵn (mờ) trên thiết bị cảm ứng vì hiệu ứng hover không hoạt động khi chạm:</p>
<figure class="image zoomable">
<a href="#lb-demo-1" class="zoomable__trigger">
<img alt="Ảnh minh hoạ có thể phóng to" src="data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 220'%3E%3Crect width='640' height='220' fill='%23fdf2f8'/%3E%3Ctext x='320' y='115' font-size='22' text-anchor='middle' fill='%239d174d' font-family='sans-serif' font-weight='700'%3EBấm vào đây để phóng to 🔍%3C/text%3E%3C/svg%3E">
<span class="zoomable__hint">🔍</span>
</a>
<figcaption>Bấm vào ảnh để xem phóng to toàn màn hình, có nút đóng ở góc.</figcaption>
</figure>
<div class="lightbox" id="lb-demo-1">
<a href="#_" class="lightbox__backdrop" aria-label="Đóng"></a>
<figure class="lightbox__frame">
<a href="#_" class="lightbox__close" aria-label="Đóng">×</a>
<img alt="Ảnh phóng to" src="data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 900 560'%3E%3Crect width='900' height='560' fill='%23500724'/%3E%3Ctext x='450' y='290' font-size='30' text-anchor='middle' fill='%23fbcfe8' font-family='sans-serif' font-weight='700'%3EẢnh đã phóng to%3C/text%3E%3C/svg%3E">
<figcaption>Chú thích hiển thị khi ảnh được phóng to.</figcaption>
</figure>
</div>
<p>Nhiều ảnh trong 1 gallery — có nút chuyển ảnh trước/sau ngay trong khung phóng to:</p>
<div class="gallery">
<p class="gallery__label">📸 Hình ảnh tham khảo — nhấn để phóng to</p>
<div class="gallery__track">
<a href="#lb-g1-1" class="gallery__thumb">
<img src="data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 150'%3E%3Crect width='200' height='150' fill='%23e0f2fe'/%3E%3Ctext x='100' y='80' font-size='28' text-anchor='middle' fill='%230369a1' font-family='sans-serif' font-weight='700'%3E1%3C/text%3E%3C/svg%3E" alt="Ảnh 1">
<span class="zoomable__hint">🔍</span>
</a>
<a href="#lb-g1-2" class="gallery__thumb">
<img src="data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 150'%3E%3Crect width='200' height='150' fill='%23ecfccb'/%3E%3Ctext x='100' y='80' font-size='28' text-anchor='middle' fill='%233f6212' font-family='sans-serif' font-weight='700'%3E2%3C/text%3E%3C/svg%3E" alt="Ảnh 2">
<span class="zoomable__hint">🔍</span>
</a>
<a href="#lb-g1-3" class="gallery__thumb">
<img src="data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 150'%3E%3Crect width='200' height='150' fill='%23fef3c7'/%3E%3Ctext x='100' y='80' font-size='28' text-anchor='middle' fill='%2392400e' font-family='sans-serif' font-weight='700'%3E3%3C/text%3E%3C/svg%3E" alt="Ảnh 3">
<span class="zoomable__hint">🔍</span>
</a>
</div>
</div>
<div class="lightbox" id="lb-g1-1">
<a href="#_" class="lightbox__backdrop" aria-label="Đóng"></a>
<figure class="lightbox__frame">
<a href="#_" class="lightbox__close" aria-label="Đóng">×</a>
<a href="#lb-g1-3" class="lightbox__nav lightbox__prev" aria-label="Ảnh trước">‹</a>
<img src="data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 900 560'%3E%3Crect width='900' height='560' fill='%23075985'/%3E%3Ctext x='450' y='290' font-size='60' text-anchor='middle' fill='%23e0f2fe' font-family='sans-serif' font-weight='800'%3E1%3C/text%3E%3C/svg%3E" alt="Ảnh 1">
<a href="#lb-g1-2" class="lightbox__nav lightbox__next" aria-label="Ảnh sau">›</a>
<figcaption>Ảnh 1 / 3</figcaption>
</figure>
</div>
<div class="lightbox" id="lb-g1-2">
<a href="#_" class="lightbox__backdrop" aria-label="Đóng"></a>
<figure class="lightbox__frame">
<a href="#_" class="lightbox__close" aria-label="Đóng">×</a>
<a href="#lb-g1-1" class="lightbox__nav lightbox__prev" aria-label="Ảnh trước">‹</a>
<img src="data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 900 560'%3E%3Crect width='900' height='560' fill='%233f6212'/%3E%3Ctext x='450' y='290' font-size='60' text-anchor='middle' fill='%23ecfccb' font-family='sans-serif' font-weight='800'%3E2%3C/text%3E%3C/svg%3E" alt="Ảnh 2">
<a href="#lb-g1-3" class="lightbox__nav lightbox__next" aria-label="Ảnh sau">›</a>
<figcaption>Ảnh 2 / 3</figcaption>
</figure>
</div>
<div class="lightbox" id="lb-g1-3">
<a href="#_" class="lightbox__backdrop" aria-label="Đóng"></a>
<figure class="lightbox__frame">
<a href="#_" class="lightbox__close" aria-label="Đóng">×</a>
<a href="#lb-g1-2" class="lightbox__nav lightbox__prev" aria-label="Ảnh trước">‹</a>
<img src="data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 900 560'%3E%3Crect width='900' height='560' fill='%2392400e'/%3E%3Ctext x='450' y='290' font-size='60' text-anchor='middle' fill='%23fef3c7' font-family='sans-serif' font-weight='800'%3E3%3C/text%3E%3C/svg%3E" alt="Ảnh 3">
<a href="#lb-g1-1" class="lightbox__nav lightbox__next" aria-label="Ảnh sau">›</a>
<figcaption>Ảnh 3 / 3</figcaption>
</figure>
</div>
8FAQ accordion (không cần JS)
Vì sao dùng <details> thay vì Bootstrap accordion?
Vì bài blog publish chỉ chèn HTML thô từ CKEditor — không chắc mọi nơi hiển thị đều load kèm Bootstrap JS.
Có thể mở nhiều câu cùng lúc không?
Có — mỗi <details> độc lập, không giới hạn chỉ mở 1 câu như accordion Bootstrap mặc định.
HTML
<h2 id="qa" class="section-heading"><span class="section-num">8</span>FAQ accordion (không cần JS)</h2>
<details class="qa">
<summary class="qa__q">Vì sao dùng <details> thay vì Bootstrap accordion?</summary>
<div class="qa__a"><p>Vì bài blog publish chỉ chèn HTML thô từ CKEditor — không chắc mọi nơi hiển thị đều load kèm Bootstrap JS.</p></div>
</details>
<details class="qa">
<summary class="qa__q">Có thể mở nhiều câu cùng lúc không?</summary>
<div class="qa__a"><p>Có — mỗi <details> độc lập, không giới hạn chỉ mở 1 câu như accordion Bootstrap mặc định.</p></div>
</details>
<h2 id="cta" class="section-heading"><span class="section-num">9</span>CTA banner & Button</h2>
<p>
<a class="btn btn-primary" href="#">Button primary</a>
<a class="btn btn-secondary" href="#">Button secondary</a>
</p>
<div class="cta-banner">
<div>
<p class="cta-banner__title">Sẵn sàng học bài tiếp theo chưa? 🚀</p>
<p class="cta-banner__desc">CTA banner dùng ở cuối bài để dẫn sang bài học kế tiếp hoặc trang luyện tập.</p>
</div>
<div class="cta-banner__actions">
<a class="btn btn-light" href="#">Học bài tiếp</a>
<a class="btn btn-ghost" href="#">Về trang chủ</a>
</div>
</div>
10Year badge, Gloss & Note inline mở rộng
Nhà Lý 1009 – 1225,
Nhà Trần 1225 – 1400,
Nhà Nguyễn 1802 – 1945
Trận Bạch Đằng(Battle of Bạch Đằng) năm 938 là chiến thắng quyết định của Ngô Quyền.
Dễ nhầm
Có 2 trận Bạch Đằng nổi tiếng: năm 938 (Ngô Quyền) và năm 1288 (Trần Hưng Đạo) — đừng nhầm 2 sự kiện này.
Mẹo nhớ
3 lần đại thắng trên sông Bạch Đằng: Ngô Quyền (938) → Lê Hoàn (981) → Trần Hưng Đạo (1288).
Mở rộng: vì sao chọn sông Bạch Đằng?
Sông Bạch Đằng có chế độ thủy triều lên xuống rõ rệt, thuận lợi để bố trí trận địa cọc ngầm — đây là lý do cả 3 vị tướng đều chọn địa điểm này để phục kích thuỷ quân giặc.
HTML
<h2 id="note-variants" class="section-heading"><span class="section-num">10</span>Year badge, Gloss & Note inline mở rộng</h2>
<p>
Nhà Lý <span class="year-badge topic-3">1009 – 1225</span>,
Nhà Trần <span class="year-badge topic-4">1225 – 1400</span>,
Nhà Nguyễn <span class="year-badge topic-6">1802 – 1945</span>
</p>
<p>Trận <strong>Bạch Đằng</strong> <em class="gloss">(Battle of Bạch Đằng)</em> năm 938 là chiến thắng quyết định của Ngô Quyền.</p>
<div class="note-inline note-inline--warning">
<p class="note-inline__label">Dễ nhầm</p>
<p>Có 2 trận Bạch Đằng nổi tiếng: năm 938 (Ngô Quyền) và năm 1288 (Trần Hưng Đạo) — đừng nhầm 2 sự kiện này.</p>
</div>
<div class="note-inline note-inline--success">
<p class="note-inline__label">Mẹo nhớ</p>
<p>3 lần đại thắng trên sông Bạch Đằng: Ngô Quyền (938) → Lê Hoàn (981) → Trần Hưng Đạo (1288).</p>
</div>
<details class="note-inline note-inline--tip">
<summary class="note-inline__label">Mở rộng: vì sao chọn sông Bạch Đằng?</summary>
<p>Sông Bạch Đằng có chế độ thủy triều lên xuống rõ rệt, thuận lợi để bố trí trận địa cọc ngầm — đây là lý do cả 3 vị tướng đều chọn địa điểm này để phục kích thuỷ quân giặc.</p>
</details>
11Fun fact, Quick chip & Grade badge
Địa hình đồi núi Việt Nam L4
Đồi núi chiếm khoảng 3/4 diện tích lãnh thổ Việt Nam L5, nhưng chủ yếu là đồi núi thấp.
🌟 Em có biết?
Đỉnh Fansipan cao 3.147m, là đỉnh núi cao nhất Việt Nam và cả Đông Dương — được mệnh danh "Nóc nhà Đông Dương".
🧠 Mẹo nhớ nhanh
3/4 diện tích là đồi núi, 1/4 còn lại là đồng bằng — nhưng hơn 2/3 dân số lại sống ở đồng bằng vì đất phù sa màu mỡ, dễ canh tác.
<h2 id="fun-fact" class="section-heading"><span class="section-num">11</span>Fun fact, Quick chip & Grade badge</h2>
<h3>Địa hình đồi núi Việt Nam <span class="grade-badge grade-badge--l4">L4</span></h3>
<p>Đồi núi chiếm khoảng <strong>3/4 diện tích</strong> lãnh thổ Việt Nam <span class="grade-badge grade-badge--l5">L5</span>, nhưng chủ yếu là đồi núi thấp.</p>
<div class="fun-fact">
<p class="fun-fact__label">🌟 Em có biết?</p>
<p>Đỉnh Fansipan cao 3.147m, là đỉnh núi cao nhất Việt Nam và cả Đông Dương — được mệnh danh "Nóc nhà Đông Dương".</p>
</div>
<div class="fun-fact">
<p class="fun-fact__label">🧠 Mẹo nhớ nhanh</p>
<p>3/4 diện tích là đồi núi, 1/4 còn lại là đồng bằng — nhưng hơn 2/3 dân số lại sống ở đồng bằng vì đất phù sa màu mỡ, dễ canh tác.</p>
</div>
<p>
<a class="quick-chip quick-chip--doc" href="#">📄 Tài liệu</a>
<a class="quick-chip quick-chip--yt" href="#">▶️ Video</a>
</p>
Phần B — Component cho bài tổng hợp nhiều chủ đề & lịch sử
Dùng khi 1 bài gồm nhiều chủ đề con (như "Khoa học về Chất") hoặc nội dung theo dòng thời gian (Lịch sử, tiểu sử).
12Intro grid — mở bài kiểu tổng hợp nhiều chủ đề
Dùng thay cho lesson-hero khi bài KHÔNG phải 1 mạch lý thuyết mà là trang tổng hợp nhiều chủ đề con (nền trắng/trung tính, thiên về tra cứu hơn là một trang đích quảng cáo). Cột trái thực tế sẽ dùng thẻ <h1> — ở đây đổi sang <h3> chỉ vì trang demo này đã có 1 thẻ h1 riêng ở đầu trang.
🔬 Khoa học tự nhiên · Lớp 4–5
Khoa học về Chất
Nước, không khí, đất, kim loại — mọi thứ xung quanh ta đều được tạo từ chất. Trang này hệ thống 7 chủ đề cốt lõi để em tra cứu bất cứ lúc nào.
<h2 id="intro-grid" class="section-heading"><span class="section-num">12</span>Intro grid — mở bài kiểu tổng hợp nhiều chủ đề</h2>
<p>Dùng thay cho <code>lesson-hero</code> khi bài KHÔNG phải 1 mạch lý thuyết mà là trang tổng hợp nhiều chủ đề con (nền trắng/trung tính, thiên về tra cứu hơn là một trang đích quảng cáo). Cột trái thực tế sẽ dùng thẻ <code><h1></code> — ở đây đổi sang <code><h3></code> chỉ vì trang demo này đã có 1 thẻ h1 riêng ở đầu trang.</p>
<div class="intro-grid">
<div>
<p class="eyebrow">🔬 Khoa học tự nhiên · Lớp 4–5</p>
<h3 style="margin-top:0.75rem">Khoa học về Chất</h3>
<p>Nước, không khí, đất, kim loại — mọi thứ xung quanh ta đều được tạo từ <strong>chất</strong>. Trang này hệ thống 7 chủ đề cốt lõi để em tra cứu bất cứ lúc nào.</p>
<div class="intro-grid__actions">
<a class="btn btn-primary" href="#">Ba thể của chất</a>
<a class="btn btn-secondary" href="#">Khám phá vật liệu</a>
</div>
</div>
<div class="intro-panel">
<div class="intro-panel__head">
<p class="intro-panel__title">7 Chủ đề kiến thức</p>
<span class="badge badge-outline">Lớp 4–5 · Khoa học</span>
</div>
<div class="topic-index">
<a href="#" class="topic-index__row">
<span class="topic-index__num topic-1">01<small>Thể</small></span>
<span class="topic-index__text"><strong>Ba thể của chất — Rắn, Lỏng, Khí</strong><small>Hình dạng, thể tích, sự chuyển thể</small></span>
</a>
<a href="#" class="topic-index__row">
<span class="topic-index__num topic-2">02<small>Nước</small></span>
<span class="topic-index__text"><strong>Nước & sự chuyển thể</strong><small>Bay hơi, ngưng tụ, đông đặc, vòng tuần hoàn</small></span>
</a>
<a href="#" class="topic-index__row">
<span class="topic-index__num topic-3">03<small>KK</small></span>
<span class="topic-index__text"><strong>Không khí — Thành phần & tính chất</strong><small>78% N₂ + 21% O₂, gió, thang Bô-pho</small></span>
</a>
<a href="#" class="topic-index__row">
<span class="topic-index__num topic-5">05<small>HH&DD</small></span>
<span class="topic-index__text"><strong>Hỗn hợp & dung dịch</strong><small>Tách chất, lắng lọc, bay hơi</small></span>
</a>
</div>
</div>
</div>
13Topic block & Concept card (8 màu chủ đề)
🧮 Các môn học ở trường tiểu học
🧮 Toán
topic-1
Cộng trừ nhân chia, hình học, đo lường.
🔬 Khoa học
topic-2
Chất, năng lượng, cơ thể người, tự nhiên.
📖 Tiếng Việt
topic-3
Đọc hiểu, chính tả, tập làm văn.
🌍 Địa lý
topic-4
Bản đồ, các châu lục, khí hậu Việt Nam.
🏯 Lịch sử
topic-5
Các triều đại, sự kiện lịch sử Việt Nam.
🔤 Tiếng Anh
topic-6
Từ vựng, ngữ pháp cơ bản, hội thoại.
🎨 Nghệ thuật
topic-7
Vẽ, âm nhạc, thủ công.
🤝 Kỹ năng sống
topic-8
Giao tiếp, an toàn, làm việc nhóm.
Ghi nhớ
note-inline dùng để nhấn 1 dòng ngắn bên trong concept-card.
HTML
<h2 id="chu-de" class="section-heading"><span class="section-num">13</span>Topic block & Concept card (8 màu chủ đề)</h2>
<section class="topic-block">
<p class="topic-block__title topic-1">🧮 Các môn học ở trường tiểu học</p>
<div class="concept-grid concept-grid-4">
<div class="concept-card topic-1"><div class="concept-card__top"><h4>🧮 Toán</h4><span class="badge badge-info">topic-1</span></div><p>Cộng trừ nhân chia, hình học, đo lường.</p></div>
<div class="concept-card topic-2"><div class="concept-card__top"><h4>🔬 Khoa học</h4><span class="badge badge-info">topic-2</span></div><p>Chất, năng lượng, cơ thể người, tự nhiên.</p></div>
<div class="concept-card topic-3"><div class="concept-card__top"><h4>📖 Tiếng Việt</h4><span class="badge badge-info">topic-3</span></div><p>Đọc hiểu, chính tả, tập làm văn.</p></div>
<div class="concept-card topic-4"><div class="concept-card__top"><h4>🌍 Địa lý</h4><span class="badge badge-info">topic-4</span></div><p>Bản đồ, các châu lục, khí hậu Việt Nam.</p></div>
<div class="concept-card topic-5"><div class="concept-card__top"><h4>🏯 Lịch sử</h4><span class="badge badge-info">topic-5</span></div><p>Các triều đại, sự kiện lịch sử Việt Nam.</p></div>
<div class="concept-card topic-6"><div class="concept-card__top"><h4>🔤 Tiếng Anh</h4><span class="badge badge-info">topic-6</span></div><p>Từ vựng, ngữ pháp cơ bản, hội thoại.</p></div>
<div class="concept-card topic-7"><div class="concept-card__top"><h4>🎨 Nghệ thuật</h4><span class="badge badge-info">topic-7</span></div><p>Vẽ, âm nhạc, thủ công.</p></div>
<div class="concept-card topic-8"><div class="concept-card__top"><h4>🤝 Kỹ năng sống</h4><span class="badge badge-info">topic-8</span></div><p>Giao tiếp, an toàn, làm việc nhóm.</p>
<div class="note-inline"><p class="note-inline__label">Ghi nhớ</p><p>note-inline dùng để nhấn 1 dòng ngắn bên trong concept-card.</p></div>
</div>
</div>
</section>
14Tag phân loại & Divider label
7 nhãn phân loại LOẠI nội dung của 1 thẻ (khác .badge — vốn dùng cho trạng thái UI):
Khái niệmThực hànhChuyển thểTự nhiênLịch sửVật liệuỨng dụng
Nhóm 1: Ba thể của chất
Divider label dùng để chia nhỏ 1 danh sách flashcard/thẻ dài thành từng nhóm mà không cần thêm 1 cấp heading mới.
Nhóm 2: Hỗn hợp & dung dịch
Mỗi divider-label đứng trước 1 nhóm nội dung liên quan, giúp mắt "quét" nhanh khi ôn tập.
HTML
<h2 id="tag-divider" class="section-heading"><span class="section-num">14</span>Tag phân loại & Divider label</h2>
<p>7 nhãn phân loại LOẠI nội dung của 1 thẻ (khác <code>.badge</code> — vốn dùng cho trạng thái UI):</p>
<p>
<span class="tag tag-concept">Khái niệm</span>
<span class="tag tag-practice">Thực hành</span>
<span class="tag tag-transition">Chuyển thể</span>
<span class="tag tag-nature">Tự nhiên</span>
<span class="tag tag-history">Lịch sử</span>
<span class="tag tag-material">Vật liệu</span>
<span class="tag tag-application">Ứng dụng</span>
</p>
<p class="divider-label">Nhóm 1: Ba thể của chất</p>
<p>Divider label dùng để chia nhỏ 1 danh sách flashcard/thẻ dài thành từng nhóm mà không cần thêm 1 cấp heading mới.</p>
<p class="divider-label">Nhóm 2: Hỗn hợp & dung dịch</p>
<p>Mỗi divider-label đứng trước 1 nhóm nội dung liên quan, giúp mắt "quét" nhanh khi ôn tập.</p>
15Timeline dọc (mốc sự kiện)
Dùng cho nội dung dạng chuỗi sự kiện theo thời gian (Lịch sử, tiểu sử, quá trình phát triển...). Mốc lẻ card bên trái, mốc chẵn bên phải, tự đổi thành 1 cột trên điện thoại:
Nhà nước Văn Lang
Nhà nước đầu tiên của người Việt, đứng đầu là các Vua Hùng.
🏹2879 TCN
⚔️179 TCN
Bắc thuộc lần 1
Bắt đầu hơn 1000 năm dưới ách đô hộ phong kiến phương Bắc.
Chiến thắng Bạch Đằng
Ngô Quyền đánh tan quân Nam Hán, mở ra kỷ nguyên độc lập tự chủ.
🌊938
HTML
<h2 id="timeline" class="section-heading"><span class="section-num">15</span>Timeline dọc (mốc sự kiện)</h2>
<p>Dùng cho nội dung dạng chuỗi sự kiện theo thời gian (Lịch sử, tiểu sử, quá trình phát triển...). Mốc lẻ card bên trái, mốc chẵn bên phải, tự đổi thành 1 cột trên điện thoại:</p>
<div class="timeline">
<div class="timeline__item">
<div class="timeline__side timeline__side--left">
<div class="timeline__card topic-1">
<h4>Nhà nước Văn Lang</h4>
<p>Nhà nước đầu tiên của người Việt, đứng đầu là các Vua Hùng.</p>
</div>
</div>
<div class="timeline__center">
<span class="timeline__dot topic-1">🏹</span>
<span class="timeline__year">2879 TCN</span>
</div>
<div class="timeline__side timeline__side--right"></div>
</div>
<div class="timeline__item">
<div class="timeline__side timeline__side--left"></div>
<div class="timeline__center">
<span class="timeline__dot topic-2">⚔️</span>
<span class="timeline__year">179 TCN</span>
</div>
<div class="timeline__side timeline__side--right">
<div class="timeline__card topic-2">
<h4>Bắc thuộc lần 1</h4>
<p>Bắt đầu hơn 1000 năm dưới ách đô hộ phong kiến phương Bắc.</p>
</div>
</div>
</div>
<div class="timeline__item">
<div class="timeline__side timeline__side--left">
<div class="timeline__card topic-5">
<h4>Chiến thắng Bạch Đằng</h4>
<p>Ngô Quyền đánh tan quân Nam Hán, mở ra kỷ nguyên độc lập tự chủ.</p>
</div>
</div>
<div class="timeline__center">
<span class="timeline__dot topic-5">🌊</span>
<span class="timeline__year">938</span>
</div>
<div class="timeline__side timeline__side--right"></div>
</div>
</div>
16Resource list (tài liệu & video tham khảo)
Danh sách liên kết tải tài liệu/xem video, có icon loại file và hiệu ứng hover: