How to change the width of a bootstrap table?

Ghid Complet pentru Tooltip-uri Bootstrap

10/08/2021

Rating: 4.99 (4556 votes)

În lumea rapidă a dezvoltării web, fiecare detaliu contează pentru a crea o experiență utilizatorului fluidă și intuitivă. Tooltip-urile, acele mici căsuțe informative care apar la trecerea cursorului peste un element, joacă un rol crucial în acest sens. Ele oferă context suplimentar și ajutor vizual fără a aglomera interfața, ghidând utilizatorii prin funcționalitățile site-ului tău. Bootstrap, un framework CSS extrem de popular, oferă o soluție robustă și ușor de implementat pentru tooltip-uri, integrându-se perfect în proiectele tale.

How to change the width of a bootstrap table?
Though if the table is left responsive and sized too small, this 'width' might be ignored (use min/max-width via class or such then). The default used unit is ‘px’. Use widthUnit to change it! Defines the unit which is used for the option width. The column options API of Bootstrap Table.

Acest ghid detaliat îți va arăta cum să utilizezi la maximum componenta de tooltip-uri din Bootstrap, de la inițializarea de bază până la personalizări avansate și soluții pentru scenarii complexe. Vom explora cerințele prealabile, opțiunile de configurare, metodele JavaScript și cele mai bune practici pentru a asigura nu doar funcționalitatea, ci și accesibilitatea acestor elemente utile.

Cuprins

Precondiții Esențiale pentru Tooltip-uri

Pentru ca tooltip-urile Bootstrap să funcționeze corect, este esențial să înțelegi dependențele și modul lor de inițializare. Componenta de tooltip se bazează pe biblioteca terță parte Popper.js pentru poziționare. Aceasta înseamnă că trebuie să incluzi popper.min.js înainte de fișierul bootstrap.js în proiectul tău HTML. Alternativ, poți folosi fișierul bootstrap.bundle.min.js (sau bootstrap.bundle.js), care include deja Popper.js, simplificând procesul de includere.

Un alt aspect fundamental este că tooltip-urile nu sunt activate implicit. Din motive de performanță, acestea sunt „opt-in”, ceea ce înseamnă că trebuie să le inițializezi manual. Această abordare îți oferă control complet asupra momentului și locului în care tooltip-urile sunt activate, evitând încărcarea inutilă de resurse pentru elemente care nu necesită această funcționalitate. Fără inițializare explicită, tooltip-urile pur și simplu nu vor apărea, chiar dacă ai adăugat atributele HTML necesare.

Inițializarea Tooltip-urilor Bootstrap

Există două modalități principale de a inițializa tooltip-urile: prin JavaScript sau prin atribute de date. În majoritatea cazurilor, vei dori să activezi tooltip-urile la nivel global pentru toate elementele care le necesită, utilizând JavaScript. Această metodă este cea mai recomandată pentru gestionarea eficientă a unui număr mare de tooltip-uri.

Activarea Globală cu JavaScript

Pentru a inițializa toate elementele de tooltip de pe o pagină, poți folosi următorul script JavaScript. Acest cod selectează toate elementele care au atributul data-bs-toggle="tooltip" și le transformă în instanțe de tooltip Bootstrap:

var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')); var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) { return new bootstrap.Tooltip(tooltipTriggerEl); });

Acest bloc de cod ar trebui plasat de preferință la sfârșitul fișierului HTML, înainte de tag-ul de închidere </body>, sau într-un fișier JavaScript extern, asigurat că se execută după ce DOM-ul a fost încărcat complet. Această metodă este eficientă și asigură că toate tooltip-urile sunt activate corespunzător.

Inițializarea Individuală sau prin Atribute de Date

Deși mai puțin comună pentru activarea globală, poți inițializa tooltip-uri individual sau poți configura opțiuni specifice direct prin atribute de date pe elementele HTML. De exemplu, un buton cu un tooltip ar putea arăta așa:

<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="top" title="Acesta este un tooltip!"> Buton cu Tooltip </button>

Atributul data-bs-toggle="tooltip" indică faptul că elementul ar trebui să aibă un tooltip. Atributul title conține textul care va fi afișat în tooltip. Opțiunile, cum ar fi data-bs-placement="top", permit configurarea directă din HTML, făcând codul mai lizibil pentru tooltip-uri simple. Este important de reținut că, pentru a folosi atributele de date, inițializarea JavaScript globală (sau individuală) este totuși necesară pentru ca Bootstrap să „citească” și să aplice aceste atribute.

Considerații Importante și Comportament Implicit

