Crash Course Griduri YUI CSS

Biblioteca de interfață de utilizator Yahoo este un set destul de extins de instrumente JavaScript pentru dezvoltatori. De multe ori lăsate neobservate sunt câteva alte componente utile ale bibliotecii care vor accelera codarea: unele biblioteci CSS. Astăzi, aș vrea să vă dau un tur al bibliotecii CSS Grids CSS.


De ce?

De ce ar trebui să luați în considerare utilizarea bibliotecii CSS Grids CSS (denumită în continuare "grila YUI")? Ce o face să iasă în evidență? Nu m-am uitat prea mult la alte biblioteci de grilă, dar le găsesc convingătoare:

  • Convenții bune de numire

    Grilele YUI utilizează ID-uri și clase ușor de reținut și marcaje clare; odată ce ați învățat, ați putea reveni la codul dvs. într-o lună și știți ce părți sunt din YUI și ceea ce face fiecare piesă.

  • Gazduire gratuita a fisierelor

    Acest lucru reduce încărcarea de două ori: nu este nevoie să găzduiți fișierul pe serverul dvs., precum și o încărcare mai rapidă a paginii dacă clientul are fișierul memorat în cache.

  • Compatibilitate cu dimensiunile obișnuite ale anunțurilor

    Yahoo a coace în lățimile barei laterale care corespund liniilor directoare ale anunțurilor Biroului de publicitate interactivă.

  • Multe opțiuni de aspect

    Cu mai multe șabloane și abilitatea de a cuibui regiunile de pagini, Yahoo susține că oferă peste 1000 de combinații de layout ... toate în mai puțin de 5kb.

Desigur, grilele YUI nu sunt perfecte. Este puțin limitator atunci când vine vorba de lățimea barelor laterale pre-coapte; cu toate acestea, dacă se potrivesc nevoilor dvs., veți economisi timp, codificare și dureri de cap atunci când vă stabiliți site-ul.


Resurse

Când începem, iată câteva resurse care vor fi de ajutor.

  • Pagina principală CSS YUI Grids: locul pe care trebuie să-l faceți după ce ați citit acest articol
  • Grids Builder: un instrument care vă permite să vă construiți pagina cu câteva clicuri - ajutor deosebit în obținerea rapidă a grătarelor YUI!
  • Foaia de înșelătorie: un PDF cu o singură pagină, cu toate convențiile YUI grids

Blocuri de construcție

Înainte de a intra în griddy, să ne uităm la blocurile de construcție ale rețelelor YUI. Există cinci structuri diferite cu care veți lucra pentru a vă dezvolta aspectul; fiecare dintre aceste structuri este definită fie de un id, fie de o clasă (de obicei o clasă). Ele sunt după cum urmează:

  1. Document
  2. Format
  3. blocuri
  4. Grile
  5. Unități

Document

Evident, întregul dvs. fișier HTML este documentul, dar în cazul nostru, este și divul imediat în interiorul corpului - divul care deține totul. Aici definiți lățimea site-ului dvs. Rețelele YUI vă oferă patru opțiuni de lățime: 750px, 950px, 100% sau 974px. Aceste lățimi nu sunt de fapt pixeli hardcoded; ele sunt ems, astfel încât pagina se va ajusta rapid când utilizatorul își ajustează dimensiunea fontului. Dacă acestea nu o taie, Yahoo a definit o lățime personalizată o briză. Iată codul pentru a crea un document la 800 de grade:

# custom-doc margine: auto; / * aceste două valori sunt necesare, ca * / text-align: left; / * ei ajută grila YUI centru de pagină * / lățime: 61.54em; / * 800px / 13 = em-valoare pentru majoritatea browserelor * / * width: 60.00em; / * 800px / 13.333 = em-valoare pentru IE * / min-width: 800px; / * opțional, dar recomandat * /

Pentru a seta lățimea, pur și simplu utilizați id-ul docului, doc2, doc3, sau doc4, respectiv valorilor date mai sus.


Format

Există șapte șabloane de selectat. Primele șase definesc o dispunere de două coloane; fiecare are o lățime sau o orientare diferită pentru bara laterală, cu coloana principală de conținut preluând restul lățimii documentului. Șabloanele sunt 1) 160px în stânga, 2) 180px în stânga, 3) 300px în stânga, 4) 180px în dreapta, 5) 240px în dreapta și 6) 300px în dreapta. Pentru a obține șablonul dorinței dvs., adăugați simplu o clasă de yui-t # la același div pe care l-ați definit pe doc (înlocuiți # cu numerele de mai sus). După cum am menționat mai sus, aceste bare laterale sunt lățimile standard ale anunțurilor web, astfel încât orice publicitate ar trebui să se potrivească confortabil în interiorul acestora.

