/** * Regolare i valori di calc() per distanze diverse * Aggiungere white-space: normal per tooltip multi-riga * Modificare border-width per frecce più grandi/più piccole * * Nota importante: * Il sistema sfrutta l'attributo data-tooltip per il contenuto testuale, * mantenendo HTML semantico e accessibile. * Per contenuti dinamici, basta modificare l'attributo via JavaScript. * Esmpio: * * * * * @format */ /* ========= VARIABILI LESS ========= */ @tt-bg: #cc3a05; // Colore di sfondo del tooltip @tt-text: #ffffff; // Colore testo del tooltip @tt-font: 20px "Arial", sans-serif; // Stile font @tt-radius: 4px; // Border-radius @tt-shadow: 0 3px 6px #e2ca0e29; // Ombra @tt-transition: 0.3s opacity; // Transizione @border-width: 6px; /* ========= BASE TOOLTIP ========= */ .tt-top, .tt-bottom, .tt-left, .tt-leftx, .tt-right { position: relative; // cursor: help; transition: 0.2s transform; // Pseudo-elementi comuni &::before, &::after { position: absolute; opacity: 0; pointer-events: none; z-index: 9999; transition: @tt-transition; } // Testo del tooltip &::before { content: attr(data-tt); background: @tt-bg; color: @tt-text; font: @tt-font; font-weight: normal; // padding: 8px 16px; padding: 4px 10px; border-radius: @tt-radius; box-shadow: @tt-shadow; // border: 2px solid yellow; white-space: nowrap; } // Freccia // &::after { // content: ""; // border: @border-width solid transparent; // } // Hover states &:hover { &::before, &::after { opacity: 1; } } } /* ========= POSIZIONAMENTI ========= */ .tt-top { &::before { bottom: ~"calc(100% + 12px)"; // Posizionato sopra l'elemento di 12px left: 50%; // Centrato orizzontalmente transform: translateX(-50%); // Spostato indietro del 50% della sua larghezza } // &::after { // border-top-color: @tt-bg; // Colore del bordo superiore per la freccia // bottom: ~"calc(100% + 0px)"; // Posizionato sopra l'elemento // left: 50%; // Centrato orizzontalmente // transform: translateX(-50%); // Spostato indietro del 50% della sua larghezza // } } .tt-bottom { &::before { top: ~"calc(100% + 12px)"; // Posizionato sotto l'elemento di 12px left: 50%; // Centrato orizzontalmente transform: translateX(-50%); // Spostato indietro del 50% della sua larghezza } // &::after { // border-bottom-color: @tt-bg; // Colore del bordo inferiore per la freccia // top: ~"calc(100% + 0px)"; // Posizionato sotto l'elemento // left: 50%; // Centrato orizzontalmente // transform: translateX(-50%); // Spostato indietro del 50% della sua larghezza // } } .tt-left { &::before { right: ~"calc(50% + 0px)"; top: ~"calc(100% + 22px)"; transform: translateY(-50%); } // &::after { // border-left-color: @tt-bg; // right: ~"calc(100% + 0px)"; // top: 50%; // transform: translateY(-50%); // } } .tt-leftx { &::before { right: ~"calc(50% + 20px)"; top: ~"calc(100% + 22px)"; transform: translateY(-80%); } } // .tt-left { // &::before { // right: ~"calc(100% + 12px)"; // Posizionato a sinistra dell'elemento di 12px // top: 50%; // Centrato verticalmente // transform: translateY(-50%); // Spostato in alto del 50% della sua altezza // } // &::after { // border-left-color: @tt-bg; // Colore del bordo sinistro per la freccia // right: ~"calc(100% + 0px)"; // Posizionato a sinistra dell'elemento // top: 50%; // Centrato verticalmente // transform: translateY(-50%); // Spostato in alto del 50% della sua altezza // } // } .tt-right { &::before { left: ~"calc(100% + 12px)"; // Posizionato a destra dell'elemento di 12px top: 50%; // Centrato verticalmente transform: translateY(50%); // Spostato in alto del 50% della sua altezza } // &::after { // border-right-color: @tt-bg; // Colore del bordo destro per la freccia // left: ~"calc(100% + 0px)"; // Posizionato a destra dell'elemento // top: 50%; // Centrato verticalmente // transform: translateY(-50%); // Spostato in alto del 50% della sua altezza // } } // .tt-right { // &::before { // left: ~"calc(100% + 12px)"; // Posizionato a destra dell'elemento di 12px // top: 50%; // Centrato verticalmente // transform: translateY(-50%); // Spostato in alto del 50% della sua altezza // } // &::after { // border-right-color: @tt-bg; // Colore del bordo destro per la freccia // left: ~"calc(100% + 0px)"; // Posizionato a destra dell'elemento // top: 50%; // Centrato verticalmente // transform: translateY(-50%); // Spostato in alto del 50% della sua altezza // } // }