Există câteva aspecte cheie de reținut pentru a evita problemele comune și a asigura o funcționare optimă a tooltip-urilor Bootstrap:

  • Tooltip-uri cu titluri goale: Un tooltip nu va fi afișat niciodată dacă atributul său title este gol sau nu este prezent. Asigură-te că fiecare element cu data-bs-toggle="tooltip" are un titlu relevant.
  • Opțiunea container: 'body': Pentru a preveni problemele de randare în componente mai complexe (cum ar fi grupurile de intrări sau grupurile de butoane) sau problemele de tăiere a tooltip-ului din cauza proprietăților CSS overflow: hidden ale părinților, este recomandat să specifici container: 'body'. Aceasta asigură că tooltip-ul este atașat direct la elementul <body>, permițându-i să „plutească” liber deasupra altor elemente. Poți seta această opțiune fie prin JavaScript, fie prin atributul data-bs-container="body".
  • Elemente ascunse: Tooltip-urile nu pot fi declanșate pe elemente ascunse (cu display: none sau visibility: hidden). Asigură-te că elementul este vizibil înainte de a încerca să-i afișezi tooltip-ul.
  • Elemente dezactivate (.disabled sau disabled): Elementele cu atributul disabled nu sunt interactive. Prin urmare, utilizatorii nu pot interacționa cu ele (hover, focus, click) pentru a declanșa un tooltip. Soluția este să înfășori elementul dezactivat într-un element părinte (de exemplu, un <div> sau <span>) și să aplici tooltip-ul pe acel element părinte. Adaugă tabindex="0" elementului wrapper pentru a-l face focusabil la tastatură, îmbunătățind accesibilitate.
  • Link-uri pe mai multe linii: Dacă un tooltip este declanșat de un hyperlink care se întinde pe mai multe linii, tooltip-ul va fi centrat. Pentru a evita acest comportament și a menține tooltip-ul aliniat, aplică white-space: nowrap; elementului <a>.
  • Eliminarea elementelor din DOM: Tooltip-urile trebuie ascunse înainte ca elementele lor corespondente să fie eliminate din DOM. În caz contrar, poți rămâne cu elemente tooltip „fantomă” care ocupă spațiu și resurse.
  • Shadow DOM: Tooltip-urile Bootstrap pot fi declanșate de un element aflat în interiorul unui Shadow DOM, oferind flexibilitate în arhitecturi web moderne.

Personalizarea Aspectului Tooltip-urilor

Bootstrap oferă mai multe modalități de a personaliza aspectul tooltip-urilor, de la culori și fonturi la adăugarea de clase CSS personalizate. Această personalizare este crucială pentru a alinia tooltip-urile cu designul general al site-ului tău.

Which tooltip component is compatible with bootstrap?
$tooltip-arrow-width: .8rem; $tooltip-arrow-height: .4rem; // fusv-disable $tooltip-arrow-color: null; // Deprecated in 4.2.0 for CSS variables // fusv-enable While this Tooltip component is fully compatible with Bootstrap and follows its core principles, CoreUI delivers a more complete solution for modern app development.

Clase CSS Personalizate

Poți adăuga una sau mai multe clase CSS personalizate la un tooltip utilizând atributul data-bs-custom-class. De exemplu:

<button type="button" class="btn btn-outline" data-bs-toggle="tooltip" data-bs-placement="top" data-bs-custom-class="tooltip-albastru-personalizat" title="Acest tooltip este albastru!"> Tooltip Personalizat </button>

Apoi, în fișierul tău CSS, poți defini stilurile pentru clasa .tooltip-albastru-personalizat:

