Prototype un șablon de pagină principală de tip Magazine-Style cu cadrul CSS Blueprint

Când Collis a lansat acest site și a cerut cititorilor cereri de tutorial, unul comun a fost pentru o temă "reviste tematice" cum să pentru platforme blog. Acest tutorial se concentrează asupra primei părți a procesului: aplicarea unei rețele CSS în design pentru a realiza prototipul unui șablon de pagină de pornire.

Demo și sursă

Puteți vedea o demonstrație a acestui tutorial făcând clic pe butonul "Demo", de mai jos. Pentru sursă, descărcarea fișierului ZIP nu include codul Blueprint CSS.




Ce construim

Accentul se concentrează aici pe un exemplu de proiectare a paginii web folosind cadrul de rețea Blueprint CSS, bazat pe articolul meu anterioar ce CSS Grid Framework. Cu toate acestea, puteți aplica același proces pentru orice cadru de rețea CSS pe care îl preferați. Dacă nu vă place să utilizați cadre de rețea pe site-urile de producție, puteți întotdeauna să înlocuiți codul CSS și clasele corespunzătoare HTML cu propriile dvs..

Designul paginii prezentat mai jos este influențat de numeroasele teme ale revistei WordPress, astfel încât este posibil să vedeți elemente de design familiare, deși acest tutorial nu este un tutorial specific WP.

Un proces tipic de proiectare grafică

Permiteți-mi să subliniez că sunt doar un "fotoliu", designer auto-învățat, iar natura minimalistă a designului meu va reflecta lipsa mea de formare adecvată. Sperăm că vă permite să vă concentrați asupra procesului general de proiectare și codificare a rețelei, care se bazează pe elemente geometrice, nu pe stil.

Un proces tipic de proiectare pentru paginile web este de a începe cu o schiță pe hârtie, urmată de o machetă grafică în Photoshop sau Fireworks etc. Picăturați toate elementele de design, poziționate aproximativ în locul în care doriți. Mai târziu, în faza de proiectare a rețelei CSS, veți determina măsurătorile exacte.)

FilmPundits este un site deținut de un prieten pe care îl construiesc. Modelul de mai jos este unul dintre mai multe modele "FilmScenic" pe care le-am făcut prototip. Subiectul filmului se împrăștie doar în acest exemplu din cauza imaginilor în format panoramic.

Dacă doriți să utilizați un design similar pentru subiecte non-film, trebuie doar să ajustați înălțimile imaginii pentru a le face să pară mai puțin ecran lat. Pentru nevoile mele de design, cea mai mare imagine trebuie să aibă cel mai mare impact. Deci, compoziția este poziționată ușor în afara centrului, orizontal. Aceasta face ca intreaga pagina sa fie mai dinamica si atrage atentia asupra celor mai importante elemente.

Să aruncăm o privire la liniile "ghid" de mai jos, care formează grila de proiectare pentru mockup-ul de mai sus.

Utilizați software-ul grafic preferat pentru a transforma liniile de ghidare într-o hartă "felie":

Dacă nu utilizați o rețea CSS, veți codifica manual pagina dvs. web și fișierul CSS în acest moment sau permiteți software-ului dvs. să genereze codul pentru dvs..

Procesul de proiectare pe bază de grilă CSS

Acum că avem o machetă de design grafic, trebuie să o traducem în cod HTML și CSS. Pentru a reitera, folosirea unui cadru de rețea CSS accelerează procesul de prototipare. Puteți măsura elementele de design în lățimi pixel și finetune pentru a se potrivi grila CSS pe care o utilizați. (Nu am prea mult în poziționarea verticală, deoarece am tendința de a controla asta cu înălțimile imaginii și marginile de sus / jos).

