Tooltip là một chú thích xuất hiện khi rê chuột lên 1 đối tượng nào đó như văn bản, hình ảnh, liên kết và các phần tử giao diện khác. ... Mục đích của tooltip là nói cho người dùng biết đối tượng này dùng để làm gì hoặc hiển thị thêm thông tin của đối tượng được rê chuột vào.
Các thủ thuật tạo Tooltip cũ thường có hai điểm yếu: phụ thuộc vào thư viện jQuery nặng nề và bị "chết" màu nền (thường là màu đen hoặc xám). Nếu blog của bạn có chế độ Dark Mode hoặc bạn thay đổi màu chủ đạo, Tooltip cũ sẽ trở nên lạc lõng.
Hôm nay, mình sẽ chia sẻ một giải pháp hoàn toàn khác biệt được tối ưu riêng cho blog của bạn. Phiên bản này dùng thẻ <a> thân thiện. Đặc biệt, mã Javascript sẽ tự động "hút" màu của liên kết để làm màu nền cho Tooltip, giúp chú thích luôn đồng bộ hoàn hảo với bất kỳ giao diện nào bạn đang sử dụng.
Các tính năng :
Auto-Theme Color: Tooltip tự động lấy mã màu của văn bản/liên kết đang được trỏ chuột vào để làm màu nền, kết hợp chữ trắng tương phản.
Zero jQuery: Viết bằng Vanilla JS thuần túy, không làm giảm điểm Google PageSpeed Insights.
Chuẩn UX/UI Di Động: Tự động tính toán tránh tràn màn hình và hỗ trợ chạm (touch) cực nhạy trên điện thoại.
Thân thiện với thẻ
<a>: Dễ dàng thao tác ngay trong trình soạn thảo, không lo bị nhảy trang.
Cách thực hiện
Bước 1: Chèn CSS
Vào trang quản trị Blogger > Chủ đề > Chỉnh sửa HTML. Nhấn Ctrl + F tìm thẻ ]]></b:skin> (hoặc </style>) và dán đoạn mã sau vào ngay phía trên:
/* CSS TOOLTIP TỰ ĐỘNG ĐỔI MÀU (TRỰC BLOG TỐI ƯU) */
/* KHAI BÁO BIẾN MÀU MẶC ĐỊNH (CHẾ ĐỘ SÁNG) */
:root {
--tooltip-bg: #334155;
--tooltip-text: #ffffff;
}
/* ĐẢO MÀU TỰ ĐỘNG CHO CHẾ ĐỘ TỐI (DARK MODE) */
@media (prefers-color-scheme: dark) {
:root {
--tooltip-bg: #e2e8f0; /* Nền sáng lên để nổi bật trên nền web đen */
--tooltip-text: #0f172a; /* Chữ chuyển thành màu tối */
}
}
/* Tích hợp cho các blog dùng nút gạt thủ công */
.dark, .dark-mode, [data-theme="dark"] {
--tooltip-bg: #e2e8f0;
--tooltip-text: #0f172a;
}
/* CẬP NHẬT LẠI KHUNG TOOLTIP */
.truc-tooltip-pro {
position: absolute;
background-color: var(--tooltip-bg) !important;
color: var(--tooltip-text) !important;
padding: 8px 14px;
border-radius: 8px;
font-size: 14px;
max-width: 280px;
text-align: center;
z-index: 99999;
pointer-events: none;
opacity: 0;
transform: translateY(10px);
transition: opacity 0.3s ease, transform 0.3s ease, background-color 0.3s, color 0.3s;
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.2);
word-wrap: break-word;
}
.truc-tooltip-pro.show {
opacity: 1;
transform: translateY(0);
}
/* CẬP NHẬT MŨI TÊN CHỈ HƯỚNG */
.truc-tooltip-pro::after {
content: '';
position: absolute;
bottom: -6px;
left: 50%;
transform: translateX(-50%);
border-width: 6px 6px 0;
border-style: solid;
border-color: var(--tooltip-bg) transparent transparent transparent !important;
}
.truc-tooltip-pro.bottom::after {
top: -6px;
bottom: auto;
border-width: 0 6px 6px;
border-color: transparent transparent var(--tooltip-bg) transparent !important;
}
Bước 2: Cài Đặt Mã Vanilla JS Xử Lý Thuật Toán Trượt & Nhận Diện Màu
Kéo xuống cuối trang mẫu HTML, tìm thẻ đóng
</body>và dán đoạn mã này vào ngay phía trên nó:<script> // <![CDATA[ document.addEventListener("DOMContentLoaded", function() { const tipTargets = document.querySelectorAll('a[rel~="tooltip"]'); tipTargets.forEach(target => { const tipContent = target.getAttribute('title'); if (!tipContent) return; // Đẩy nội dung vào biến data và xóa title để trình duyệt không hiện chú thích mặc định target.setAttribute('data-tip', tipContent); target.removeAttribute('title'); let tipBox; const showTip = () => { if (document.querySelector('.truc-tooltip-pro')) return; tipBox = document.createElement('div'); tipBox.className = 'truc-tooltip-pro'; tipBox.innerHTML = target.getAttribute('data-tip'); // THUẬT TOÁN HÚT MÀU: Lấy màu text của thẻ a đang hover để làm màu nền tooltip const targetColor = window.getComputedStyle(target).color; tipBox.style.setProperty('--tip-bg', targetColor); document.body.appendChild(tipBox); const targetRect = target.getBoundingClientRect(); const tipRect = tipBox.getBoundingClientRect(); let topPos = targetRect.top + window.scrollY - tipRect.height - 12; let leftPos = targetRect.left + window.scrollX + (targetRect.width / 2) - (tipRect.width / 2); // Chống tràn màn hình điện thoại if (leftPos < 10) leftPos = 10; if (leftPos + tipRect.width > window.innerWidth - 10) { leftPos = window.innerWidth - tipRect.width - 10; } if (topPos < window.scrollY + 10) { topPos = targetRect.bottom + window.scrollY + 12; tipBox.classList.add('bottom'); // Đảo mũi tên lên trên } tipBox.style.left = leftPos + 'px'; tipBox.style.top = topPos + 'px'; // Tạo độ trễ nhỏ để CSS Transition hoạt động mượt requestAnimationFrame(() => tipBox.classList.add('show')); }; const hideTip = () => { if (tipBox) { tipBox.classList.remove('show'); setTimeout(() => { if (tipBox && tipBox.parentNode) { tipBox.parentNode.removeChild(tipBox); } tipBox = null; }, 300); } }; // Chuột trên máy tính target.addEventListener('mouseenter', showTip); target.addEventListener('mouseleave', hideTip); // Chạm trên màn hình điện thoại target.addEventListener('touchstart', showTip, {passive: true}); target.addEventListener('touchend', () => setTimeout(hideTip, 2500)); }); }); // ]]> </script>
Bước 3: Cách Áp Dụng Chuyên Nghiệp Trong Bài Đăng
Khi soạn bài viết, bạn chuyển sang chế độ HTML và sử dụng cấu trúc thẻ <a> như sau. Lưu ý thuộc tính href="javascript:void(0);" giúp thẻ hoạt động như một vùng chứa chú thích mà không làm trình duyệt tải lại trang khi vô tình nhấp chuột.
Kiểu 1: Chú thích chữ thuần túy
<a href="javascript:void(0);" title="Màu nền của box này sẽ tự lấy theo màu chữ hiện tại" rel="tooltip">Chú thích thông thường</a>
Kiểu 2: Chú thích chứa định dạng HTML (In đậm, nghiêng)
<a href="javascript:void(0);" rel="tooltip" title="Nội dung này chứa chữ <strong>in đậm</strong> và <em>in nghiêng</em> rất rõ ràng.">Chú thích có định dạng</a>
Kiểu 3: Tích hợp Tooltip lên Link điều hướng thực tế
Bạn cứ gắn link vào thuộc tính href như bình thường, tính năng chú thích vẫn tự động xuất hiện.
<a href="https://trucblogs.blogspot.com/" rel="tooltip" title="Nhấp vào để truy cập Trang chủ">Trực Blog</a>
DEMO
Lưu mẫu lại và ra bài viết kiểm tra. Bất kể link trong theme của bạn màu xanh lục, đỏ thẫm hay cam, Tooltip sẽ tự động nhận diện và biến hóa màu sắc đồng bộ ngay lập tức!

Để tối test thử xem sao nào :)
Trả lờiXóa