La libreria dell'interfaccia utente di Yahoo è un insieme piuttosto esteso di strumenti JavaScript per gli sviluppatori. Spesso lasciati inosservati sono alcuni altri componenti utili della libreria che velocizzeranno la tua codifica: alcune librerie CSS. Oggi vorrei fare un tour della libreria CSS YUI Grids.
Perché dovresti prendere in considerazione l'utilizzo della libreria CSS YUI Grids (di seguito "griglie YUI")? Cosa lo distingue? Non ho esaminato estensivamente altre librerie di griglie, ma trovo queste cose avvincenti:
Le griglie YUI utilizzano ID e classi facili da ricordare e puliscono il markup; una volta appresa, potresti tornare al tuo codice in un mese e sapere quali parti provengono da YUI e cosa fa ogni pezzo.
Questo riduce il carico due volte: non è necessario ospitare il file sul server, ma anche un caricamento più veloce della pagina se il client ha il file memorizzato nella cache.
Yahoo ha sfornato le larghezze della barra laterale che corrispondono alle linee guida degli annunci di Interactive Advertising Bureau.
Con più modelli e la possibilità di annidare le regioni delle pagine, Yahoo afferma di offrire oltre 1000 combinazioni di layout ... tutte in meno di 5kb.
Certo, le griglie YUI non sono perfette. È un po 'limitante quando si tratta delle larghezze della barra laterale pre-cotta; tuttavia, se si adattano alle tue esigenze, risparmierai tempo, codifica e grattacapi quando stendi il tuo sito.
Quando iniziamo, ecco alcune risorse che saranno di aiuto.
Prima di entrare nella nitida griglia, guardiamo gli elementi costitutivi delle griglie YUI. Ci sono cinque diverse strutture con cui lavorerai per sviluppare il tuo layout; ognuna di queste strutture è definita da un id o da una classe (di solito una classe). Sono come segue:
Ovviamente, il tuo intero file HTML è il documento, ma nel nostro caso, è anche il div immediatamente all'interno del corpo - il div che contiene tutto. Questo è dove si definisce la larghezza del tuo sito. Le griglie YUI ti offrono 4 opzioni di larghezza: 750px, 950px, 100% o 974px. Queste larghezze non sono in realtà pixel codificati; sono ems, quindi la pagina si adatterà fluidamente quando l'utente modificherà le dimensioni del carattere. Se questi non lo riducono, Yahoo ha reso la definizione di una larghezza personalizzata un gioco da ragazzi. Ecco il codice per creare un documento di 800 px di larghezza:
# custom-doc margin: auto; / * questi due valori sono obbligatori, come * / text-align: left; / * aiutano le griglie YUI centrano la pagina * / larghezza: 61.54em; / * 800px / 13 = valore em per la maggior parte dei browser * / * larghezza: 60,00em; / * 800px / 13.333 = valore em per IE * / larghezza minima: 800px; / * opzionale, ma consigliato * /
Per impostare la larghezza, usa semplicemente id di doc, doc2, doc3 o doc4, rispettando i valori sopra indicati.
Ci sono sette modelli tra cui scegliere. I primi sei definiscono un layout a due colonne; ognuno ha una larghezza o un orientamento diverso per la barra laterale, con la colonna del contenuto principale che occupa il resto della larghezza del documento. I modelli sono 1) 160 px a sinistra, 2) 180 px a sinistra, 3) 300 px a sinistra, 4) 180 px a destra, 5) 240 px a destra e 6) 300 px a destra. Per ottenere il modello desiderato, è sufficiente aggiungere una classe di yui-t # allo stesso div su cui hai definito il tuo documento (sostituisci il # con i numeri sopra). Come accennato in precedenza, queste barre laterali sono larghezze standard del web-annuncio, quindi qualsiasi pubblicità dovrebbe adattarsi comodamente al loro interno.
Il settimo template-yui-t7-non è ben documentato (stranamente, non è sul cheat sheet che ho collegato sopra, ma è su questa versione precedente). Sottrae la barra laterale, dandoti semplicemente una colonna a larghezza intera (che può essere divisa in colonne in seguito).
I blocchi sono la manifestazione effettiva delle colonne definite nel modello. Sono semplicemente due div all'interno del doc div, entrambi classificati con yui-b. Fortunatamente, non devono essere figli immediati del principale div; Yahoo dà questo esempio:
<-- Header Content --><-- Main Content --><-- Sidebar Content --><-- Footer Content -->
Puoi vedere dall'esempio che non hai bisogno di mettere i blocchi direttamente all'interno del div di root. Ciò ti consente di avere un'intestazione e un piè di pagina a larghezza intera, che è generalmente una buona idea. Noterai che il blocco del contenuto principale è all'interno di un div con un id di yui-main; Le griglie di YUI lo fanno per darti la possibilità di avere la tua barra laterale o la tua colonna principale prima nel tuo codice, il che può essere un vantaggio quando stai considerando la SEO o l'accessibilità.
Ho raggruppato griglie e unità insieme perché sono molto simili; entrambi sono div. Una griglia (definita con classe yui-g) fondamentalmente dice a 2 bambini (di solito unità) di dividere la sua larghezza in modo uniforme. Un'unità (classe yui-u) dovrebbe sempre essere il figlio di una griglia e il genitore dei tuoi contenuti.
Quindi, qual è la differenza tra un blocco e una griglia?
Inoltre, ogni volta che si hanno più griglie o unità all'interno di una griglia, è necessario dare al primo una classe di prima. Questo perché non tutti i browser offrono la pseudo-classe: first-child.
Ma cosa succede se si desidera dividere una griglia in modo non uniforme? La vita non è sempre giusta, vero? Fortunatamente, YUI offre una serie di alternative alla classe yui-g. Ecco una lista degli altri:
Questo è tutto di loro; solo schiaffo 2 o 3 unità in ciascuna delle griglie precedenti e avrai colonne disuguali.
Bene, ora che conosci le corde, esaminiamo un esempio di base. Diciamo che vogliamo il layout standard del sito - sai, colonna del contenuto principale con una barra laterale a destra - con un po 'di twist: divideremo la colonna principale in due più piccoli e dividere uno di quelli in due.
Come ho detto, Yahoo offre hosting per questo framework, ed è generalmente una buona idea approfittarne. Inoltre, Yahoo consiglia il Doctype rigido HTML 4.01, quindi è quello che ho inserito. Ecco cosa iniziamo con:
Un semplice esempio di CSS YUI Grids