Aici este procesul pe care îl folosesc în mod obișnuit pentru a aplica rețelele CSS, care tratează macheta de design grafic ca pe o parte. Va trebui să ajustați acest lucru pentru a vă satisface nevoile.

  1. Pe o bucată de hârtie, desenați un dreptunghi delimitator - peisaj sau portret - reprezentând forma generală a designului paginii.
  2. Împărțiți dreptunghiul de delimitare în secțiuni brute: antetul, subsolul, conținutul principal, bara laterală.
  3. Împărțiți secțiunile grosiere mai departe, după cum este necesar.
  4. Alegeți cadrul dvs. de rețea CSS, fie pre-construit, fie personalizat. Folosesc Blueprint. Puteți utiliza acest document PDF într-o singură pagină ca "foaie de înșelătorie".
  5. Decideți la lățimea maximă a paginii. Am folosit lățimea implicită a paginii Blueprint de 950 de pixeli, formată din 24 coloane cu o lățime de 30 de pixeli fiecare și 10 jetoane laterale între coloane (24x30 - 10 = 950 px).
  6. Mock up design-ul dvs. în software-ul grafice raster (Photoshop, Fireworks, etc), dacă doriți. Tind să trec peste acest pas pentru că. Rețineți că cele mai multe cadre de rețea CSS includ o rețea PNG sau JPG pe care o puteți suprapune ca ghid. Nu am folosit grilă în procesul de proiectare grafică discutat mai sus.
  7. Decideți la lățimi minime pentru diferitele dvs. secțiuni.
    1. Am vrut ca bara laterală să aibă o lățime de cel puțin 190 de pixeli (5 coloane Blueprint), dar a lăsat acest lucru până la sfârșit, pentru a asigura că cele trei blocuri de mici dimensiuni din stânga jos aveau prioritate.
    2. Partea din stânga a blocului "caracteristici" ar trebui să aibă un spațiu mic de spațiu alb (> = 30 px, deoarece aceasta este lățimea unei coloane în Blueprint). După răsucirea cu secțiunile cu prioritate înaltă, am stabilit 3 coloane = lățime de 110 px.
    3. Cele trei blocuri mici de caracteristici trebuie să aibă aceeași lățime. Orice cu o lățime mai mică de 190 de pixeli nu ar avea același impact vizual. Orice mai mult de 190 px nu ar lăsa spațiu suficient pentru spațiul alb spre stânga. (Dacă am avut timp și înclinație, aș fi putut crea un cadru Blueprint personalizat care să ofere un control mai fin sau să folosească o pagină cu lățime mai mare.)
    4. Lățimea imaginii mari a caracteristicilor (590 px = 15 coloane) este decisă automat, deoarece trebuie să se întindă pe lățimea tuturor celor trei blocuri de caracteristici mai mici. Raportul de înălțime / lățime este mai mare decât pentru imaginile de dimensiuni mai mici, pentru impact vizual și astfel înseamnă că este "mai important" decât alte elemente de pagină. Toate aceste imagini oferă o atracție asemănătoare ecranului, în ciuda raporturilor diferite înălțime / lățime.
    5. În secțiunea "Postări recente" din bara laterală, lățimea imaginii este forțată la 70 de px (2 colți) - în loc de degetele dorite 48x48 - ca urmare a faptului ce imobiliar pe ecranul orizontal este lăsat. (Iată unde un cadru al rețelei CSS poate fi o răspundere: dimensiuni forțate.) În final însă, chiar și micile miniaturi indică ușor tema "widescreen".
    6. Orice blocuri de text care sunt prea largi pot fi reparate cu ușurință utilizând un font mai mic - de preferință folosind o familie de fonturi care este încă lizibilă la dimensiunea redusă.
  8. Determinați înălțimile elementelor acolo unde este posibil. Satisfăcătorul pentru preferințele de înălțime este o preocupare mai puțin importantă pentru mine, dar am minimizat plasarea elementelor de design pe verticală, astfel încât designul general al paginii să reflecte o senzație de "ecran lat". Cel puțin pentru acest șablon de pagină de pornire, nu am vrut ca înălțimea paginii să fie atât de mare încât majoritatea cititorilor ar trebui să deruleze în jos. Aceasta ar distruge efectul "ecran lat".
    1. Meniul este doar un substituent și nu este acoperit aici în cod. Se întinde întreaga "conținut" de lățime de 710 px (18 colți).
    2. Înălțimea imaginii de lungime mare a fost determinată de aspect. Proporțiile sale ar trebui să semene cu un "ecran lat".
    3. Imaginile de mici dimensiuni sunt o versiune redusă a celor pe care le folosesc la un alt site de film. Originalele sunt 470 x 175 h. Din moment ce există doar 190 de lățime pentru a lucra cu, scalarea unei imagini originale face ca înălțimea rezultată 71 px, pe care le-am tăiat aici la 70 px. Proporția rezultată oferă în același timp o senzație de ecran lat, dar reamintește faptul că aceste blocuri nu sunt la fel de importante ca imaginea de lungime mare.
    4. Înălțimea textului fiecărei secțiuni de mici dimensiuni este definită de patru secțiuni verticale: titlul filmului, data postului, autorul și descrierea postului, precum și mai multe "limite inferioare". (Mai târziu, în codul CSS veți vedea că înălțimea liniei implicite este de 115%.)
    5. Înălțimea articolelor din blocul Mesaje recente are un minim de 49 px, deși variază în funcție de lungimea titlului unei postări.
    6. Partea superioară a secțiunii Știri nu se încadrează perfect în partea de sus a caracteristicilor mici. Există modalități de a realiza acest lucru, deși nu am acoperit acest lucru aici.
  9. Determinați lățimile finale ale fiecărui element, factorizând setările cadrului de rețea. Puteți folosi schița de hârtie sau macheta grafică ca ajutor.
  10. Plasați macheta grafică, dacă o utilizați și salvați segmente în fișiere imagine.
  11. Adăugați etichetele Blu divrint necesare și atributele de clasă pentru a vă susține designul.
  12. Testați și optimizați până veți avea un design final cu care vă bucurați.
  13. Dacă doriți, eliminați cadrul Blueprint. Aceasta înseamnă înlocuirea cadrului explicit (HTML, CSS) cu unul implicit - ceea ce mi se pare ca o mulțime de lucruri inutile (dar asta sunt doar eu). Cel puțin, în producție, utilizați versiunea "comprimată" a fișierelor Blueprint.
  14. Du-te si traieste.