Cel de-al șaptelea șablon-yui-t7 nu este la fel de bine documentat (ciudat, nu este pe foaia de înșelătorie la care am legat-o mai sus, dar este pe această versiune mai veche). Se scade bara laterală, oferindu-vă pur și simplu o coloană cu lățime întreagă (care poate fi împărțită ulterior în coloane).


blocuri

Blocurile reprezintă manifestarea reală a coloanelor pe care le-ați definit în șablon. Sunt doar două diviziuni în cadrul div div, ambele clasate cu yui-b. Din fericire, ei nu trebuie să fie copii imediați ai divului principal; Yahoo dă acest exemplu:

 
<-- Header Content -->
<-- Main Content -->
<-- Sidebar Content -->
<-- Footer Content -->

Puteți vedea din exemplul respectiv că nu aveți nevoie să puneți blocurile direct în divina rădăcină. Acest lucru vă permite să aveți un antet și un subsol cu ​​lățime întreagă, ceea ce este, în general, o idee plăcută. Veți observa că blocul principal de conținut este în interiorul unui div cu un id de yui-main; Rețelele YUI fac acest lucru pentru a vă oferi posibilitatea de a avea fie bara laterală, fie coloana principală în codul dvs., ceea ce poate fi un avantaj atunci când vă gândiți la SEO sau accesibilitate.


Grile și unități

Am grupat rețelele și unitățile împreună pentru că sunt cu adevărat similare; ambele sunt div. O grilă (definită cu clasa yui-g) spune în principiu 2 copii (de obicei unități) să-și împartă lățimea în mod egal. O unitate (clasa yui-u) ar trebui să fie întotdeauna copilul unei rețele și părintele conținutului tău.

Deci, care este diferența dintre un bloc și o rețea?

  • blocuri
    • Sunt utilizate numai pentru a defini coloanele de pagină globale
    • Sunt utilizate numai dacă utilizați șabloane 1 - 6
    • Sunt utilizate o singură dată (deci nu trebuie să aveți mai mult de 2 divs.yui-b pe o pagină)
  • Grile
    • Sunt utilizate pentru a împărți în coloane zone (cum ar fi blocul principal sau altă rețea)
    • Sunt folosite pe orice șablon
    • Sunt nestable

De asemenea, ori de câte ori aveți mai multe grile sau unități într-o rețea, este necesar să acordați primei o clasă de primii. Acest lucru se datorează faptului că nu fiecare browser oferă pseudo-clasa: primul-copil.

Dar dacă vrei să împarți o grilă neuniform? Viața nu este întotdeauna dreaptă, nu-i așa? Din fericire, YUI oferă o serie de opțiuni alternative clasei yui-g. Iată o listă a celorlalți:

  • yui-RO : Are 3 unități și se împarte în mod egal
  • yui-gc : Are 2 unități și se împarte ca 2/3 și 1/3
  • yui-gd : Are 2 unități și se împarte ca 1/3 și 2/3
  • yui-ge : Ia 2 unități și se împarte ca 3/4 și 1/4
  • yui-gf : Are 2 unități și se împarte ca 1/4 și 3/4

Toate acestea sunt; dați doar 2 sau 3 unități în fiecare dintre grilele de mai sus și veți avea coloane inegale.


Exemplu de bază

Ei bine, acum, când știi frânghiile, să trecem peste un exemplu de bază. Să presupunem că dorim aspectul standard al site-ului, știți, coloana cu conținut principal, cu o bara laterală în partea dreaptă - cu un pic de răsucire: vom împărți coloana principală în două mai mici și vom împărți unul din aceștia în două.

După cum am menționat, Yahoo oferă hosting pentru acest cadru, și de obicei este o idee bună să profitați de asta. De asemenea, Yahoo recomandă HTML 4.01 stricte Doctype, așa că am pus înăuntru. Iată ce începem:

   O simplă YUI Grids CSS Exemplu      

Pasul 1: Documente și blocuri

Primul pas este să ne înființăm documentul div și să blocăm. Putem să rămânem cu prima lățime a docului (750px) și să mergem cu șablonul 6, care ne dă o bara laterală dreaptă de 300px.

 

Pentru cei doi bîncuietori de conținut, trebuie să adăugăm două divs.yui-b. Vom face din partea de sus cea mai mare coloană, ambalând-o cu div # yui-main.

CONTUL MEU PRINCIPAL DIV
PASUL MEU DIV

Super! Deci, iata ce avem pana acum: am luat libertatea de a sti un pic, pentru a vedea ce se intampla.


Pasul 2: Rețele și unități

