Tooltip Component
CSS-only Tailwind CSS tooltip with top, bottom, left, and right placement. Color variants, no JavaScript required. WCAG AA accessible, works with Django, HTMX, Laravel, React, and any stack.
Các thành phần chú giải công cụ hiển thị thông tin bổ sung khi người dùng di chuột qua hoặc tập trung vào một phần tử. Được xây dựng bằng các thuộc tính HTML ngữ nghĩa và CSS, chú giải công cụ nâng cao trải nghiệm người dùng bằng cách cung cấp trợ giúp theo ngữ cảnh cụ thể mà không làm lộn xộn giao diện. Hệ thống chú giải công cụ Frutjam hỗ trợ nhiều vị trí, nội dung tùy chỉnh và hình ảnh động mượt mà để khám phá thông tin liền mạch.
Chỉ CSS, không cần JavaScript. WCAG AA có thể truy cập và không phụ thuộc vào khung — hoạt động với Django, HTMX, Laravel, React và bất kỳ ngăn xếp nào.
Lưu ý: Chú giải công cụ dựa trên :hover và :focus, những tính năng này không khả dụng trên thiết bị cảm ứng/di động. Đối với bố cục ưu tiên thiết bị di động, hãy sử dụng biến thể đáp ứng lg:tooltip để chú giải công cụ chỉ kích hoạt trên máy tính để bàn (màn hình lớn trở lên). Trên màn hình nhỏ hơn, hãy cân nhắc sử dụng mẫu tiết lộ khác, chẳng hạn như popover hoặc phương thức.
| Lớp học | Kiểu | Sự miêu tả |
|---|---|---|
| tooltip | Căn cứ | Trình bao bọc hiển thị nội dung data-tip khi di chuột/tiêu điểm |
| tooltip-content | Công cụ sửa đổi | Nội dung HTML tùy chỉnh bên trong bong bóng chú giải công cụ |
| tooltip-top | Công cụ sửa đổi | Mở phía trên trình kích hoạt (mặc định) |
| tooltip-bottom | Công cụ sửa đổi | Mở bên dưới cò súng |
| tooltip-left | Công cụ sửa đổi | Mở ở bên trái của cò súng |
| tooltip-right | Công cụ sửa đổi | Mở ở bên phải cò súng |
| tooltip-start | Công cụ sửa đổi | Mở về phía bắt đầu hợp lý |
| tooltip-end | Công cụ sửa đổi | Mở về phía cuối hợp lý |
| tooltip-primary | Màu sắc | Primary theme color bubble |
| tooltip-secondary | Màu sắc | Secondary theme color bubble |
| tooltip-accent | Màu sắc | Accent theme color bubble |
| tooltip-neutral | Màu sắc | Neutral theme color bubble |
| tooltip-info | Màu sắc | Info semantic color bubble |
| tooltip-success | Màu sắc | Success semantic color bubble |
| tooltip-warning | Màu sắc | Warning semantic color bubble |
| tooltip-error | Màu sắc | Error semantic color bubble |
Chú giải công cụ
1 2 3 | <div class="tooltip" data-tip="Tooltip"> <button class="btn">Hover me</button> </div> |
1 2 3 | <div className="tooltip" data-tip="Tooltip"> <button className="btn">Hover me</button> </div> |
Nội dung chú giải công cụ tùy chỉnh
1 2 3 4 5 6 7 | <div class="tooltip tooltip-end"> <div class="tooltip-content"> <div class="text-xl">❤️</div> <div>Like</div> </div> <button class="btn">Hover me</button> </div> |
Chú giải công cụ có biểu tượng
1 2 3 4 5 6 | <div class="tooltip" data-tip="Menu"> <button class="btn btn-sm"> <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 5h16"/><path d="M4 12h16"/><path d="M4 19h16"/></svg> <span class="sr-only">Menu</span> </button> </div> |
Buộc mở chú giải công cụ
1 2 3 | <div class="tooltip tooltip-open" data-tip="hello"> <button class="btn">Force open</button> </div> |
Tùy chọn định vị chú giải công cụ
Vị trí hàng đầu
1 2 3 | <div class="tooltip tooltip-top tooltip-open" data-tip="Tooltip top"> <button class="btn">Top position</button> </div> |
Đúng vị trí
1 2 3 | <div class="tooltip tooltip-right tooltip-open" data-tip="Tooltip right"> <button class="btn">Right position</button> </div> |
Vị trí cuối cùng
1 2 3 | <div class="tooltip tooltip-end tooltip-open" data-tip="Tooltip end"> <button class="btn">End position</button> </div> |
Vị trí dưới cùng
1 2 3 | <div class="tooltip tooltip-bottom tooltip-open" data-tip="Tooltip bottom"> <button class="btn">Bottom position</button> </div> |
Vị trí bên trái
1 2 3 | <div class="tooltip tooltip-left tooltip-open" data-tip="Tooltip left"> <button class="btn">Left position</button> </div> |
Bắt đầu vị trí
1 2 3 | <div class="tooltip tooltip-start tooltip-open" data-tip="Tooltip start"> <button class="btn">Start position</button> </div> |
Các biến thể màu của chú giải công cụ
Màu cơ bản
1 2 3 | <div class="tooltip tooltip-primary tooltip-open" data-tip="Primary"> <button class="btn btn-xs">Primary color</button> </div> |
Màu phụ
1 2 3 | <div class="tooltip tooltip-secondary tooltip-open" data-tip="Secondary"> <button class="btn btn-xs">Secondary color</button> </div> |
Màu nhấn
1 2 3 | <div class="tooltip tooltip-accent tooltip-open" data-tip="Accent"> <button class="btn btn-xs">Accent color</button> </div> |
Màu thông tin
1 2 3 | <div class="tooltip tooltip-info tooltip-open" data-tip="Info"> <button class="btn btn-xs">Info color</button> </div> |
Màu thành công
1 2 3 | <div class="tooltip tooltip-success tooltip-open" data-tip="Success"> <button class="btn btn-xs">Success color</button> </div> |
Màu cảnh báo
1 2 3 | <div class="tooltip tooltip-warning tooltip-open" data-tip="Warning"> <button class="btn btn-xs">Warning color</button> </div> |
Màu lỗi
1 2 3 | <div class="tooltip tooltip-error tooltip-open" data-tip="Error"> <button class="btn btn-xs">Error color</button> </div> |
Màu trung tính
1 2 3 | <div class="tooltip tooltip-neutral tooltip-open" data-tip="Neutral"> <button class="btn btn-xs">Neutral color</button> </div> |
Chú giải công cụ đáp ứng
Chỉ hiển thị trên màn hình lớn với lg:tooltip
1 2 3 | <div class="lg:tooltip" data-tip="Hey there!"> <button class="btn">Hover me</button> </div> |
JS & React Helper
Sử dụng createTooltip từ frutjam/js hoặc useTooltip từ frutjam/react để hiển thị hoặc ẩn chú giải công cụ theo chương trình — hữu ích cho các chuyến tham quan có hướng dẫn hoặc văn bản trợ giúp được kích hoạt.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <div class="flex gap-2 mb-4"> <button class="btn btn-sm" id="tip-show">Show</button> <button class="btn btn-sm" id="tip-hide">Hide</button> <button class="btn btn-sm" id="tip-toggle">Toggle</button> </div> <div class="tooltip" data-tip="Programmatic tooltip" id="js-tooltip"> <button class="btn">Target</button> </div> <script type="module"> import { createTooltip } from 'frutjam/js' const tip = createTooltip(document.getElementById('js-tooltip')) document.getElementById('tip-show').onclick = () => tip.show() document.getElementById('tip-hide').onclick = () => tip.hide() document.getElementById('tip-toggle').onclick = () => tip.toggle() </script> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | import { useTooltip } from 'frutjam/react' export default function TooltipDemo() { const tooltip = useTooltip() return ( <> <div className="flex gap-2 mb-4"> <button className="btn btn-sm" onClick={tooltip.show}>Show</button> <button className="btn btn-sm" onClick={tooltip.hide}>Hide</button> <button className="btn btn-sm" onClick={tooltip.toggle}>Toggle</button> </div> <div ref={tooltip.ref} className="tooltip" data-tip="Programmatic tooltip"> <button className="btn">Target</button> </div> </> ) } |