Dacă sunteți un designer adevărat, spre deosebire de mine, probabil că veți face cea mai mare parte a machetei de design din pachetul dvs. preferat de editare grafică. Prefer, în general, să schițez pe hârtie, apoi să machez în zbor folosind codurile HTML și CSS (clase Blueprint și personalizate), după cum se discută mai jos.

Grid-Based Coding Proces

Acum, că aveți o machetă a aspectului paginii dvs., puteți începe codarea în HTML și CSS. Iată un proces brut al etapelor actuale de codificare:

  1. Includeți referințele CSS Blueprint necesare și codul condițional IE în cap element al paginii dvs. web.
  2. În eticheta corporală, începeți cu a div a caror clasă atributul este setat la "container". Acesta este un cod Blueprint pentru a specifica o zonă de containere pentru elementele de proiectare. Această secțiune este pe întreaga pagină. Dacă doriți ca grila să fie vizibilă, pentru a vă ajuta să plasați elemente în mod corespunzător, adăugați și valoarea "showgrid" la clasă atributul div.
  3. Începeți rafinarea blocurilor în secțiuni mai mici utilizând conținutul HTML înfășurat în div tag-uri, precum și dreptunghiuri controlate de CSS pentru imagini. Pentru a specifica lățimile, utilizați clasele "span-x" Blueprint. Adăugați în orice clase personalizate CSS de care aveți nevoie. De obicei, pun blocuri personalizate redundante (cu un fundal gri), apoi le elimina după ce am implementat propriul design în cod.
  4. Puteți continua să perfecționați fiecare bloc brut sau să treceți la pasul următor.
  5. Creați toate logo-urile, pictogramele sau bannerele necesare care nu au fost create anterior.
  6. Înlocuiți blocurile brute cu elemente de design reale. Adăugați potrivirea div tag-uri, orice valori ale clasei Blueprint rămase.

