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.
Komponenty podpowiedzi wyświetlają dodatkowe informacje, gdy użytkownik najedzie kursorem na element lub skupi się na nim. Zbudowane z semantycznych atrybutów HTML i CSS, podpowiedzi zwiększają wygodę użytkownika, zapewniając pomoc kontekstową bez zaśmiecania interfejsu. System podpowiedzi Frutjam obsługuje wiele pozycji, niestandardową treść i płynne animacje, co pozwala na bezproblemowe odkrywanie informacji.
Tylko CSS, nie wymaga JavaScript. Dostępny w WCAG AA i niezależny od frameworka — współpracuje z Django, HTMX, Laravel, React i dowolnym stosem.
Uwaga: podpowiedzi opierają się na :hover i :focus, które nie są dostępne na urządzeniach dotykowych/mobilnych. W przypadku układów dostosowanych do urządzeń mobilnych użyj responsywnego wariantu lg:tooltip, aby podpowiedź była aktywowana tylko na komputerze (duże ekrany i większe). Na mniejszych ekranach rozważ użycie innego wzorca ujawniania, takiego jak popover lub modal.
| Klasa | Typ | Opis |
|---|---|---|
| tooltip | Opierać | Opakowanie ujawniające treść data-tip po najechaniu kursorem/fokusem |
| tooltip-content | Modyfikator | Niestandardowa treść HTML w dymku podpowiedzi |
| tooltip-top | Modyfikator | Otwiera się nad spustem (domyślnie) |
| tooltip-bottom | Modyfikator | Otwiera się poniżej spustu |
| tooltip-left | Modyfikator | Otwiera się na lewo od spustu |
| tooltip-right | Modyfikator | Otwiera się na prawo od spustu |
| tooltip-start | Modyfikator | Otwiera się na logiczną stronę startową |
| tooltip-end | Modyfikator | Otwiera się na logiczną stronę końcową |
| tooltip-primary | Kolor | Podstawowy motyw kolorowej bańki |
| tooltip-secondary | Kolor | Kolorowa bańka motywu drugorzędnego |
| tooltip-accent | Kolor | Bańka koloru motywu akcentującego |
| tooltip-neutral | Kolor | Neutralna bańka w kolorze motywu |
| tooltip-info | Kolor | Informacje semantyczna kolorowa bańka |
| tooltip-success | Kolor | Sukces semantyczna kolorowa bańka |
| tooltip-warning | Kolor | Ostrzeżenie semantyczna kolorowa bańka |
| tooltip-error | Kolor | Błąd semantycznej kolorowej bańki |
Etykietka
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> |
Niestandardowa treść podpowiedzi
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> |
Etykietka z ikoną
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> |
Wymuś otwarcie podpowiedzi
1 2 3 | <div class="tooltip tooltip-open" data-tip="hello"> <button class="btn">Force open</button> </div> |
Opcje pozycjonowania podpowiedzi
Najlepsze miejsce
1 2 3 | <div class="tooltip tooltip-top tooltip-open" data-tip="Tooltip top"> <button class="btn">Top position</button> </div> |
Właściwe umiejscowienie
1 2 3 | <div class="tooltip tooltip-right tooltip-open" data-tip="Tooltip right"> <button class="btn">Right position</button> </div> |
Zakończ umieszczanie
1 2 3 | <div class="tooltip tooltip-end tooltip-open" data-tip="Tooltip end"> <button class="btn">End position</button> </div> |
Dolne umiejscowienie
1 2 3 | <div class="tooltip tooltip-bottom tooltip-open" data-tip="Tooltip bottom"> <button class="btn">Bottom position</button> </div> |
Lewe miejsce docelowe
1 2 3 | <div class="tooltip tooltip-left tooltip-open" data-tip="Tooltip left"> <button class="btn">Left position</button> </div> |
Rozpocznij umieszczanie
1 2 3 | <div class="tooltip tooltip-start tooltip-open" data-tip="Tooltip start"> <button class="btn">Start position</button> </div> |
Warianty kolorów podpowiedzi
Kolor podstawowy
1 2 3 | <div class="tooltip tooltip-primary tooltip-open" data-tip="Primary"> <button class="btn btn-xs">Primary color</button> </div> |
Kolor wtórny
1 2 3 | <div class="tooltip tooltip-secondary tooltip-open" data-tip="Secondary"> <button class="btn btn-xs">Secondary color</button> </div> |
Kolor akcentujący
1 2 3 | <div class="tooltip tooltip-accent tooltip-open" data-tip="Accent"> <button class="btn btn-xs">Accent color</button> </div> |
Kolor informacyjny
1 2 3 | <div class="tooltip tooltip-info tooltip-open" data-tip="Info"> <button class="btn btn-xs">Info color</button> </div> |
Kolor sukcesu
1 2 3 | <div class="tooltip tooltip-success tooltip-open" data-tip="Success"> <button class="btn btn-xs">Success color</button> </div> |
Kolor ostrzegawczy
1 2 3 | <div class="tooltip tooltip-warning tooltip-open" data-tip="Warning"> <button class="btn btn-xs">Warning color</button> </div> |
Kolor błędu
1 2 3 | <div class="tooltip tooltip-error tooltip-open" data-tip="Error"> <button class="btn btn-xs">Error color</button> </div> |
Neutralny kolor
1 2 3 | <div class="tooltip tooltip-neutral tooltip-open" data-tip="Neutral"> <button class="btn btn-xs">Neutral color</button> </div> |
Responsywne podpowiedzi
Wyświetlaj tylko na dużych ekranach z lg:tooltip
1 2 3 | <div class="lg:tooltip" data-tip="Hey there!"> <button class="btn">Hover me</button> </div> |
Pomocnik JS i reagowania
Użyj createTooltip z frutjam/js lub useTooltip z frutjam/react, aby programowo pokazać lub ukryć podpowiedź - przydatne w przypadku wycieczek z przewodnikiem lub uruchamianego tekstu pomocy.
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> </> ) } |