.tooltip-albastru-personalizat { --bs-tooltip-bg: #007bff; /* Culoare de fundal albastră */ --bs-tooltip-color: #ffffff; /* Culoare text albă */ }

Această abordare este excelentă pentru a crea variante de stil pentru tooltip-uri (de exemplu, un tooltip de succes verde sau un tooltip de eroare roșu).

Variabile CSS și Sass

Bootstrap 5 utilizează variabile CSS locale pentru tooltip-uri, permițând o personalizare flexibilă în timp real. Valorile pentru aceste variabile sunt configurate prin Sass, ceea ce înseamnă că poți suprascrie valorile implicite în fișierul tău Sass (_variables.scss) pentru a schimba aspectul global al tooltip-urilor:

$tooltip-bg: #333; $tooltip-color: #fff; $tooltip-font-size: 0.875rem; $tooltip-border-radius: 0.25rem;

Aceste variabile Sass îți oferă un control granular asupra stilului tooltip-urilor, asigurând consistența vizuală în întregul proiect.

Poziționarea Tooltip-urilor

Tooltip-urile Bootstrap suportă multiple poziții: top (implicit), right, bottom și left. Poziția este specificată cu atributul data-bs-placement. De exemplu:

<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Tooltip jos"> Tooltip Jos </button>

Dacă folosești Bootstrap în modul RTL (Right-to-Left), direcțiile vor fi oglindite automat. Opțiunea auto permite tooltip-ului să-și schimbe dinamic poziția pentru a rămâne vizibil pe ecran, în funcție de spațiul disponibil.

Tooltips cu Conținut HTML

Tooltip-urile Bootstrap pot afișa conținut HTML, permițându-ți să inserezi elemente stilizate precum <em>, <strong> sau <u> direct în textul tooltip-ului. Pentru a activa această funcționalitate, trebuie să setezi atributul data-bs-html="true" și să incluzi HTML valid în atributul title:

<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-html="true" title="<em>Tooltip</em> <u>cu</u> <b>HTML</b>"> Tooltip cu HTML </button>

Acest lucru va reda un tooltip stilizat care interpretează tag-urile HTML în loc să le trateze ca text simplu. Este util pentru formatarea îmbogățită în indicații UI compacte. Totuși, fii precaut cu securitatea atunci când injectezi conținut dinamic, deoarece activarea HTML crește riscul de atacuri XSS. Bootstrap include un „sanitizer” încorporat care elimină elementele HTML nepermise, dar este întotdeauna recomandat să validezi și să igienizezi orice conținut provenit de la utilizatori.

Utilizarea Tooltip-urilor cu Elemente SVG

Aplicarea tooltip-urilor Bootstrap elementelor SVG necesită o abordare ușor diferită, deoarece SVG-urile nu suportă atributul title în același mod ca elementele HTML. Pentru a afișa tooltip-uri pe pictograme sau forme SVG, trebuie să le inițializezi manual folosind JavaScript.

Este recomandat să setezi opțiunea container la 'body' pentru a evita problemele de poziționare, mai ales atunci când SVG-urile sunt imbricate în layout-uri complexe. Aceasta asigură că tooltip-ul este plasat corect, indiferent de poziția SVG-ului în DOM. Utilizarea tooltip-urilor cu SVG-uri este o modalitate excelentă de a îmbunătăți accesibilitatea și interactivitatea pentru interfețele bazate pe pictograme sau vizualizări de date fără a modifica structura SVG-urilor tale.

API-ul JavaScript al Tooltip-urilor Bootstrap

Pentru control programmatic și scenarii avansate, Bootstrap oferă un API-ul JavaScript complex pentru tooltip-uri. Acesta îți permite să manipulezi tooltip-urile direct din codul tău.

Do tooltips have to be initialized before bootstrap?
You must include popper.min.js before bootstrap.js or use bootstrap.bundle.min.js / bootstrap.bundle.js which contains Popper in order for tooltips to work! Tooltips are opt-in for performance reasons, so you must initialize them yourself. Tooltips with zero-length titles are never displayed.

Constructor

Creezi o nouă instanță de tooltip folosind constructorul:

const exempluElement = document.getElementById('element-ul-meu'); const tooltip = new bootstrap.Tooltip(exempluElement, { /* opțiuni */ });

Metode

Toate metodele API sunt asincrone și inițiază o tranziție. Ele returnează controlul imediat, chiar înainte ca tranziția să se încheie. Un apel de metodă pe o componentă în tranziție va fi ignorat.

  • show(): Afișează manual tooltip-ul asociat unui element. Dacă titlul tooltip-ului este gol, nu se va afișa nimic.
  • hide(): Ascunde tooltip-ul.
  • toggle(): Comută vizibilitatea tooltip-ului (îl afișează dacă este ascuns, îl ascunde dacă este vizibil).
  • dispose(): Elimină complet instanța tooltip-ului de pe elementul țintă, curățând ascultătorii de evenimente și datele interne.
  • enable(): Permite afișarea tooltip-ului unui element. Tooltip-urile sunt activate implicit.
  • disable(): Dezactivează declanșarea tooltip-ului.
  • toggleEnabled(): Comută abilitatea unui tooltip de a fi afișat sau ascuns.
  • update(): Recalculează și repoziționează tooltip-ul, asigurând alinierea corectă dacă DOM-ul s-a modificat.
  • getInstance(element): Metodă statică care preia instanța curentă de tooltip asociată unui element. Returnează null dacă tooltip-ul nu a fost inițializat.
  • getOrCreateInstance(element, options): Metodă statică care returnează instanța existentă de tooltip sau inițializează una nouă dacă nu există.
  • setContent(content): Modifică dinamic conținutul unui tooltip existent fără a reinițializa instanța. De exemplu, tooltip.setContent({ '.tooltip-inner': 'Un nou titlu!' }).

Evenimente

Tooltip-urile Bootstrap declanșează o serie de evenimente pe care le poți asculta pentru a executa cod la anumite momente din ciclul de viață al tooltip-ului:

  • show.bs.tooltip: Se declanșează imediat când este apelată metoda show(). Tooltip-ul este pe cale să devină vizibil, dar nu a fost încă inserat în DOM.
  • shown.bs.tooltip: Se declanșează după ce tooltip-ul este complet vizibil și tranzițiile CSS s-au încheiat.
  • hide.bs.tooltip: Se declanșează imediat când este apelată metoda hide(). Tooltip-ul este încă vizibil, dar începe procesul de ascundere.
  • hidden.bs.tooltip: Se declanșează după ce tooltip-ul a fost complet eliminat din vizualizare și tranzițiile CSS s-au încheiat.
  • inserted.bs.tooltip: Se declanșează după evenimentul show.bs.tooltip, când șablonul tooltip-ului a fost adăugat în DOM. Acest eveniment îți oferă acces la elementul tooltip generat pentru manipulări avansate ale DOM-ului.

Opțiuni Disponibile pentru Tooltip-uri

Opțiunile pot fi transmise fie prin atribute de date (prefixate cu data-bs-, cu nume kebab-case), fie prin obiectul de opțiuni JavaScript. Iată o listă a celor mai importante opțiuni:

Nume OpțiuneTipImplicitDescriere
animationbooleantrueDetermină dacă tooltip-ul ar trebui să apară și să dispară cu o tranziție CSS.
containerstring, element, falsefalseSpecifică elementul părinte în care ar trebui inserat tooltip-ul (ex: 'body').
delaynumber, object0Definește cât timp (în milisecunde) să aștepte înainte de a afișa/ascunde tooltip-ul. Poate fi un număr sau un obiect ({ show: 500, hide: 200 }).
htmlbooleanfalseActivează suportul pentru conținut HTML în interiorul tooltip-ului.
placementstring, function'top'Setează poziția tooltip-ului ('top', 'bottom', 'left', 'right', 'auto').
selectorstring, falsefalseUtilizat pentru a delega activarea tooltip-ului către elemente copil dintr-un container. Util pentru elemente adăugate dinamic.
templatestringHTML implicitOferă structura HTML utilizată pentru a genera tooltip-ul.
titlestring, element, function''Conținutul afișat în tooltip. Dacă nu este furnizată o valoare, se va folosi atributul title al elementului.
customClassstring, function''Permite adăugarea uneia sau mai multor clase CSS personalizate la tooltip.
triggerstring'hover focus'Determină interacțiunile utilizatorului care vor cauza afișarea tooltip-ului ('click', 'hover', 'focus', 'manual').
offsetarray, string, function[0, 6]Definește cât de departe ar trebui să fie tooltip-ul față de elementul țintă.
fallbackPlacementsstring, array['top', 'right', 'bottom', 'left']Specifică poziții alternative dacă cea preferată nu este fezabilă.
boundarystring, element'clippingParents'Determină limita în care tooltip-ul trebuie să rămână vizibil (ex: 'viewport', 'window', document.body).
sanitizebooleantrueControlează dacă conținutul HTML din tooltip ar trebui igienizat înainte de randare. Recomandat să fie activat.
allowListobjectValoare implicităO listă detaliată de tag-uri și atribute permise când igienizarea este activată.
sanitizeFnnull, functionnullPermite definirea propriei logici de igienizare personalizate.
popperConfignull, object, functionnullPermite suprascrierea sau extinderea configurației implicite Popper.js.

Întrebări Frecvente (FAQ)

Trebuie inițializate tooltip-urile înainte de Bootstrap?

Nu, nu trebuie inițializate „înainte de Bootstrap” în sensul strict. Ceea ce este crucial este ca biblioteca Popper.js să fie inclusă în pagina ta înainte de fișierul JavaScript al Bootstrap (sau să folosești versiunea bundle a Bootstrap care include Popper.js). După ce ambele sunt disponibile, tooltip-urile Bootstrap trebuie inițializate manual, de obicei după ce DOM-ul este complet încărcat, folosind JavaScript-ul Bootstrap. Dacă nu le inițializezi, chiar și cu Popper.js inclus, ele nu vor apărea.

Cum pot gestiona tooltip-urile pe elemente dezactivate?

Elementele cu atributul disabled nu pot declanșa evenimente (cum ar fi hover sau click), deci tooltip-urile nu vor funcționa direct pe ele. Soluția este să înfășori elementul dezactivat într-un element părinte (de exemplu, un <div> sau <span>) și să aplici tooltip-ul pe acest element părinte. Pentru a asigura accesibilitatea la tastatură, adaugă atributul tabindex="0" la elementul wrapper. Astfel, utilizatorii de tastatură pot, de asemenea, să se concentreze pe elementul wrapper și să activeze tooltip-ul. De exemplu:

<span class="d-inline-block" tabindex="0" data-bs-toggle="tooltip" title="Acest buton este dezactivat"> <button class="btn btn-primary" type="button" disabled>Buton Dezactivat</button> </span>

Pot folosi conținut HTML în tooltip-uri?

Da, poți utiliza conținut HTML în tooltip-uri. Pentru a activa această funcționalitate, trebuie să setezi atributul data-bs-html="true" pe elementul care declanșează tooltip-ul. Apoi, poți include tag-uri HTML valide (cum ar fi <em>, <strong>, <u> sau chiar pictograme) în atributul title. Este important să fii conștient de riscurile de securitate (XSS) atunci când permiți conținut HTML, mai ales dacă acesta provine din surse nesigure. Bootstrap include un mecanism de „sanitizare” pentru a elimina elementele HTML periculoase, dar este întotdeauna o bună practică să validezi și să igienizezi datele pe partea de server, dacă este cazul.

Ce fac dacă tooltip-ul meu este tăiat de un container părinte cu overflow: auto sau overflow: scroll?

Aceasta este o problemă comună. Poziția tooltip-ului încearcă să se ajusteze automat, dar poate fi tăiat de un container părinte cu proprietăți CSS overflow: auto sau overflow: scroll. Pentru a rezolva acest lucru, trebuie să specifici opțiunea boundary (pentru modificatorul flip, utilizând opțiunea popperConfig) la un HTMLElement, cum ar fi document.body. Aceasta va suprascrie valoarea implicită 'clippingParents' și va asigura că tooltip-ul se poziționează corect în raport cu întregul corp al documentului:

var elementulMeu = document.getElementById('elementul-cu-probleme'); var tooltip = new bootstrap.Tooltip(elementulMeu, { boundary: document.body // sau document.querySelector('#un-alt-container') });

Ce este Popper.js și de ce este necesar?

Popper.js este o bibliotecă JavaScript terță parte, ușoară și puternică, dedicată poziționării elementelor „popper” (cum ar fi tooltip-urile, popover-urile, meniurile dropdown) în raport cu un element de referință. Este necesară deoarece gestionează logica complexă de calculare a poziției optime a tooltip-ului pe ecran, luând în considerare spațiul disponibil, marginile ferestrei, elementele părinte și prevenind „ieșirea” tooltip-ului din viewport. Fără Popper.js, tooltip-urile Bootstrap nu ar putea fi poziționate dinamic și inteligent.

Pot personaliza culorile și stilurile tooltip-urilor?

Absolut! Bootstrap oferă o flexibilitate excelentă pentru personalizarea vizuală. Poți folosi data-bs-custom-class pentru a adăuga o clasă CSS personalizată tooltip-ului și apoi să definești stilurile pentru acea clasă în fișierul tău CSS. În plus, Bootstrap 5 utilizează variabile CSS pentru stilizarea tooltip-urilor (de exemplu, --bs-tooltip-bg, --bs-tooltip-color), pe care le poți suprascrie direct în CSS-ul tău sau prin variabile Sass în fișierul _variables.scss, oferindu-ți control complet asupra aspectului global al tooltip-urilor.

Concluzie

Tooltip-urile Bootstrap sunt o componentă versatilă și puternică, esențială pentru îmbunătățirea interfețelor utilizator și oferirea de informații contextuale. De la inițializarea simplă la personalizări complexe și gestionarea scenariilor specifice, Bootstrap îți oferă toate instrumentele necesare. Prin înțelegerea dependențelor (cum ar fi Popper.js), explorarea opțiunilor disponibile și utilizarea inteligentă a API-ului JavaScript, poți integra tooltip-uri funcționale și atractive care vor contribui semnificativ la o experiență de navigare superioară pentru utilizatorii tăi. Nu uita să acorzi atenție accesibilității, asigurându-te că tooltip-urile tale sunt utile pentru toți utilizatorii, indiferent de modul lor de interacțiune cu site-ul.

Dacă vrei să descoperi și alte articole similare cu Ghid Complet pentru Tooltip-uri Bootstrap, poți vizita categoria Fitness.

Go up