Exemplu de cod HTML și CSS

Pentru a face procesele de mai sus mai clare, să aruncăm o privire asupra unor fragmente reale de cod HTML și CSS pentru exemplul de design al site-ului filmului imaginat mai devreme. Rețineți că am mers extreme cu etichetele non-Blueprint div doar pentru claritate în acest tutorial. Probabil că veți dori să eliminați toate clasele excesive, eventual să îmbinați etichetele imbricate div.

Rețineți, de asemenea, că am folosit câteva clase "urâte" non-Blueprint CSS pentru claritate. Toate acestea sunt precedate de "fs-", urmate de un nume funcțional, pentru a clarifica pentru ce le folosesc.

Am codat cinci etape pentru acest tutorial, pentru a ilustra procesul de rafinare în HTML și CSS. În mod normal, aș comprima etapa 1-3.

  1. Blank template cu clasa Blueprint "container" și fișierul CSS gol.
  2. Stadiul blocaj brut 1.
  3. Stadiul blocării grave 2. Rafinați blocurile brute din etapa 1.
  4. Stadiul blocării grave 3. Rafinarea finală a blocului în secțiunile necesare.
  5. Pagina web finală și CSS.

Acești pași vor fi mai clare în secțiunile de mai jos.

Pasul 1: Codul șablonului gol

Pentru a începe cu, dorim să setăm fișierul HTML:

   Șablonul de film        
antet, conținut, bara laterală și subsolul mergeți aici
  1. Conectați fișierele CSS Blueprint "screen" și "print". Dacă utilizați o structură de director diferită, nu uitați să schimbați în mod corespunzător adresele URL. Am plasat directorul "blueprint" sub fișierul index.html, deși în producție, probabil ar trebui să meargă "deasupra" directorului tematic.
  2. Conectați-vă la fișierul personalizat "stil" CSS, care va conține toate clasele CSS non-Blueprint. În acest pas, asta e stil.css.
  3. Configurați div cu clasele "container" și "showgrid", ambele părți ale Blueprint. Folosind clasa showgrid vom face grila pe care o folosim, făcând mai ușor să vedem că elementele de design sunt plasate corect.

Pasul 2: Etapa de blocare accidentală 1

Acum blochează aproape întreaga pagină (container) în trei secțiuni controlate de CSS: fs-mainblock, fs-sidebar și fs-footer. Puteți vedea acest lucru în codul HTML de mai jos, care completează unele dintre elementele div.container pe care le-am introdus mai devreme:

 
antetul, blocurile de conținut merg aici
bara laterală

(c) Copyright 2008-prezent, Acest blog


Veți observa că divs-urile de mai sus utilizează clase personalizate și clase Blueprint (span-18, colborder, span-5, last, span-24). Clasa "ultim" este foarte importantă, în caz contrar marginea implicită a secțiunii barei laterale nu va fi oprită, iar secțiunea va fi afișată sub secțiunea fs-mainblock în loc de lângă ea. Colborderul trage o linie verticală între fs-mainblock și fs-sidebar și ocupă o coloană de la sine. Acest lucru nu este reflectat în valoarea "span-18". În teorie, blocul principal ocupă de fapt 19 coloane (19 + 5 = 24 coloane, implicit Blueprint).

Acum adăugăm clase în foaia de stil personalizată pentru aceste trei blocuri (vedeți mai jos). Notă: unele dintre acestea sunt temporare, pentru a demonstra dreptunghiurile de pe ecran în timp ce perfecționați designul. Consultați fișierul final stil.css în loc să utilizați exact regulile prezentate în fragmentele de cod CSS de mai jos.

 div.fs-conținut margin-bottom: 20px;  div.fs-mainblock height: 700px; fundal: #ccc;  div.fs-sidebar înălțime: 700px; fundal: #ccc;  div.fs-footer margin-top: 20px; padding-top: 5px; înălțime: 30px; fundal: #ccc; frontieră: 1px solid # 000; 

CSS de mai sus are ca rezultat machetul brut de mai jos:

Pasul 3: Etapa blocării 2

