Utilizați interfața jQuery pentru a controla dimensiunea textului

Interfața utilizatorului JQuery poate adăuga atât de mult la o pagină Web. Există multe widgeturi diferite pe care UI le oferă. Una dintre primele stele care aleargă este glisorul. În acest tutorial, vă voi arăta cum să utilizați un cursor pentru a controla dimensiunea textului unui articol pe o pagină. Acest lucru permite utilizatorului să controleze exact dimensiunea care le convine și este, de asemenea, o caracteristică destul de impresionantă pe care o are pe un site!

Partea glisantă a acestui tutorial reproduce o tehnică inițial creată de Buck Wilson.




Scopul nostru

În final, vom dori ca pagina noastră să arate astfel:

Comportament:

  • Când glisorul este tras, un balon va dispărea, indicând dimensiunea curentă.
  • Textul "dimensiunea textului curent" va apărea, de asemenea, cu dimensiunea textului curentă de lângă acesta.
  • Vom încerca, de asemenea, să facem ca textul să crească cu un pix sau să micșoreze un pix la clicul semnului plus sau minus.

Pasul 1: Obținerea fișierelor necesare Javascript

Evident, avem nevoie de JQuery, dar de asemenea, vom avea nevoie de unele fișiere UI pentru a extinde JQuery. Putem obține un fișier UI care este personalizat pentru nevoile noastre la pagina JQuery UI Build Your Download.

După cum puteți vedea, există câteva efecte sonore foarte bune acolo! Așadar, așa cum este tentant, nu avem nevoie de toate aceste efecte pentru a obține produsul dorit. Tot ce ne trebuie este:

  • UI Core
  • cursor
  • Plugin-ul Cookie al lui Klaus Hartl

Pasul 2: HTML-ul

Pentru acest tutorial, nu voi pierde timpul explicând elementele de bază ale HTML și creând un aspect care să-l folosească și CSS. Dacă doriți să aflați mai multe despre acest lucru, există și alte tutoriale aici, cum ar fi tutorialul din panoul meu de sus sau conținutul tutorialului Collis 'Tabbed Content.

     Nettuts Slider       

Dimensiunea textului

Dimensiunea curentă a fontului:

Lorem Ipsum este pur și simplu un text fals al industriei de imprimare și de tipărire. Lorem Ipsum a fost textul standard al industriei de manechin încă din anii 1500, când o imprimantă necunoscută a luat o bucătărie de tip și a amestecat-o pentru a face o carte tip specimen. Ea a supraviețuit nu numai cinci secole, ci și saltul în tipărirea electronică, rămânând în esență neschimbată. A fost popularizată în anii 1960, odată cu lansarea foilor Letraset care conțineau pasajele Lorem Ipsum și, mai recent, cu software-ul pentru publicații desktop precum Aldus PageMaker, inclusiv versiunile lui Lorem Ipsum.

Deci veți observa câteva lucruri:

  1. Fixarea PNG pentru IE 5.5 și 6. Am legat direct pagina de cod Google. Aceasta înseamnă că va trebui să închei fiecare PNG transparent cu un transfer.png .
  2. De asemenea, am conectat direct la JQuery și la fișierul nostru UI personalizat.
  3. Am pus tag-urile necesare pentru cursorul din #header

NOTĂ: Pentru ca cursorul să funcționeze, trebuie să avem o bară și un mâner.

Pasul 3: CSS

