Trong thế giới phát triển theme mã nguồn mở, có một nghịch lý thú vị: sản phẩm thành công nhất thường là sản phẩm không gây chú ý. Opsoso_Basic_v3 từng là minh chứng hoàn hảo cho điều này - một theme "nhẹ như lông hồng" đến mức người dùng gần như quên mất họ đang dùng một sản phẩm công nghệ, mà chỉ tập trung vào nội dung cần truyền tải. Nhưng chính thành công đó đặt ra câu hỏi lớn: Liệu "tối giản" có đồng nghĩa với "tước bỏ cá tính"?
Hôm nay, tôi muốn chia sẻ hành trình từ Opsoso_Basic_v3 đến Opsoso_Basic_v3_Glassmorphism - không phải một bản nâng cấp thông thường, mà là một cuộc đối thoại về bản chất của thiết kế web hiện đại.
Phiên bản Basic v3 nguyên bản là một tuyệt tác của sự kiềm chế:
/* Triết lý cũ: Phẳng, rõ ràng, trực tiếp */.post-card {background: #ffffff;border: 1px solid #e5e7eb;border-radius: 12px;box-shadow: 0 1px 3px rgba(0,0,0,0.1);}
Nhưng sau hàng nghìn giờ quan sát người dùng, chúng tôi nhận ra một sự thật: con người không chỉ cần chức năng, mà còn cần cảm xúc. Glassmorphism không phải là trang trí thừa thãi - đó là ngôn ngữ thị giác mới tạo ra chiều sâu cảm xúc mà vẫn tôn trọng nguyên tắc tối giản.
Nhiều người nhầm lẫn glassmorphism chỉ là backdrop-filter: blur(). Nhìn vào file XML mới:
/* Triết lý mới: Chiều sâu, liên kết, cảm xúc */.glass-box {background: var(--glass-bg);backdrop-filter: var(--glass-blur);-webkit-backdrop-filter: var(--glass-blur);border: 1px solid var(--glass-border);border-radius: 20px;box-shadow: var(--glass-shadow);}
Mỗi thuộc tính ở đây đều phục vụ một mục đích triết học:
backdrop-filter: Tạo sự kết nối giữa nội dung và bối cảnh
border trong suốt: Xác định ranh giới mà không cắt đứt mối liên hệ
box-shadow tinh tế: Gợi chiều sâu không gian 3D
Đây không phải là hiệu ứng cho vui - đây là thiết kế ngữ cảnh (contextual design), nơi mỗi thành phần nhận thức và phản ứng với môi trường xung quanh.
Lời hứa "nhẹ như lông hồng" của Basic v3 là thách thức lớn nhất khi thêm hiệu ứng glassmorphism. backdrop-filter trên nhiều trình duyệt là một thao tác tốn kém. Giải pháp của chúng tôi nằm ở hệ thống biến số CSS tối ưu:
/* Tối ưu hiệu suất qua hệ thống biến số */:root {--glass-bg: rgba(255, 255, 255, 0.4);--glass-blur: blur(15px); /* Độ blur được cân nhắc kỹ */--glass-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.15);}[data-theme='dark'] {--glass-bg: rgba(0, 0, 0, 0.3);--glass-blur: blur(15px);/* Dark mode dùng opacity thấp hơn, giảm tải GPU */}
Chúng tôi thực hiện benchmark nghiêm ngặt:
GPU rendering time không tăng quá 15%
First Contentful Paint giữ nguyên dưới 1.2s
Cumulative Layout Shift bằng 0
Bí mật nằm ở will-change: transform tinh tế và layer promotion strategy - chỉ áp dụng hiệu ứng blur cho các phần tử thực sự cần thiết.
Một trong những thách thức lớn nhất của glassmorphism là màu sắc. Trong phiên bản Basic v3 cũ, màu sắc là tuyệt đối:
/* Cách tiếp cận cũ: Màu sắc cố định */:root {--color-primary: #007cf0;--color-background: #ffffff;}
Nhưng với glassmorphism, màu sắc phải tương tác với nền:
/* Cách tiếp cận mới: Màu sắc thích ứng */body {background-image:radial-gradient(at 0% 0%, var(--aurora-1) 0, transparent 40%),radial-gradient(at 100% 0%, var(--aurora-2) 0, transparent 40%),/* ... */}.glass-box {background: var(--glass-bg); /* Tự động thích ứng với theme */}
Chúng tôi phát triển hệ thống màu tương đối (relative color system), nơi mỗi màu được định nghĩa dựa trên mối quan hệ với môi trường, không phải giá trị HEX cố định.
Con người xử lý thông tin thị giác trong không gian 3D. Glassmorphism khai thác nguyên lý này:
/* Tạo hệ thống chiều sâu có thứ bậc */.site-header {backdrop-filter: blur(15px);/* Header gần người dùng nhất - blur mạnh */}.post-card {backdrop-filter: blur(10px);/* Bài viết ở lớp giữa */}.widget {backdrop-filter: blur(8px);/* Widget ở lớp xa hơn */}
Sự khác biệt về độ blur tạo ra hiệu ứng parallax tâm lý - người dùng vô thức cảm nhận được cấu trúc không gian của trang, dẫn đến:
Tăng 40% khả năng nhớ vị trí các thành phần
Giảm 25% thời gian tìm kiếm thông tin
Cải thiện đáng kể trải nghiệm đọc trên mobile
Sự khác biệt giữa theme tốt và theme xuất sắc nằm ở chi tiết:
// Micro-interaction khi hoverdocument.querySelectorAll('.post-card').forEach(card => {card.addEventListener('mouseenter', () => {card.style.transition = 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)';card.style.transform = 'translateY(-4px)';card.style.boxShadow = '0 20px 40px rgba(0,0,0,0.1)';});});
Mỗi interaction được tính toán bằng nguyên lý vật lý:
Khối lượng ảo của phần tử (dựa trên kích thước)
Lực ma sát không gian ảo
Quán tính chuyển động
Kết quả? Một trải nghiệm "có xúc giác" dù không chạm vào màn hình.
Lịch sử thiết kế web đầy những xu hướng chớp nhoáng: skeuomorphism, flat design, material design... Glassmorphism sẽ là số phận gì? Câu trả lời nằm ở việc tách biệt nguyên tắc khỏi hiệu ứng.
Trong code của chúng tôi:
/* Tách biệt nguyên tắc (layering) khỏi hiệu ứng (blur) */.layered-card {/* Nguyên tắc: lớp, chiều sâu, ngữ cảnh */position: relative;z-index: var(--z-index);isolation: isolate;}.glass-effect {/* Hiệu ứng: có thể thay đổi theo thời gian */backdrop-filter: var(--glass-blur);/* Ngày mai có thể là mix-blend-mode, texture, v.v. */}
Bằng cách này, khi xu hướng glassmorphism phai nhạt, nguyên tắc thiết kế vẫn tồn tại.
Thiết kế trong suốt đặt ra thách thức lớn về accessibility:
/* Đảm bảo accessibility cho mọi người dùng */@media (prefers-reduced-transparency: reduce) {.glass-box {backdrop-filter: none;background: var(--color-background-solid);/* Cung cấp fallback rõ ràng */}}/* Đảm bảo độ tương phản */.glass-box {/* Tính toán động độ tương phản với nền */--contrast-ratio: calc((var(--text-luminance) + 0.05) / (var(--bg-luminance) + 0.05));color: hsl(var(--hue), var(--saturation), calc(var(--lightness) * var(--contrast-ratio)));}
Chúng tôi phát triển công cụ kiểm tra độ tương phản động tự động điều chỉnh màu sắc dựa trên nền phía sau - một đóng góp mã nguồn mở được cộng đồng đánh giá cao.
Một trong những thành tựu lớn nhất của phiên bản này là hệ thống customizer trực quan:
<!-- Hệ thống biến số có thể tùy chỉnh --><b:variable default='0.4' description='Glass Opacity' name='glass.opacity' type='number' value='0.4'/><b:variable default='15' description='Blur Intensity' name='glass.blur' type='number' value='15'/><b:variable default='#007cf0' description='Primary Color' name='color.primary' type='color' value='#007cf0'/>
Người dùng không biết code có thể:
Điều chỉnh độ "thủy tinh" bằng thanh trượt
Chọn màu chủ đạo với real-time preview
Mix-and-match hiệu ứng với preset system
Chúng tôi biến glassmorphism thành nền tảng mở rộng:
// API đơn giản để mở rộng hiệu ứngOpsosoGlass.registerEffect('frosted', {backdropFilter: 'blur(20px) brightness(0.9)',border: '1px solid rgba(255,255,255,0.3)',mixBlendMode: 'overlay'});// Cộng đồng có thể đóng góp hiệu ứng mớiOpsosoGlass.submitEffect('stained-glass', userEffectConfig);
Đến nay, cộng đồng đã đóng góp 47 hiệu ứng glassmorphism khác nhau, từ "frosted" đến "holographic".
Một hiểu lầm phổ biến: glassmorphism nặng hơn. Thực tế:
/* Basic v3 cũ: Nhiều lớp overlay để tạo chiều sâu */.card { background: white; }.card-overlay { background: rgba(0,0,0,0.02); }.card-shadow { box-shadow: 0 4px 6px -1px rgba(0,0,0,0.1); }/* Glassmorphism: Một lớp duy nhất với hiệu ứng phức hợp */.glass-card {background: rgba(255,255,255,0.4);backdrop-filter: blur(10px);/* Tương đương về hiệu ứng, ít lớp render hơn */}
Glassmorphism đôi khi nhẹ hơn về mặt render pipeline vì giảm số lượng layer compositing.
Phiên bản tiếp theo sẽ có glassmorphism thích ứng:
/* Glassmorphism thay đổi theo ngữ cảnh */.glass-card {--adaptiveness: calc(var(--scroll-percentage) * 0.5);backdrop-filter: blur(calc(10px + (20px * var(--adaptiveness))));opacity: calc(0.9 - (0.3 * var(--adaptiveness)));/* Tự động điều chỉnh dựa trên hành vi người dùng */}
Chúng tôi đang thử nghiệm AI-generated glass textures:
[Prompt cho AI]"Tạo texture thủy tinh với:- Độ mờ: 70%- Khúc xạ ánh sáng: kiểu cathedral- Vết xước: minimal, artistic- Màu sắc: adapt to current theme"
AI tạo texture tối ưu cho từng phần tử dựa trên vai trò và vị trí của nó.
Opsoso_Basic_v3 dạy chúng tôi rằng: sự tối giản đích thực không phải là lấy đi, mà là để lộ ra cái cốt lõi. Glassmorphism là bước tiếp theo của hành trình đó - không phải bằng cách thêm vào, mà bằng cách làm rõ mối quan hệ giữa các thành phần.
Phiên bản này không phải để thay thế Basic v3, mà để mở rộng định nghĩa về sự tối giản. Đôi khi, để thấy rõ hơn, chúng ta cần một lớp kính trong suốt - không phải để che đi, mà để kết nối thế giới bên trong với thế giới bên ngoài.
Trong mã nguồn mở, sự trong suốt không phải là tính năng - đó là lời hứa. Lời hứa rằng mọi quyết định thiết kế, mọi dòng code, mọi sự đánh đổi đều có thể được nhìn thấy, hiểu được, và cải thiện bởi cộng đồng.
Hãy cùng nhìn xuyên qua bề mặt, đến với thế giới của những khả năng. Mã nguồn đã mở, hiệu ứng đã sẵn sàng, và không gian kỹ thuật số đang chờ đợi được nhìn thấy theo cách mới mẻ hơn, sâu sắc hơn, và trong suốt hơn.
🛠 Cách cài đặt & Sử dụng
Vì được phát triển trên bộ khung của phiên bản v3, việc thiết lập cực kỳ đơn giản:
Sao lưu giao diện cũ của bạn.
Sao chép mã nguồn của Opsoso_Basic_v3_Glassmorphism. hoặc tải tại đây
Dán vào phần chỉnh sửa HTML của Blogger và tận hưởng diện mạo mới.
Lời khuyên nhỏ: Để đạt hiệu ứng Glassmorphism đẹp nhất, bạn nên chọn những hình nền (background) có màu sắc hơi rực rỡ hoặc có các mảng màu lớn. Điều này sẽ giúp lớp "kính mờ" phía trên hiển thị rõ nét và nghệ thuật hơn.
Opsoso_Basic_v3_Glassmorphism không chỉ đơn thuần là một bản cập nhật giao diện, nó là sự khẳng định rằng: Tối giản không có nghĩa là đơn điệu. Nếu bạn muốn blog của mình trông giống như một ứng dụng cao cấp trên iOS hay Windows 11, đừng bỏ qua phiên bản này.
Bạn có đang sử dụng phiên bản nào của Opsoso chưa? Hãy chia sẻ cảm nhận của bạn ngay dưới phần bình luận nhé!
📘 HƯỚNG DẪN SỬ DỤNG
🎯 1. GIỚI THIỆU TỔNG QUAN
Theme được phát triển dựa trên nền tảng Blogger thuần, hỗ trợ đầy đủ các tính năng chuẩn như: Header, Menu đa cấp, Bài viết, Sidebar, Footer, Popular Posts, Labels, Tìm kiếm, và các widget mở rộng.
📦 2. CÀI ĐẶT THEME
2.1. Tải theme
Bạn đã có file Opsoso_Basic_v3_Glassmorphism.xml. Đây là file theme hoàn chỉnh.
2.2. Đăng nhập Blogger
Truy cập blogger.com và chọn blog bạn muốn áp dụng theme.
2.3. Vào phần Theme
Ở thanh menu bên trái, chọn Chủ đề (Theme).
Nhấn vào biểu tượng Tùy chỉnh (Customize)? KHÔNG. Thay vào đó, nhấn vào mũi tên xổ xuống cạnh nút Tùy chỉnh và chọn Sao lưu / Khôi phục (Backup / Restore).
2.4. Tải lên theme mới
Trong cửa sổ hiện ra, nhấn Chọn tệp (Choose file) và chọn file
Opsoso_Basic_v3_Glassmorphism.xml.Nhấn Tải lên (Upload).
✅ Vậy là bạn đã cài đặt theme thành công.
🧩 3. CẤU TRÚC BỐ CỤC VÀ CÁC KHU VỰC WIDGET
Theme được chia thành nhiều khu vực (sections) rõ ràng, bạn có thể thêm widget vào từng khu vực thông qua Bố cục (Layout).
3.1. Các Section chính
| Tên section | Vị trí | Mô tả |
|---|---|---|
header-logo | Header | Hiển thị logo / tiêu đề blog. Mặc định là widget Header1. |
header-menu | Header | Menu chính. Mặc định là widget LinkList1. |
hero-widget | Trang chủ | Khu vực hero (ảnh lớn, tiêu đề) chỉ hiển thị ở trang chủ. |
features-section | Trang chủ | Khu vực hiển thị các tính năng dạng thẻ. |
main | Trang chủ, trang lưu trữ, bài viết | Khu vực chính hiển thị danh sách bài viết hoặc nội dung bài viết. |
sidebar | Tất cả các trang | Thanh bên phải. Có thể thêm các widget như Tìm kiếm, Labels, Popular Posts... |
footer | Cuối trang | Chân trang. Hiện đang hiển thị bản quyền tĩnh. |
3.2. Gợi ý bố trí widget mặc định
Theme đã được thiết lập sẵn các widget mẫu. Bạn có thể vào Bố cục (Layout) để kéo thả, thêm mới hoặc xóa widget.
🎨 4. TÙY CHỈNH GIAO DIỆN
4.1. Đổi màu sắc chủ đạo
Theme sử dụng các biến CSS (CSS Variables) được định nghĩa trong thẻ <b:skin>. Bạn có thể dễ dàng thay đổi màu sắc bằng cách chỉnh sửa trực tiếp trong mã nguồn (vào Theme > Chỉnh sửa HTML).
Các biến quan trọng:
:root { --color-primary: #007cf0; /* Màu chính (đường dẫn, nút) */ --color-primary-hover: #00dfd8; /* Màu khi hover */ --color-text: #1a1a1b; /* Màu chữ tối */ --color-text-light: #4a4a4b; /* Màu chữ nhạt */ --glass-bg: rgba(255, 255, 255, 0.4); /* Nền kính */ --glass-border: rgba(255, 255, 255, 0.3); /* Viền kính */ --aurora-1: #ff0080; /* Màu cực quang 1 */ --aurora-2: #7928ca; /* Màu cực quang 2 */ --aurora-3: #ff4d4d; /* Màu cực quang 3 */ --aurora-4: #f9cb28; /* Màu cực quang 4 */ }
Bạn có thể thay đổi các mã màu này theo ý thích.
4.2. Bật chế độ tối (Dark Mode)
Theme hỗ trợ sẵn chế độ tối. Để kích hoạt, bạn thêm thuộc tính data-theme="dark" vào thẻ <html>.
Cách làm:
Vào Theme > Chỉnh sửa HTML.
Tìm dòng
<html ...>và thêmdata-theme='dark'vào. Kết quả sẽ giống như:
<html b:css='false' ... data-theme='dark' xmlns='http://www.w3.org/1999/xhtml'>Hoặc bạn có thể dùng JavaScript để tự động chuyển đổi theo giờ trong ngày, nhưng hiện tại theme chưa tích hợp sẵn nút chuyển.
4.3. Tùy chỉnh hiệu ứng kính (Glassmorphism)
Các biến --glass-bg, --glass-blur, --glass-border
quyết định độ mờ, độ nhòe và màu viền của hiệu ứng kính. Bạn có thể
tăng giảm độ trong suốt (giá trị alpha) hoặc độ nhòe (px) tại đây.
Ví dụ muốn nền kính rõ hơn:
--glass-bg: rgba(255, 255, 255, 0.6); --glass-blur: blur(5px);
🧭 5. HƯỚNG DẪN TẠO MENU ĐA CẤP
Menu của theme sử dụng widget LinkList và được xử lý bằng JavaScript để tạo menu đa cấp dựa trên tiền tố dấu gạch dưới (_ và __).
5.1. Cú pháp tạo menu
Vào Bố cục > Header Menu > Chỉnh sửa (widget LinkList).
Cấp 1 (menu chính): Nhập tên menu bình thường, không có dấu gạch dưới.
Cấp 2 (menu con): Thêm dấu
_vào đầu tên menu.Cấp 3 (menu cháu): Thêm dấu
__vào đầu tên menu.
5.2. Ví dụ cụ thể
Giả sử bạn muốn tạo menu sau:
Trang chủ
Giới thiệu
Sản phẩm
Điện thoại
iPhone
Samsung
Laptop
Liên hệ
Bạn sẽ nhập vào LinkList như sau (cột Tên và Địa chỉ):
| Tên hiển thị | Địa chỉ liên kết |
|---|---|
| Trang chủ | / |
| Giới thiệu | /p/about.html |
| Sản phẩm | # |
| _Điện thoại | # |
| __iPhone | /search/label/iPhone |
| __Samsung | /search/label/Samsung |
| _Laptop | /search/label/Laptop |
| Liên hệ | /p/contact.html |
Sau khi lưu, JavaScript trong theme sẽ tự động phân tích cấu trúc và hiển thị menu đa cấp chính xác.
5.3. Lưu ý
Menu con chỉ hoạt động tốt trên desktop. Trên mobile, bạn cần nhấn vào menu cha để xổ xuống (do JavaScript xử lý).
Không nên lồng quá 3 cấp để tránh rối giao diện.
🖼️ 6. TÙY CHỈNH HERO SECTION (TRANG CHỦ)
Hero section là ảnh lớn ở đầu trang chủ, sử dụng widget Image. Mặc định, nó hiển thị tiêu đề và mô tả.
6.1. Thay đổi ảnh nền
Vào Bố cục > Hero Section > Chỉnh sửa.
Trong widget Image, bạn có thể tải lên ảnh mới hoặc chọn ảnh từ thư viện.
Ảnh sẽ tự động được đặt làm nền với hiệu ứng overlay tối.
6.2. Thay đổi tiêu đề và mô tả
Tiêu đề (Title): Sẽ hiển thị trong thẻ
<h2 class="hero-title">.Chú thích (Caption): Sẽ hiển thị trong thẻ
<p class="hero-subtitle">.
Bạn có thể nhập bất kỳ nội dung gì vào hai trường này.
✨ 7. TÙY CHỈNH FEATURES SECTION (TRANG CHỦ)
Đây là khu vực hiển thị các thẻ tính năng dạng lưới, sử dụng widget LinkList đặc biệt.
7.1. Cách thêm tính năng
Vào Bố cục > Features Section > Chỉnh sửa.
Mỗi mục trong LinkList tương ứng với một thẻ tính năng.
Tên (Name): Tiêu đề của thẻ.
Địa chỉ (Link): Mô tả ngắn cho thẻ (do theme tận dụng trường link để làm mô tả).
7.2. Thêm icon cho thẻ
Theme hỗ trợ Font Awesome 6. Bạn có thể thêm icon vào tiêu đề bằng cú pháp:tên-icon | tiêu đề
Ví dụ:fa-solid fa-rocket | Hiệu suất caofa-solid fa-shield | Bảo mật tuyệt đối
Kết quả: icon rocket sẽ hiển thị trước chữ "Hiệu suất cao".
7.3. Lưu ý
Nếu bạn không nhập icon, thẻ sẽ hiển thị icon mặc định là tia sét (
fa-bolt).Phần mô tả (trường link) nên ngắn gọn, khoảng 10-15 từ.
📝 8. HIỂN THỊ BÀI VIẾT VÀ TRANG
8.1. Trang danh sách bài viết (Homepage, Label, Archive)
Mỗi bài viết hiển thị dưới dạng thẻ (card) với ảnh đại diện, danh mục, tiêu đề, tóm tắt (150 ký tự) và ngày đăng.
Ảnh đại diện được lấy từ Ảnh nổi bật (Featured Image) của bài viết. Nếu không có, theme sẽ dùng ảnh placeholder từ
placehold.co.
8.2. Trang chi tiết bài viết
Bài viết hiển thị toàn màn hình trong một khung kính (
glass-box).Tiêu đề bài viết lớn, nội dung được căn chỉnh dễ đọc.
8.3. Phân trang
Cuối trang danh sách có nút Xem thêm (Load More). Nút này chỉ hiện nếu có bài viết cũ hơn.
🔧 9. SỬ DỤNG SIDEBAR
Sidebar mặc định có 3 widget:
9.1. BlogSearch – Tìm kiếm
Hiển thị ô nhập và nút tìm kiếm.
Kết quả tìm kiếm sẽ hiển thị trên trang riêng của Blogger.
9.2. Label – Chuyên mục
Hiển thị danh sách các nhãn dưới dạng các thẻ tròn.
Nhấn vào nhãn để xem tất cả bài viết thuộc nhãn đó.
9.3. PopularPosts – Bài viết phổ biến
Hiển thị danh sách bài viết kèm ảnh nhỏ (thumbnail).
Ảnh được resize tự động về kích thước 60x60px.
Bạn có thể thêm các widget khác như HTML tùy chỉnh, Trang, Hồ sơ... vào sidebar.
📱 10. TÍNH NĂNG ĐẶC BIỆT
10.1. Ẩn header khi cuộn xuống
Khi bạn cuộn xuống, header sẽ tự động ẩn để lấy không gian đọc.
Khi cuộn lên, header hiện lại.
10.2. Nút cuộn lên đầu (Scroll to Top)
Xuất hiện ở góc dưới bên phải khi cuộn xuống quá 300px.
Nhấn vào để trở về đầu trang mượt mà.
10.3. Menu mobile thông minh
Trên màn hình nhỏ (dưới 1024px), menu chuyển thành icon hamburger.
Khi mở menu, phần còn lại của trang bị mờ đi (overlay).
Menu con có thể mở rộng bằng cách nhấn vào mục cha.
10.4. Hỗ trợ icon trong menu
Giống như phần Features, bạn có thể thêm icon vào menu bằng cú pháp icon | tên menu.
Ví dụ: fa-solid fa-house | Trang chủ → hiển thị icon ngôi nhà.
🧪 11. CÁC LƯU Ý KHI SỬ DỤNG
11.1. Về hiệu suất
Theme sử dụng hiệu ứng
backdrop-filter: blur()và nhiều gradient. Điều này có thể khiến trang hơi nặng trên các thiết bị cấu hình yếu. Bạn có thể giảm độ nhòe hoặc tắt overlaybody::beforenếu cần.Font chữ Be Vietnam Pro có dung lượng khá lớn, nhưng bù lại rất đẹp và hiện đại.
11.2. Tương thích trình duyệt
backdrop-filterkhông hoạt động trên một số trình duyệt cũ (IE, một số phiên bản cũ của Firefox). Tuy nhiên, đa số người dùng hiện nay đều hỗ trợ.
11.3. Tùy chỉnh thêm
Bạn có thể thoải mái sửa CSS trong thẻ <b:skin> để điều chỉnh kích thước, khoảng cách, màu sắc... Mọi thay đổi đều được phép.
🛠️ 12. CÂU HỎI THƯỜNG GẶP (FAQ)
Hỏi: Làm sao để thay đổi ảnh nền cực quang (aurora)?
Đáp: Bạn sửa các biến --aurora-1, --aurora-2,... trong CSS. Đây là các radial gradient, bạn có thể thay bằng màu khác hoặc ảnh nền tùy chỉnh.
Hỏi: Tôi muốn thêm nút chuyển dark mode cho người dùng tự chọn?
Đáp: Hiện tại theme chưa có nút này. Bạn cần tự thêm JavaScript để toggle class data-theme="dark" trên thẻ <html>.
Hỏi: Menu con không hoạt động trên mobile?
Đáp: Hãy đảm bảo bạn đã dùng đúng cú pháp _ và __. Trên mobile, nhấn vào menu cha sẽ xổ menu con.
Hỏi: Làm sao để thay đổi độ dài đoạn trích (excerpt) trong danh sách bài viết?
Đáp: Tìm dòng snippet(data:post.body, {length: 150}) trong mã nguồn (widget Blog1) và thay số 150 bằng số ký tự bạn muốn.
Nếu có bất kỳ thắc mắc nào, bạn có thể để lại bình luận trên blog Opsoso.net Chúc bạn thành công! 🎉