Nu e încă prea impresionant, dar vom ajunge acolo. Acum, să împărțim coloana mai mare în două. Putem realiza acest lucru prin plasarea unui div.yui-g (care are părinți doi unități) în interiorul lui:

Prima sub-coloană
A doua sub-coloană

Aceasta ne dă două coloane în stânga; nu-i rău; să împărțim a doua coloană în două. Pentru a face acest lucru, trebuie să îl schimbăm într-o rețea și să punem două unități în ea.

Prima sub-coloană
Prima sub-sub-coloană
A doua sub-coloană

Acesta este un exemplu excelent al faptului că grilele și unitățile sunt de același rang și pot să stea alături de ele: ele diferă doar în ceea ce privește utilizarea.


Gotcha

Acest lucru mă aduce la un gotcha de umplere (ceea ce va aduce un mare beneficiu al rețelelor YUI). Mai întâi, uită-te la codul pe care l-am scris până acum, cu un text de umplutură:

Gustul bun ar trebui să observe lipsa de umplutură în jurul marginilor coloanelor noastre. Dar acest lucru poate fi ușor de stabilit cu unele padding-spune, 0.5em-on. Yu-u, dreapta?

Hopa! Grilele YUI au setat lățimile pentru aceste divuri, și deoarece adăugarea plăcuțelor la lățimea lui div, avem o problemă de depășire. O soluție ușoară la aceasta este adăugarea padding-ului copiilor imediate ai .yui-u.

Pentru a păstra coloanele noastre în linie și ușor de citit, vom pune padding pe paragrafele din .yui-u. Dar nu trebuie să-ți arăt o imagine cu asta pentru ca tu să dai seama că coloanele noastre înguste au devenit mai înguste. Aici putem profita de un punct forte al rețelelor YUI. Să schimbăm ID-ul de pe root-ul nostru de la doc la doc2. Iată o înainte și după:

Prin adăugarea unui caracter la HTML, putem experimenta cu ușurință un aspect mai larg; aceasta este frumusețea rețelelor YUI. # doc2 este 200px mai mare decât #doc, deci acum paragrafele noastre înguste sunt o lățime confortabilă.


Exemplu complex

Acesta este un exemplu destul de simplu; să ne uităm la una mai complexă ... asta nu e cu greu de creat. Vom începe cu cel de-al șaptelea șablon - o singură coloană - cu un document cu lățimea de 750px (#doc) și o aruncăm diferit pe mai multe rânduri. Iată de ce începem:

   Un complex YUI Grids CSS Exemplu    

Pentru că nu folosim șabloanele 1-6 (care au bare laterale), nu avem nevoie de divs.yui-b. Putem începe imediat cu câteva divs.yui-g; vom adăuga 4:


Rândul 1

Să împărțim grila de sus în trei părți; pentru a realiza acest lucru, va trebui să schimbăm clasa în .yui-gb. Apoi, am pus pur și simplu trei divs.yui-u înăuntru și le dăm pe prima prima clasă.

       

O previzualizare rapidă a ceea ce am obținut până acum (din nou, am aplicat un stil minimal pentru claritate și am aruncat într-un text de umplere):


Rândul 2

Pentru al doilea rând, putem încerca .yui-gc, care ne dă două coloane; unul va dura 2/3, iar celălalt 1/3.

     

Stilul minimal pe această temă arată un mic defect al sistemului: al doilea rând nu se aliniază perfect cu primul rând; În opinia mea, acest lucru este un compromis util, deoarece o discrepanță atât de mică ar fi relativ ușor de mascat.


Rândul 3

Pentru grila 3 vom face ceva mai avansat: patru coloane. Aceasta necesită așezarea a două grile într-o rețea, după cum urmează:

Observați că mai respectăm regula ".prima la prima", atât la nivelul rețelei de nivel 2, cât și la cel de-al treilea nivel. Aceasta este singura regulă pe care trebuie să o ții minte; chiar și această lucrare "avansată" este destul de simplă. Iată ce avem până acum.

Pentru grila finală, vom face o despărțire simplă: două coloane.

Si asta e! Pentru ultima lovitura, voi adauga un pic de margine intre randuri.

Este evident că acest lucru nu este în întregime drăguț, dar potențialul pentru acest lucru ar trebui să fie la fel de evident: nu am fost nevoit să scriu niciun stil de aspect. Cu cadrul YSS Grids CSS, este ușor să configurați rapid site-urile dvs. și să fiți siguri că vor fi consecvente în toate browserele majore.

Grilele YUI folosite într-un proiect și au o opinie despre asta? Preferi o altă bibliotecă de rețele? Lasă-mă să știu în comentariu!

Acest articol a fost publicat inițial pe blogul ThemeForest. În prezent, pornesc câteva dintre cele mai populare articole către Nettuts+.

Cod