Iată CSS pentru a face ca pagina să arate puțin mai bine. Această pagină este destul de simplă și, prin urmare, CSS este destul de simplă:

 corp fundal: # 373737; text-align: centru; margine: 0px;  #header width: 700px; înălțime: 200px; fundal: # 48887d url (imagini / header.jpg); margin-stânga: auto; margin-dreapta: auto; poziție: relativă;  .slider_container poziție: absolută; înălțime: 25px; top: 170px; stânga: 165px; . minus background: url (imagini / minus-trans.png) nr-repeta; înălțime: 9px; lățime: 25px; overflow: ascuns; plutește la stânga; cursor: pointer;  .slider_bar fundal: url (images / bar-trans.png) no-repeat; înălțime: 9px; lățime: 316px; plutește la stânga; margine: 0px 5px; poziție: relativă;  .add background: url (imagini / add-trans.png) nr-repeta; înălțime: 25px; lățime: 23px; plutește la stânga; poziție: relativă; top: -5px; cursor: pointer;  .slider_handle fundal: url (imagini / selector-trans.png) no-repeat; înălțime: 25px; lățime: 12px; poziția: absolută; top: -8px;  #slider_caption fundal: url (images / caption-trans.png) no-repeat; înălțime: 45px; lățime: 38px; overflow: ascuns; poziția: absolută; top: -50px; margin-left: -10px; umplutură: 5px 0px 0px 0px; font-family: "Myriad Pro"; culoare: # 36665d; font-weight: bold; text-align: centru;  #text font-family: Helvetica, Arial, sans-serif; lățime: 655px; fundal: # f9f9f9; margin-stânga: auto; margin-dreapta: auto; zăpadă: 20px 20px 20px 25px; poziție: relativă;  #text p font-size: 12px; text-aliniere: stânga; culoarea neagra;  #text h1 text-aliniere: stânga; margin-stânga: 20px;  p font-family: Arial, Helvetica, sans-serif; culoare: # CCCCCC;  #font_indicator poziție: absolută; dreapta: 100px; top: 50px; font-size: 10px; afișare: niciunul;  

Din nou, nu voi intra în detaliu cu CSS. Dacă aveți nevoie de mai mult ajutor în acest sens, asigurați-vă că ați verificat cele două tutoriale pe care le-am menționat mai sus. Dacă aveți întrebări, asigurați-vă că vă anunțați în comentarii.

Observați că toate imaginile PNG care au transparență alfa au sfârșitul -trans.png.

Pasul 4: Efecte de bază a cursorului

Când am învățat mai întâi despre efectul de cursor, l-am făcut să cerceteze ceva mai mult și cum funcționează. Ei bine, am avut norocul să găsesc acest screencast uimitor. A avut un efect foarte curat; o legendă care părea să afișeze poziția cursorului, în partea de sus a cursorului. Din păcate, s-au oprit acolo. Vom folosi o variantă a codului JQuery ca punct de plecare:

 $ ('slider_caption'). () slider_caption '), captionVisible = false; $ (' slider_bar '). : 100, start: funcția (e, ui) $ ('# slider_caption') fadeIn (' captionVisible == false) $ ('# slider_caption') .css ('left', ui.handle.css (fontSize: ui.value * 15/100 + 8) (textul de la stânga)) text (Math.round (ui.value * 15/100 + 8) ) fadeOut ('fast', function () captionVisible = false;); slide: functie (e, ui) $ (' css ('left', ui.handle.css ('stânga')) text (Math.round (ui.value * 15/100 + 8)); $ ("div # text p"). css (fontSize: ui.value * 15/100 + 8) fadeIn ("lent"););

Unele idei cheie:

  • Mai întâi, ascundem legenda cu Javascript. Acest lucru face ca legenda să fie vizibilă dacă Javascript este dezactivat pentru o accesibilitate mai mică.
  • După cum puteți vedea, avem acum un modifier .slider și mai multe sub-elemente, de asemenea:
    • StartValue: Aceasta specifică poziția pe care mânerul începe de la
    • minValue: Aceasta specifică valoarea minimă la care mânerul va merge
    • MAXVALUE: Aceasta specifică valoarea maximă la care mânerul va merge
    • start: Aceasta ne permite să spunem JQuery ce trebuie să facă atunci când utilizatorul începe să alunece bara
    • Stop: Aceasta specifică ce se întâmplă atunci când glisorul este lăsat
    • diapozitiv: Aceasta specifică ce se întâmplă atunci când glisorul este alunecat
    • mâner: Acest lucru ne permite să specificăm ce va fi mânerul
  • De asemenea, atribuim o variabilă care ne va ajuta să știm când Stop: apare dacă titlul este vizibil sau nu, și apoi efectuați o acțiune bazată pe această concluzie.
  • De asemenea, a trebuit să punem o limită a dimensiunilor de fonturi posibile, astfel încât am limitat posibilitățile pentru valoarea cursorului la 8 și 23. Am făcut acest lucru executând matematică de bază cu privire la valoarea cursorului. (înmulțit cu 15/100 și adăugat 8)
  • Această ecuație a rezultat în dimensiuni zecimale, așa că a trebuit să rotunjim Math.round
  • Observați, de asemenea, metoda prin care am făcut legenda să rămână pe partea de sus a mânerului. Am făcut valoarea css stânga a legendei egale cu mânerul.
  • Observați că pe Stop: Am animat mărimea textului, în timp ce în diapozitiv, am dimensiunea css în continuă schimbare. Acest lucru ar putea părea contra-intuitiv diapozitiv: Nu aș anima, dar prin esența trecerii treptate și lărgirea dimensiunii face același lucru. Dacă aș fi animat în loc de a schimba doar css-ul, ar fi înnebunit și nu va răspunde.


