Sfaturi cu instrumente construite în întregime pe CSS. Cum se creează un tooltip în HTML? Sugestie Css la hover

Este puțin probabil ca specialiștii în aspect să găsească ceva nou pentru ei înșiși în această postare. Această postare este mai degrabă pentru designerii de layout începători care, ca mine, au avut probleme la crearea și stilul de sfaturi universale.

Recent, când făceam un blog mic, m-am confruntat cu sarcina de a face sfaturi cu instrumente elegante, dar în același timp simple. După ce am încercat diferite moduri de a crea containere div separate pentru tooltips, sau de a crea tooltips cu CSS pur, am găsit o soluție universală care nu va aglomera codul, va fi compatibilă între browsere și, în același timp, va fi foarte simplu de implementat.
Oricine este interesat de metoda mea de a rezolva această problemă simplă, întreb sub cat.

Soluție Metoda pe care ți-o voi oferi este destul de simplă și eficientă. Funcționează în toate browserele, chiar și IE 6 (testat de mine de multe ori). Ușor de schimbat și convenabil. Nu aglomera codul și îl clarifică. Poate fi schimbat cu ușurință pentru a se potrivi nevoilor dumneavoastră. De exemplu, întârzieți afișarea unui balon explicativ folosind setTimeout sau altceva.HTML Să presupunem că avem o pagină HTML cu un link, atunci când trecem cu mouse-ul peste ea, trebuie să afișam un balon explicativ:
Link pentru sfaturi instrumente
După cum poate ați observat deja din listă, folosesc preprocesorul LESS css.
Am inclus stiluri și scripturi CSS în fișiere separate. Avem, de asemenea, un link și un bloc div, care va fi containerul pentru sfatul instrument.
Specificația HTML5 permite utilizarea atributelor personalizate de tipul atribut de date, care pot stoca unele informații despre un element sau bloc. În atributele de date vom salva textul sfaturile instrumente.
Legătură
Pentru stocare folosesc atributul data-tooltip.
Am terminat cu HTML - putem trece la stiluri CSS. Folosesc biblioteca LESS Elements și o recomand tuturor, așa că voi scrie câteva proprietăți folosind acest cadru.
@import „css/elements.less”; #tooltip ( z-index: 9999; poziție: absolut; afișare: niciunul; sus:0px; stânga:0px; fundal-culoare: #000; umplutură: 5px 10px 5px 10px; culoare: alb; .opacity(0,5); . rotunjit(5px)
Din listare este clar că în prima linie conectăm LE, setăm blocul div#tooltip la poziționare absolută și îl ascundem. Apoi dăm blocului o culoare de fundal și o culoare de text, rotunjim colțurile (5px) și setăm valoarea transparenței la 50%. Acum vine partea distractivă - jQuery.
$.jQuery(document).ready(function() ( $("").mousemove(function (eventObject) ( $data_tooltip = $(this).attr("data-tooltip"); $("#tooltip") .text($data_tooltip) .css(( „sus”: eventObject.pageY + 5, „stânga”: eventObject.pageX + 5 )) .show()).mouseout(function () ( $("#tooltip.); ").hide() .text("") .css(( "sus": 0, "stânga": 0 )); )); ));// Sfârșit gata.
Acum adăugăm toate elementele cu atributul data-tooltip la selecție și, când trecem cu mouse-ul peste elementul dorit, obținem valoarea tooltip și o stocăm într-o variabilă. Apoi, adăugăm textul indicii în blocul #tooltip, îi dăm coordonatele cursorului de la marginea paginii + 5 px și în final afișăm blocul cu tooltip în locul potrivit. După ce mouse-ul părăsește elementul, ascundem blocul #tooltip, ștergem conținutul acestuia și îl întoarcem la 0;0;.

Asta e tot!
Ca rezultat, vom obține ceva de genul acesta: Demo

Datorită acestui script simplu, toate elementele de pe pagină care au atributul data-tooltip vor primi un tooltip.

Vă mulțumim pentru atenție!

Un tooltip HTML este un bloc cu informații suplimentare care apar atunci când treceți mouse-ul peste un anumit element al unei pagini web. Astăzi vom crea propriul nostru tooltip folosind HTML și CSS:

Vezi demo | Descărcați codul sursă

Vom putea folosi indicii CSS pentru majoritatea elementelor, cum ar fi linkuri, etichete, text cu stil etc. Va trebui să aplicăm mai multe clase elementului și să adăugăm un atribut de date cu textul descrierii.

Configurarea documentului

Trebuie să creăm un document HTML și să setăm marcajul sursă:

Sfaturi instrumente Demo // conținut

Am adăugat un link către Normalize.css care ajută la resetarea tuturor stilurilor de browser la implicite și asigură că fiecare element arată la fel în toate browserele. Spre deosebire de o resetare CSS standard, Normalize.css nu elimină toate stilurile implicite, așa că nu va trebui să rescrieți stilul fiecărui element de la zero.

Am creat un div cu o clasă container în care vom plasa exemplele de bază de sfaturi HTML. Iată stilurile pentru corp și clasa .container:

body (familie de fonturi: „Work Sans”, sans-serif; dimensiunea fontului: 1.5em; înălțimea liniei: 1.4em; greutatea fontului: 700; culoarea fundalului: #28ABE3; culoarea: #fff; ) .container ( lățime: 800 px; margine: 100 px automat; fundal: radial-gradient (cercul cel mai îndepărtat colț la 400 px 250 px , #64BBE0 0%, #28ABE3, #28ABE3 95%); )

Am centrat div-ul containerului setând margin-left și margin-right la auto . De asemenea, a adăugat ceva stil la secțiunea caroseriei pentru a-l face să arate mai bine.

Am decis să adaug un mic gradient CSS ușor pentru fundal. Dacă browserul nu acceptă gradienți CSS (acest lucru se aplică în principal la IE 8 și 9), culoarea de fundal va fi comutată înapoi la albastrul implicit (culoarea de fundal a secțiunii corpului).

Voi folosi sugestii HTML pentru trecerea cursorului cu etichete de ancorare, dar puteți atribui clase altor elemente inline, cum ar fi o etichetă puternică sau span . Mai jos este conținutul div-ului containerului:

  • Desfășurare instrument de jos
  • Indicator la stânga

    Legăturile le-am atribuit două clase. Clasa tooltip va fi responsabilă pentru corpul tooltip, iar a doua clasă va determina plasarea acestuia.

    De asemenea, puteți vedea atributul de date personalizat, care conține textul descrierii noastre HTML.

    Crearea clasei tooltip

    Mai jos este codul pentru clasa tooltip:

    Indicator (poziție: relativ; ) .tooltip:după (poziția: absolut; umplutură: 8px; chenar: 3px solid #fff; raza chenar: 8px; culoarea fundal: #1FDA9A; dimensiunea fontului: .9em; greutatea fontului : bold; conținut: attr(data-tooltip: 80px width: -moz-max-content: .25; vizibilitate: ascuns .tooltip:hover:after (opacitate: 1; vizibilitate: vizibil; )

    Însuși indicația HTML pentru trecerea cursorului este un pseudo-element :after și este poziționată absolut. Acesta este motivul pentru care este necesar să se atribuie o poziție relativă elementului de ancorare. Am adăugat câteva stiluri de bază, cum ar fi umplutură, chenar, dimensiunea fontului și lățimea. Să aruncăm o privire mai atentă asupra proprietății conținutului.

    Conține attr() - o valoare care stochează datele noastre personalizate-tooltip și o folosește pentru a afișa textul tooltip în sine. Puteți folosi orice alt nume în loc de data-tooltip, asigurați-vă doar că începe cu data- . Puteți afla mai multe despre aceste atribute aici.

    Corpul indicativului are o lățime minimă de 80 de pixeli. Dacă doriți ca conținutul descrierii explicative să se întindă într-o singură linie, adăugați valoarea maximă de conținut pentru proprietatea lățime, care este în prezent comentată. Trebuie remarcat faptul că aceasta este o caracteristică experimentală, așa că ar trebui să utilizați prefixele de furnizor -webkit- și -moz- .

    Pentru a oferi sfatului explicativ de trecere cu mouse-ul HTML un efect de animație de diapozitiv, folosim proprietatea de tranziție. Notați valoarea .25s, care specifică întârzierea înainte ca balonul să fie afișat sau ascuns. Astfel, nu va fi afișat dacă treci cu mouse-ul peste text din greșeală, ci doar dacă treci peste text pentru o perioadă mai lungă de timp. De asemenea, am setat opacitatea la 0 și vizibilitatea la ascuns. Nu putem folosi display: none; , deoarece elementul va dispărea complet și nu vom vedea niciun efect de tranziție. Opacitatea și vizibilitatea se modifică atunci când treceți cu mouse-ul peste un element.

    Rezultat:

    Uite

    Notă: am schimbat/eliminat o parte din marcajul și stilul din demonstrația de pe CodePen. Pentru a vedea rezultatul final, consultați demonstrația de la sfârșitul acestui articol.

    Adăugarea de mișcare

    Acum că am implementat indicația HTML care apare/dispărește la trecerea cu mouse-ul, să-l facem să se miște. Am atribuit deja proprietatea animației, tot ce trebuie să facem este să setăm poziția de pornire de unde ar trebui să apară și poziția finală:

    /*Poziția inițială a balonului indicativ*/ .tooltip-top:după ( jos: 150%; stânga: 0; ) .tooltip-bottom:după (sus: 155%; stânga: 0; ) .tooltip-left:după (dreapta: 130%; min-width: 100px ) .tooltip-right:after (stânga: 130%; min-width: 100px; ) /*Tip end position*/ .tooltip-top:hover:after (jos: 120%; ) .tooltip-bottom:hover:after (sus: 125%; ) .tooltip-left:hover:after (dreapta: 110%; ) .tooltip-right:hover:after (stânga: 110%; )

    Am decis să adaug această funcționalitate la clase suplimentare. Deci, dacă atribuiți, de exemplu, clasa .tooltip-left , balonul cu instrumente va apărea în partea stângă a textului, dacă adăugați .tooltip-top , balonul cu instrumentele va apărea în partea de sus etc.

    Vezi demonstrația

    În această demonstrație, folosesc clasa .tooltip-right. Puteți experimenta și utiliza diferite clase pentru a defini diferite poziții de indicații HTML.

    Crearea unui triunghi

    Ultimul element al explicației este un mic triunghi pe o parte a blocului. O vom crea folosind pseudo-clasa :before (pseudo-clasa :after este deja folosită pentru sfatul cu instrumente). Îl atribuim celor patru clase de poziție, astfel încât pentru fiecare dintre ele triunghiul să fie scos în mod corespunzător:

    /** * Triunghiuri */ .tooltip-top:before, .tooltip-bottom:before, .tooltip-left:before, .tooltip-right:before (conținut: ""; afișare: bloc; poziție: absolut; chenar- width: 7px; border-color: rgba(0, 0, 0, 0: all .2s ease-in-out .25s top:hover:before, .tooltip-bottom:before, .tooltip-); left:hover:before, .tooltip-right:hover:before ( opacitate: 1; vizibilitate: vizibil; )

    Creăm un triunghi dând o lățime chenarului atunci când elementul în sine nu are lățime sau înălțime. În acest caz, lățimea cadrului este setată la 7 pixeli. Culoarea cadrului este complet transparentă, ceea ce este foarte important. În următorul fragment de cod, atribui o culoare părții corespunzătoare a cadrului, ceea ce îmi permite să definesc forma triunghiului.

    În acest tutorial vom face un sfat explicativ atunci când trecem cu mouse-ul peste o pictogramă folosind CSS pur. Exact același principiu poate fi aplicat unei imagini. Accesați pagina demo.

    Marcaj HTML

    Să creăm o listă de cinci articole. În interiorul fiecărui articol vom plasa o etichetă i cu pictograma dorită, pur și simplu copiend codul pentru o anumită pictogramă de pe site-ul Font Awesome.

    Sub eticheta pictogramei vom scrie o etichetă span cu textul indicativ scurt corespunzător.




    • Camere confortabile



    • Carduri de credit



    • Duș în cameră



    • Mic dejun inclus



    • Animalele de companie OK

    După aceea, conectăm fișierul de stil - style.css. Schimbați poziția pictogramelor de la verticală la orizontală.

    Pentru a face acest lucru, atribuim valoarea - flex containerului părinte.

    Ul(
    display: flex;
    }

    Colorăm fundalul sub icoane și culoarea icoanelor în sine.

    Ulli (
    fundal: #cecfcf;
    culoare: #fff;
    }

    Mărimea pictogramei este setată folosind dimensiunea fontului.

    Ulli (
    dimensiunea fontului: 40px;
    }

    Aspectul rândului de pictograme a fost deja format.

    Când treceți cursorul peste o pictogramă, culoarea pictogramei și aspectul cursorului se schimbă.

    Ul li:hover (
    culoare: #03a9f4;
    cursor: pointer;
    }

    Indicator

    Când treceți cu mouse-ul peste pictogramă, va apărea o indicație text într-un bloc dreptunghiular în marcaj HTML, acesta este textul din eticheta span. Să punem indicii deasupra pictogramelor.

    Ulli span (
    poziție: absolută;
    sus: -30px;
    stânga: 50%;
    transforma: translateX(-50%) translateY(-20px);
    }

    Să setăm dimensiunile cutiei la următoarele dimensiuni fixe.

    Ulli span (
    lățime: 120px;
    înălțime: 24px;
    }

    Aliniază textul la centru vertical și orizontal.

    Ulli span (
    înălțimea liniei: 24px;
    text-align: centru;
    }

    Culoarea fundalului, culoarea textului și dimensiunea textului.

    Ulli span (
    fundal: #03a9f4;
    culoare: #fff;
    dimensiunea fontului: 14px;
    }

    Rotunjiți colțurile cu 4 pixeli și faceți o tranziție lină atunci când treceți cu mouse-ul.

    Ulli span (
    chenar-rază: 4px;
    tranziție: .5s;
    }

    Sfatul instrumentului este făcut invizibil și transparent.

    Ulli span (
    opacitate: 0;
    vizibilitate: ascuns;
    }

    Pseudo-element::inainte

    Pentru a desena o săgeată mică sub bloc, vom folosi pseudo-elementul ::before, ceea ce înseamnă, în practică, că săgeata nu este de fapt prezentă în fișierul HTML (conținut gol), ci există doar în fișierul CSS. O săgeată îndreptată spre o pictogramă nu este altceva decât o formă pătrată de 10x10 pixeli, rotită la 45 de grade și apăsată pe un bloc cu o valoare negativă. Ca rezultat, pătratul este transformat într-un triunghi și se află pe un strat mai mic indicele z: -1 decât eticheta span părinte.

    Vlad Merjevici

    HTML are deja un atribut de titlu global care poate fi adăugat oricărui element dintr-o pagină web. Prezența acestui atribut adaugă un sfat explicativ care apare atunci când treceți mouse-ul peste element. Fontul textului, dimensiunea tooltip și aspectul acestuia depind în general de sistemul de operare și nu pot fi modificate folosind stiluri. În plus, mulți dezvoltatori nu sunt fericiți că un astfel de indiciu dispare destul de repede. Acest lucru vă obligă să căutați modalități de a vă crea propriul sfat cu instrumente, care ar fi proiectat în modul dorit. Desigur, cea mai universală modalitate este, dar în unele cazuri este suficient să te descurci doar cu CSS.

    De exemplu, am ales fotografii când treceți cursorul mouse-ului peste ele, se afișează numele fotografiei. Vom face textul în sine folosind proprietatea content și vom lua valoarea textului de la un anumit atribut prin attr() . Din păcate, conținutul nu va funcționa așa cum se dorește în combinație cu img , așa că fotografiile sunt inserate în element, la care adăugăm un atribut data-title cu text tooltip. Există o tentație de a introduce atributul titlu și de a-l folosi, dar în acest caz vor fi afișate simultan două sfaturi: unul este „nativ”, iar celălalt este al nostru. Așa că folosim propriul atribut data-title, deoarece HTML5 permite acest lucru. Astfel obținem următorul cod (exemplul 1).

    Exemplul 1: cod HTML

    HTML5 IE Cr Op Sa Fx

    Balon explicativ în CSS

    Să trecem la stilul descrierii noastre. Mai întâi trebuie să-l faci să apară. Pentru a face acest lucru, vom folosi pseudo-elementul ::after, la care adăugăm conținut: attr(data-title) .

    Foto::after (conținut: attr(data-title); )

    Se pare că după conținutul elementului cu clasa foto, va fi afișat textul din atributul data-title, ceea ce ne trebuia. Dar, din moment ce sfatul cu instrumente ar trebui să apară numai când treceți cu mouse-ul peste fotografie cu cursorul mouse-ului, vom adăuga și pseudoclasa :hover.

    Foto:hover::after (conținut: attr(data-title); )

    Tot ce rămâne este să setați stilul dorit pentru sfatul nostru instrument, în special, poziția, culoarea de fundal, textul, cadrul etc. (exemplul 2).

    Exemplul 2: stilul descrierii

    HTML5 CSS3 IE Cr Op Sa Fx

    Indicator în CSS .foto ( afișare: bloc inline; /* element bloc bloc */ poziție: relativă; /* Poziționare relativă */ ) .photo:hover::after ( conținut: attr(titlu de date); / * Afișează textul */ poziție: absolută /* Poziționare absolută */ stânga: 30% /* Poziție indicată: 1; : rgba( 255,255,230,0.9) /* Culoare de fundal semi-transparentă */ font-family: Arial, sans-serif /* Font font-size: 11px /* Tooltip text size: 5px; ; / chenar: 1px solid #333 /* Opțiuni de bord */ )

    Rezultatul acestui exemplu este prezentat în Fig. 1.

    Orez. 1. Tip tooltip

    Poziția indicatorului nu depinde de poziția cursorului, acesta apare în același loc când treceți cursorul peste imagine. Puteți face ca balonul să apară în partea de jos a fotografiei, astfel încât să nu acopere cea mai mare parte a imaginii. Stilul se va schimba ușor (exemplul 3).

    Exemplul 3. Afișarea unui sfat explicativ în partea de jos a fotografiei

    HTML5 CSS3 IE Cr Op Sa Fx

    Sfat explicativ în CSS .foto ( afișare: bloc inline; /* element de bloc inline */ poziție: relativă; /* Poziționare relativă */ ) .photo:hover::after ( conținut: attr(titlu de date); / * Afișează textul */ poziția: absolută /* Poziționare absolută */ stânga: 5px /* Poziția indicației de bază */ z-index: 1; : rgba(0,42,167,0.6); /* Culoare de fundal semi-transparentă */ culoare: #fff; /* Text-align: center; -serif ; /* Font font */ font-size: 11px /* Tooltip text size */ padding: 5px 10px /* Margini: 1px solid #333;

    Rezultatul acestui exemplu este prezentat în Fig. 2.

    Orez. 2. Tip tooltip

    Din păcate, proprietatea de tranziție, pe care o puteți folosi pentru a anima indicația, nu funcționează cu pseudo-elemente. Prin urmare, va trebui să ne mulțumim cu apariția bruscă a balonului nostru. De asemenea, nu va exista niciun efect în browserul IE8 și mai devreme, această versiune nu acceptă ::după . Cu toate acestea, dacă înlocuiți acest pseudo-element cu :after , puteți obține o opțiune mai mult sau mai puțin funcțională.