Să îmbunătățim în continuare designul prin ruperea secțiunilor. Clasa fs-mainblock div este împărțită în secțiuni fs-header și fs-featured. Bara laterală fs este împărțită în fs-recentposts și fs-newsbox. Aici este div.container rafinat:

 
Logo + meniu
Secțiuni recomandate
Postări recente

Știri

(c) Copyright 2008-prezent, Acest blog


Ca și până acum, clasele pentru secțiunile noi sunt adăugate în stilul personalizat, stil.css. Înălțimea fiecărei secțiuni este aproximată acolo unde este necesar și adăugăm încă o dată un fond temporar unor elemente, care vor fi eliminate în fișierul final stil.css. Iată câteva reguli CSS suplimentare:

 div.fs-header // Logo + lățime meniu: 710px; înălțime: 110px; fundal: #ccc; margin-bottom: 10px;  div.fs-featured // Lățimea secțiunilor recomandate: 710px; înălțime: 580px; fundal: #ccc; margin-bottom: 10px;  div.fs-bara laterală div.fs-recentposts height: 370px; fundal: #ccc; margin-bottom: 10px;  div.fs-bară laterală div.fs-newsbox height: 270px; fundal: #ccc; 

Acest lucru are ca rezultat macheta următoare:

Etapa 4: Etapa 3 blocării accidentale

Aceasta este etapa finală a procesului de machetare. Adăugăm secțiuni pentru toate elementele de design rămase:

  1. Împărțiți clasa fs-header div în fs-logo și fs-horiznav.
  2. Împărțiți funcția fs-featured în funcțiile fs-txt și fs.
  3. Împărțiți mai departe funcțiile fs în fs-bigfeature și fs-smfeatures.
  4. Împărțiți mai departe fs-smfeatures în trei blocuri, fiecare cuprinzând 5 columbi Blueprint. Nu sunt necesare clase personalizate CSS pentru acesta din urmă.
  5. Împărțiți fs-recentposts în cinci secțiuni fs-recentpost. (Într-un tutorial mai târziu, aceste secțiuni vor fi integrate în WordPress, astfel încât numai o secțiune va fi utilizată într-o buclă de cod.)

Iată cum arată acum div.container-ul nostru:

 
Siglă
Meniul
Recomandate
mare caracteristică
sm
sm
sm
Postări recente
postare recenta
postare recenta
postare recenta
postare recenta
postare recenta

Știri

(c) Copyright 2008-prezent, Acest blog


După cum puteți vedea, există o mulțime de divs imbricate folosite. Unele dintre ele sunt doar pentru claritate în acest tutorial. Pentru restul, pe un site de producție, puteți să compactați o parte din acesta sau să înlocuiți clasele Blueprint cu ale dvs. Unii oameni preferă să utilizeze caching-ul pe site-urile lor, atunci când folosesc teme "reviste" cu cadre de rețea - deși acest lucru nu este de natură pentru acest tutorial.

Fiecare dintre noile clase se adaugă la foaia de stil personalizată, cu înălțimi și fundaluri temporare:

 div.fs-logo / * logo-ul site-ului * / height: 90px; lățime: 400px; fundal: # 999; margin-bottom: 10px;  div.fs-horiznav / * Meniu orizontal * / înălțime: 25px; lățime: 710px; fundal: # 999; margin-bottom: 10px;  div.fs-featured / * Secțiuni recomandate * / lățime: 710px; înălțime: 580px; fundal: #ccc; margin-top: 10px; margin-bottom: 10px;  div.fs-txt-featured / * Recomandat * / înălțime: 30px; lățime: 110px; fundal: # 999;  Funcții div.fs / * Caracteristici * / height: 570px; lățime: 590px; fundal: # 999;  div.fs-bigfeature / * Caracteristică mare * / înălțime: 260px; lățime: 590px; fundal: # 666; margin-bottom: 20px;  div.fs-smfeatures div / * caracteristică mică * / height: 280px; fundal: # 666; margin-bottom: 10px;  div.fs-recentpost / * Postare individuală recentă. Înălțimea este de fapt variabilă, dar este de minimum 49 px * / height: 50px; // Lățimea aproximativă: 190px; fundal: # 999; margin-bottom: 10px; 