Pasul 5: Adăugarea textului textului

 $ (('slider_caption'). () slider_caption '), hârtie (var. : FadeIn ('fast', function () calloutVisible = true;); $ ('# font_indicator') fadeIn (' );, stop: functie (e, ui) if (calloutVisible == false) $ (' font_indicator ') fadeIn (' lent '); $ (' # slider_caption ') css (' left ', ui.handle.css +)); $ ('# Font_indicator b'); text (Math.round (ui.value * 15/100 + 8)); $ ("div # text p") animate (fontSize: ui.value * FadeOut ('fast', function () calloutVisible = false;); $ ('# font_indicator'). fadeOut ('lent');, slide: funcția (e, ui) $ ('# slider_caption') css ('left', ui.handle.css ui.value * 15/100 + 8)); $ ('# font_indicator b') text (Math.round (ui. valoare * 15/100 + 8)); $ (div "text p") css (fontSize: ui.value * 15/100 + 8) fadeIn ("lent"); );


Idei cheie despre #font_indicator

  • Am adaugat acelasi efect de estompare si estompat efectele in aceleasi locuri ca si subtitrarea
  • Am lăsat totuși poziția CSS stânga
  • Observați că avem a tag în div # indicator-indicator. Acest lucru nu numai că face ca numărul să iasă mai mult, dar ne permite să punem doar valoarea mânerului cursorului curent ca text în el. Dacă tocmai am adăugat la sfârșitul divului, orice valoare a dimensiunii fontului ar fi adunată la sfârșit.

Pasul 6: Oferirea acțiunilor plus și minus

Acest lucru nu ar fi un design funcțional, dacă nu am da semnele plus și minus acțiuni la clic. Acest cod ar putea fi un pic neglijent și nu este perfect eficient, dar își face treaba. Acest proiect a necesitat o sumă surprinzătoare de matematică, ceea ce explică unele dintre numerele nebunești care ajung să fie folosite.

Fără alte cuvinte, iată restul javascript-ului, o să explic mai târziu:

 $ ('. add') faceți clic pe (funcția () var actualFontSize = $ ('# text p'). 1; dacă (newFontSize < 24)  $('#text p').css('font-size', newFontSize); $('#slider_caption').css('left', newFontSize*19.75 - 158).fadeIn('fast').text(Math.round(newFontSize )).fadeOut(); $('.slider_handle').css('left', newFontSize*19.75 - 158); $('#font_indicator').fadeIn('slow'); $('#font_indicator b').text(Math.round(newFontSize )); $('#font_indicator').fadeOut('slow');  else $('#font_indicator').fadeIn('slow'); $('#font_indicator b').text("Isn't 23 big enough?"); $('#font_indicator').fadeOut('slow');  return false; ); $(".minus").click(function() var currentFontSize = $('#text p').css('font-size'); var currentFontSizeNum = parseFloat(currentFontSize, 10); var newFontSize = currentFontSizeNum-1; if (newFontSize > 8) $ ('# text p'). Css ('font-size', newFontSize); $ ('# slider_caption') .css ('stânga', newFontSize * 19.75 - 158) .fadeIn ('rapid') text (Math.round (newFontSize)). $ ('. slider_handle'). css ('left', newFontSize * 19.75 - 158); $ ( '# Font_indicator') fadeIn ( 'lent').; $ ('# font_indicator b'). text (Math.round (newFontSize)); $ ( '# Font_indicator') fadeOut ( 'lent').;  altfel $ ('# font_indicator') fadeIn ('slow'); $ ('# font_indicator b'). text ("Nu este suficient de mic?"); $ ( '# Font_indicator') fadeOut ( 'lent').;  return false; );

Unele note cheie:

  • Dacă cunoașteți sintaxa de bază Javascript, acest lucru ar trebui să fie destul de evident.
  • Am atribuit o variabilă inițială pentru a obține dimensiunea actuală a fontului.
  • Apoi îl convertesc la un număr întreg
  • Apoi, creez o altă variabilă cu o valoare mai mare.
  • Am plasat o limită între sub 24 și peste 8 ani, folosind un dacă altceva afirmație.

Math Time

Ajustarea mânerului și a legendei pentru a reacționa la clicurile plus și minus a fost o adevărată provocare. Ceea ce am terminat, a fost imaginarea lățimii barei (316 pixeli) și împărțirea acesteia între cele 16 dimensiuni posibile (8-23) pentru a afla cât spațiu a ocupat fiecare increment.

316/16 =

Pentru a fi în siguranță, trebuie să-mi dau seama de locul inițial pentru dimensiunea fontului. Știam că acest lucru nu a fost exact 12, pentru că l-am modificat ușor cu 15/100 + 8. Așa că am luat valoarea de pornire a mânerului (26) și l-am înmulțit cu aceasta:

26 * 15/100 + 8 =

Mi-am dat seama că, din moment ce era rotunjită, oricum ar fi fost doisprezece.

Așa că m-am gândit că mânerul va fi [dimensiunea fontului * 19.75 - 158 (Primele 8 dimensiuni)] px.

Doar m-am gândit că vă voi da o privire în matematica mea ciudată și complicată;). Probabil că sunt mult mai ușor de făcut, dar cred că aceasta este logica mea.