Acest lucru are ca rezultat etapa finală a machetelor, care arată destul de aproape de geometrie față de machetul nostru de design grafic "feliat":

Suntem gata să producem codul final.

Pasul 5: Codul final de șablon

Acesta este ultimul pas în procesul de codificare, în care scăpăm de elementele de design reale, facem curățenie în exces și diviziuni și scăpăm de elementele "blocante":

  1. Luați toate clasele personalizate CSS și renunțați la setările de fundal și înălțime - cu excepția fs-horiznav. (Unele setări de lățime sunt necesare. Dați-le pe cele care nu sunt.)
  2. Acum aruncați elemente de design (imagini, blocuri de text) în locurile potrivite. Utilizați clasele Blueprint necesare. (De exemplu, folosesc "div" pentru a forța o resetare verticală după un grup de blocuri orizontale. Căutați acest lucru în eșantion și încercați să le eliminați pentru a vedea ce se întâmplă altfel.)
  3. Adăugați eventuale secțiuni div divizate și clase CSS. De exemplu, fs-smfeature, fs-posttitle, fs-postdate, fs-postauth, fs-descr, fs-recposts-head, fs-newsbox-head.
  4. Eliminați toate clasele personalizate CSS care nu mai sunt necesare. De exemplu, funcțiile fs, fs-txt-featured.
  5. Eliminați toate diviziile "constructor" personalizate care sunt străine sau le îmbinați cu divizările Blueprint existente în HTML. Le-am lăsat pentru claritate.
  6. Rețineți că fișierul CSS, de mai jos, utilizează "contur" în loc de "margine" pentru toate imaginile. Schițele se preiau peste partea superioară a unei imagini și, prin urmare, nu ocupă un ecran imobiliar suplimentar pe ecran.
  7. Înălțimea liniei implicite a paginii este setată la 115%.

Acum avem proiectul nostru final, de mai jos, care este la fel ca în partea de sus a acestui tutorial:

Demo și Descărcare

Fișierele finale nu au nici unul dintre elementele blocate cu gri și există comentarii suplimentare detaliate în fișierul style.css care ar trebui să vă ajute să descifrați scopul fiecărei clase personalizate. Fișierul ZIP include imagini extrase din diferite postere de film, care sunt drepturile de autor ale proprietarilor respectivi. Fișierele grid Blueprint CSS nu sunt incluse în fișierul ZIP.

Rețineți că pot exista unele discrepanțe minore între fișierele sursă și codul prezentat mai sus.




Gândurile finale

Unele comentarii finale cu privire la exemplul din acest tutorial:

  1. Codul prezentat aici este un pic cam nebun cu extrasul div dar ele sunt folosite pentru a ilustra în mod clar un proces de proiectare pe bază de rețea. Mai exact, am întins macheta și procesul de codificare pentru a evidenția eventualele etape. Multe dintre elementele de proiectare pot fi înăbușite și clasele lor div corespunzătoare sunt eliminate în fișierul CSS.
  2. Pe măsură ce vă obișnuiți să utilizați cadrele de rețea CSS, este probabil să comprimați cele trei etape ale machetelor de rețea CSS discutate mai sus într-o singură etapă, mai ales dacă aveți o aplicație grafică slice-up pentru a începe cu.
  3. Acesta nu este singurul proces de creare a paginilor pe bază de grilă. Pentru un tratament mult mai indepedent al designului rețelei, vă rugăm să consultați seria lui Mark Boulton, Cinci pași simpli pentru proiectarea sistemelor de rețea.

Acesta nu este un exemplu complex, nici o temă completă pentru o platformă de blog, dar sper că vă ajută să înțelegeți cum să utilizați rețelele CSS pentru proiectarea paginilor web. În timp ce codul este pentru o pagină statică, următorul pas este să-l integrezi cu o platformă blog pentru a crea un șablon de pagină.

Cod