Pasul 7: Cookie Time, citirea cookie-ului

Pentru tratarea cookie-urilor am folosit plugin-ul excelent de cookie al lui Klaus Hartl. Puteți vedea sintaxa de bază a pluginului în linkul pe care l-am furnizat. Provocarea a fost găsirea unui loc care să stabilească în mod fiabil cookie-ul. Am terminat setarea când browserul revigorează sau modifică pagina. În acest fel, o face doar atunci când este necesar și realist. Mai întâi adăugăm codul în partea de sus a fișierului javascript pentru a citi fișierul cookie:

 var startSize = $ .cookie ('fontSize'); var startSize = parseFloat (startSize, 12); $ ('# text p') .css ('font-size', startSize);

Ce am facut:

  • Am citit mai întâi cookie-ul și l-am trimis la variabila startSize
  • Apoi am schimbat acea variabilă într-un număr întreg
  • Apoi am adăugat acel număr la css-ul implicit al textului

Pasul 8: Setarea cookie-ului

După cum am menționat mai sus, trebuie să setăm cookie-ul când pagina este iesită. Facem acest lucru folosind următorul cod:

 window.onbeforeunload = leaveCookie; funcția leaveCookie () var FontSize = $ ('# text p') css ('font-size'); var IntFontSize = ParseFloat (FontSize, 10); $ .cookie ('fontSize', IntFontSize); 

Ce am facut:

  • NOTĂ: Acest JS este in afara din funcția JQuery $ () () );
  • În primul rând, am activat o funcție când browserul a părăsit pagina
  • Apoi am convertit dimensiunea textului la un număr întreg
  • Apoi am pus asta în cookie

Asta e!

Sper că ați găsit acest tutorial util! Vă rog să-mi scuzați logica de programare, nu cred întotdeauna atât de eficient: P. Dacă aveți întrebări sau comentarii, vă rugăm să spuneți-mi în comentariile!

  • Abonați-vă la fluxul RSS NETTUTS pentru mai multe tutori și articole zilnice de dezvoltare web.


Cod