Prototype en magasin-stil-startside mal med CSS Framework

Når Collis lanserte dette nettstedet og spurte leserne om opplæringsforespørsler, var det vanlig å ha en "magazine temaer" for blogger. Denne opplæringen fokuserer på den første delen av prosessen: Bruke et CSS-nett til design for å prototype en startside mal.

Demo og Kilde

Du kan se en demonstrasjon av denne opplæringen ved å klikke på "Demo" -knappen nedenfor. For kilden inneholder ikke ZIP-filnedlastingen CSS-koden.




Hva vi bygger

Fokuset her er på et nettside design eksempel ved hjelp av Grenseoppsett CSS grid rammeverket, basert på min tidligere Which CSS Grid Framework artikkel. Du kan imidlertid bruke samme prosess til et CSS-gridramme du foretrekker. Hvis du ikke liker å bruke rutenettverk på produksjonssteder, kan du alltid erstatte CSS-koden og tilhørende HTML-klasser med dine egne.

Sidedesignet som er vist nedenfor, er påvirket av mange WordPress-magasinetemaer, slik at du kanskje ser kjente designelementer, selv om dette ikke er en WP-spesifikk opplæring.

En typisk grafisk designprosess

La meg påpeke at jeg bare er en "lenestol", selvlærte designer, og min minimalistiske natur vil gjenspeile min mangel på riktig opplæring. Forhåpentligvis kan du fokusere på det generelle griddesign og kodingsprosessen, som er basert på geometriske elementer, ikke på stil.

En typisk prosessprosess for nettsider er å starte med en skisse på papir, etterfulgt av en grafisk mockup i Photoshop eller fyrverkeri, etc. Slip inn alle designelementene, plassert omtrent hvor du vil ha dem. Senere, i CSS-gridbasert designfase, bestemmer du nøyaktige målinger.)

FilmPundits er et nettsted eid av en venn som jeg bygger opp. Mockupet nedenfor er en av flere "FilmScenic" -design som jeg har prototypisert. Filmemnet gir seg bare til dette eksempelet på grunn av widescreen-stilbilder.

Hvis du vil bruke en lignende design for ikke-filmemner, juster du bildestørrelsene for å få dem til å se mindre widescreen-y. For designbehovene mine må det største bildet ha størst effekt. Så sammensetningen er plassert litt utenfor sentrum, horisontalt. Dette gjør hele siden litt mer dynamisk og trekker øyet til de viktigste elementene.

La oss se på "guide" linjene nedenfor, som danner designruten for mockupen over.

Bruk din favorittgrafikkprogramvare til å snu styrelinjene til et "skive" -kart:

Hvis du ikke bruker et CSS-nett, vil du enten manuelt kode nettsiden og CSS-filen på dette tidspunktet, eller la programvaren generere koden for deg.

CSS Grid-Based Design Prosess

Nå som vi har en grafisk designmockup, må vi oversette det til HTML og CSS-kode. Å gjenta, ved hjelp av et CSS-gridramme, øker prototypeprosessen. Du kan måle designelementene i pikselbredder og finjustere for å passe til CSS-nettet som du bruker. (Jeg får ikke mye inn i vertikal posisjonering fordi jeg pleier å kontrollere det med bildehøyder og topp / bunnmarginer.)

Her er prosessen jeg vanligvis bruker til å bruke CSS-nett, som behandler den grafiske designmockupen som en side. Du må justere dette for å dekke dine behov.

  1. På et stykke papir tegner du et avgrensende rektangel - landskap eller portrett - som representerer den generelle formen på sidedesignet ditt.
  2. Del avgrensende rektangel i grove deler: header, bunntekst, hovedinnhold, sidebjelke.
  3. Skille de tøffe delene videre, etter behov.
  4. Velg ditt CSS-gridramme, enten det er forhåndsbygd eller tilpasset. Jeg bruker Blueprint. Du kan bruke dette ett-siders PDF-dokumentet som en "jukseark".
  5. Bestem på maksimal sidebredde. Jeg har brukt standardblokkbredden på 950 piksler, som er dannet av 24 kolonner på 30 px bred, og 10 px brede takrenner mellom kolonnene (24x30 - 10 = 950 px).
  6. Mock designen din i raster grafikk programvare (Photoshop, fyrverkeri, etc.) hvis du vil. Jeg pleier å hoppe over dette trinnet fordi. Merk at de fleste CSS-gridrammer inkluderer et PNG- eller JPG-nett som du kan legge over som en guide. Jeg brukte ikke det rutenettet i den grafiske designprosessen som er diskutert ovenfor.
  7. Bestem minimumbredder for dine ulike seksjoner.
    1. Jeg ønsket at sidebjørnen skulle være minst 190 px bred (5 Blueprint-kolonner), men forlot dette til sist, for å sikre at de tre små funksjonsblokkene nederst til venstre hadde prioritet.
    2. Den venstre siden av "features" -blokken skal ha en god bit hvit plass (> = 30 px, siden det er bredden på en kolonne i Blueprint). Etter å ha twiddling med de høyere prioriterte seksjonene, slo jeg meg på 3 kolonner = 110 px bred.
    3. De tre små funksjonene må ha samme bredde. Alt mindre enn 190 px bredt ville ikke ha samme visuelle innvirkning. Alt mer enn 190 px ville ikke gi nok plass til det hvite rommet til venstre. (Hvis jeg hadde tid og tilbøyelighet, kunne jeg ha opprettet en skreddersydd rammeverk som ville gi finere kontroll, eller brukt en større bredde-side helt.)
    4. Den store funksjonens bildebredde (590 px = 15 kolonner) blir automatisk bestemt, siden den må spenne bredden på alle tre mindre funksjonsblokkene. Dens høyde / breddeforhold er større enn for de mindre funksjonene, for visuell påvirkning og dermed å indikere at det er "viktigere" enn andre sideelementer. Alle disse bildene gir en widescreen-lignende appell, til tross for forskjellige høyde / breddeforhold.
    5. I delen "Nylige innlegg" i sidefeltet blir bildebredden tvunget til 70 px (2 kols) - i stedet for mine ønskede 48x48 tommer - som et resultat av hvilken horisontal skjerm fast eiendom er igjen. (Her er der et CSS-gridramme kan være et ansvar: tvunget størrelser.) Til slutt skjønner selv de små miniatyrbildene lett på "widescreen" -temaet.
    6. Eventuelle tekstblokker som er for brede, kan enkelt løstes ved hjelp av en mindre skrift - helst ved hjelp av en skriftfamilie som fortsatt kan leses med redusert størrelse.
  8. Bestem elementhøyder der det er mulig. Tilfredsstillende høydepreferanser har mindre betydning for meg, men jeg minimerte plasseringen av designelementene vertikalt, slik at den overordnede sidedesignen ekko en "widescreen" -følelse. I hvert fall for denne hjemmesiden malte jeg ikke at sidens høyde skulle være så stor at de fleste lesere måtte rulle nedover. Det ville ødelegge "widescreen" effekten.
    1. Menyen er bare en plassholder og ikke dekket her i kode. Den spenner over hele innholdsbredden på 710 px (18 kols).
    2. Høyden på det store funksjonsbildet ble bestemt av oppsettet. Dens proporsjoner bør ligne en "bred skjerm".
    3. De små funksjonene er en nedskalert versjon av de jeg bruker på et annet filmsted. Originalerne er 470 w x 175 h. Siden det er bare 190 px bred for å jobbe med, skaleres et originalbilde med den resulterende høyden 71 px, som jeg har trimmet her til 70 px. Den resulterende andelen gir fortsatt en widescreen-følelse, men ekko det faktum at disse blokkene ikke er like viktige som den store funksjonen bildet.
    4. Høyden på teksten til hver liten funksjonsseksjon er definert av fire vertikale seksjoner: filmtittel, postdato, postforfatter og beskrivelse, samt flere "bunngrenser". (I CSS-koden senere ser du at standardlinjens høyde er 115%.)
    5. Høyden på elementene i blokkene Nylige innlegg er minst 49 px, men de er variable, avhengig av lengden på et innleggs tittel.
    6. Øverst i nyhetsseksjonen står ikke helt opp til toppen av de små funksjonene. Det er måter å oppnå dette på, selv om jeg ikke har dekket det her.
  9. Bestem de endelige breddene til hvert element, factoring i gridrammens innstillinger. Du kan bruke papirskisse eller grafikkmockup som hjelpemiddel.
  10. Slå opp din grafiske mockup, hvis du bruker en, og lagre segmenter til bildefiler.
  11. Legg til de nødvendige Blueprint div-kodene og klassen attributter for å støtte designen din.
  12. Test og tweak til du har en endelig design du er fornøyd med.
  13. Hvis du vil, ta ut rammebetingelsene. Dette betyr å erstatte det eksplisitte rammeverket (HTML, CSS) med en implisitt - som for meg høres ut som mye unødvendig arbeid (men det er bare meg). I det minste, i produksjon, bruk den "komprimerte" versjonen av Blueprint-filene.
  14. Gå live.

Hvis du er en ekte designer, i motsetning til meg selv, vil du sannsynligvis gjøre det meste av designmockupen i din favorittgrafikredigeringspakke. Jeg foretrekker vanligvis å skisse på papir, deretter mocke på fly med HTML og CSS (både Blueprint og egendefinerte klasser), som omtalt nedenfor.

Grid-Based Coding Process

Nå som du har en mockup av sidelayout, kan du starte koding i HTML og CSS. Her er en grov prosess av de faktiske kodingstrinnene:

  1. Inkluder de nødvendige Blueprint CSS referanser og IE betinget kode i hode element av websiden din.
  2. I kroppsmerket, start med a div hvem sin klasse Attributtet er satt til "container". Dette er en Blueprint-kode for å spesifisere et beholderområde for designelementer. Denne delen av hele siden. Hvis du vil at rutenettet skal være synlig, kan du også legge til verdien "showgrid" til klasse attributt av denne div.
  3. Begynn å raffinere blokkene i mindre seksjoner ved hjelp av HTML-innhold innpakket i div koder, samt CSS-kontrollerte rektangler for bilder. For å spesifisere bredder, bruk leksikonene "span-x". Legg til i alle egendefinerte CSS-klasser du trenger. Jeg legger vanligvis inn overflødige egendefinerte blokker (med en grå bakgrunn), og fjern dem da jeg har min faktiske design implementert i kode.
  4. Du kan fortsette å forfine hver ujevn blokk, eller hoppe til neste trinn.
  5. Lag eventuelle logoer, ikoner eller bannere som ikke allerede var opprettet tidligere.
  6. Bytt ut tøffe blokker med egnede designelementer. Legg til riktig div koder, eventuelle gjenværende Blueprint klasse verdier.

Eksempel HTML og CSS kode

For å gjøre de ovennevnte prosessene tydeligere, la oss se på noen egentlige HTML- og CSS-kodefragmenter for filmprodukteksemplet som ble vist tidligere. Vær oppmerksom på at jeg har gått ekstrem med ikke-Blueprint div-kodene for klarhet i denne opplæringen. Du vil sannsynligvis ønske å fjerne eventuelle overskytende klasser, eventuelt slå sammen nestede div-koder.

Vær også oppmerksom på at jeg har brukt noen "stygge" CSS-klassenavn for ikke-Blueprint-skrifter for klarhet. De er alle foran "fs-", etterfulgt av et funksjonelt navn, for å gjøre det klart hva jeg bruker dem til.

Jeg har kodet fem trinn for denne opplæringen, for å illustrere forfiningsprosessen i HTML og CSS. Normalt vil jeg komprimere fase 1-3.

  1. Blank mal med Blueprint "container" klasse og tom CSS fil.
  2. Grov blokkeringstrinn 1.
  3. Grov blokkering 2. Avgrens ru blokker fra trinn 1.
  4. Grov blokkeringsfase 3. Endelig blokkforbedring til nødvendige seksjoner.
  5. Endelig nettside og CSS.

Disse trinnene vil bli tydeligere i seksjonene nedenfor.

Trinn 1: Blank malkode

For å starte med, vil vi sette opp HTML-filen:

   FilmScenic Mal        
header, innhold, sidebar og footer gå her
  1. Link til Blueprint "skjerm" og "utskrift" CSS-filer. Hvis du bruker en annen katalogstruktur, ikke glem å endre nettadressene tilsvarende. Jeg har plassert "blåkopi" -katalogen under index.html-filen, men i produksjon, bør den trolig gå "over" temakatalogen.
  2. Koble til den tilpassede "stil" CSS-filen, som vil inneholde alle CSS-klassene som ikke er Blueprint. I dette trinnet er det stil.css.
  3. Sett opp en div med klassene "container" og "showgrid", begge deler av Blueprint. Ved å bruke showgrid-klassen blir gridet vi bruker, noe som gjør det enklere å se at designelementene blir plassert riktig.

Trinn 2: Grov blokkeringstrinn 1

Nå blokkerer du hele siden (container) grovt inn i tre CSS-kontrollerte seksjoner: fs-mainblock, fs-sidebar og fs-footer. Du kan se dette i HTML-koden nedenfor, som fyller inn noen av div.container-elementet vi introduserte tidligere:

 
header, innholdsblokker går her
sidebar

(c) Copyright 2008-present, Denne bloggen


Du vil legge merke til at divs ovenfor bruker både egendefinerte klasser og Blueprint-klasser (span-18, colborder, span-5, sist, span-24). Klassen "siste" er veldig viktig, ellers vil ikke fs-sidebar-delen standard høyre margen bli slått av, og delen vil gjengis under fs-hovedblokken i stedet for ved siden av den. Colborder trekker en vertikal linje mellom fs-mainblock og fs-sidebar, og tar opp en kolonne av seg selv. Dette gjenspeiles ikke i verdien "span-18". I teorien tar mainblock faktisk 19 kolonner (19 + 5 = 24 kolonner, standardblanketten).

Nå legger vi klasser til det tilpassede stilarket for disse tre blokkene (se nedenfor). Merk: Noen av disse er midlertidige, for å demonstrere blokkrektanglene på skjermen mens du raffinerer designet. Ta kontakt med final style.css-filen i stedet for å bruke nøyaktig reglene som presenteres i CSS-kodestykket nedenfor.

 div.fs-innhold margin-bottom: 20px;  div.fs-mainblock høyde: 700px; bakgrunn: #ccc;  div.fs-sidebar høyde: 700px; bakgrunn: #ccc;  div.fs-footer margin-top: 20px; polstring: 5px; høyde: 30px; bakgrunn: #ccc; border-top: 1px solid # 000; 

CSS ovenfor resulterer i grov mockup under:

Trinn 3: Grov blokkeringstrinn 2

La oss avgrense designen ytterligere ved å bryte ned delene. Fs-mainblock div-klassen er delt inn i fs-header og fs-featured-seksjoner. Fs-sidebar er delt inn i fs-nyhetsbrev og fs-nyhetsboks. Her er den raffinerte div.container:

 
Logo + meny
Utvalgte seksjoner
Siste innlegg

Nyheter

(c) Copyright 2008-present, Denne bloggen


Som tidligere blir klasser for de nye seksjonene lagt til i det tilpassede stilarket, style.css. Hvert seksjons høyde er tilnærmet der det er nødvendig, og vi legger igjen en midlertidig bakgrunn til noen av elementene, som vil bli fjernet i den siste style.css-filen. Her er noen ekstra CSS-regler:

 div.fs-header // Logo + menybredde: 710px; høyde: 110px; bakgrunn: #ccc; margin-bunn: 10px;  div.fs-featured // Anbefalte seksjoner bredde: 710px; høyde: 580px; bakgrunn: #ccc; margin-bunn: 10px;  div.fs-sidebar div.fs-recentposts høyde: 370px; bakgrunn: #ccc; margin-bunn: 10px;  div.fs-sidebar div.fs-newsbox høyde: 270px; bakgrunn: #ccc; 

Dette resulterer i følgende mockup:

Trinn 4: Grov blokkeringstrinn 3

Dette er den siste fasen i mockup-prosessen. Vi legger til seksjoner for alle gjenværende designelementer:

  1. Del fs-header div-klassen i fs-logo og fs-horiznav.
  2. Del fs-funksjonen i fs-txt-funksjoner og fs-funksjoner.
  3. Videre dele fs-funksjoner i fs-bigfeature og fs-smfeatures.
  4. Videre dele fs-smfeatures i tre blokker, hver spenner over 5 Blueprint-columner. Ingen tilpassede CSS-klasser er behov for sistnevnte.
  5. Del fs-recentposts i fem fs-recentpost-seksjoner. (I en senere opplæring vil disse seksjonene bli integrert i WordPress, så bare en del vil bli brukt i en kode sløyfe.)

Slik ser vår divcontainer nå ut:

 
logo
Meny
Utvalgt
stor funksjon
sm-funksjonen
sm-funksjonen
sm-funksjonen
Siste innlegg
siste innlegget
siste innlegget
siste innlegget
siste innlegget
siste innlegget

Nyheter

(c) Copyright 2008-present, Denne bloggen


Som du ser, er det mange nestede diver som brukes. Noen av det er bare for klarhet i denne opplæringen. For resten, på et produksjonssted, kan du komprimere noe av det eller erstatte Blueprint-klassene med ditt eget. Noen foretrekker å bruke caching på sine nettsteder, når de bruker "magasin" -temaer med rutenettverk - selv om det ikke er mulig for denne opplæringen.

Hver av de nye klassene blir lagt til det tilpassede stilarket, med midlertidige høyder og bakgrunner:

 div.fs-logo / * Site logo * / høyde: 90px; bredde: 400px; bakgrunn: # 999; margin-bunn: 10px;  div.fs-horiznav / * Horisontal meny * / høyde: 25px; bredde: 710px; bakgrunn: # 999; margin-bunn: 10px;  div.fs-featured / * Utvalgte seksjoner * / bredde: 710px; høyde: 580px; bakgrunn: #ccc; margin-topp: 10px; margin-bunn: 10px;  div.fs-txt-featured / * Utvalgt * / høyde: 30px; bredde: 110px; bakgrunn: # 999;  div.fs-funksjoner / * Funksjoner * / høyde: 570px; bredde: 590px; bakgrunn: # 999;  div.fs-bigfeature / * Stor funksjon * / høyde: 260px; bredde: 590px; bakgrunn: # 666; margin-bunn: 20px;  div.fs-smfeatures div / * Liten funksjon * / høyde: 280px; bakgrunn: # 666; margin-bunn: 10px;  div.fs-recentpost / * Individuell nylig innlegg. Høyde er faktisk variabel, men er minst 49 px * / høyde: 50px; // Grov bredde: 190px; bakgrunn: # 999; margin-bunn: 10px; 

Dette resulterer i vår siste mockup-scenen, som ser ganske nær geometri til vår "skiver" grafisk designmockup:

Vi er nå klare til å produsere den endelige koden.

Trinn 5: Endelig malekode

Dette er det siste trinnet i kodingsprosessen, hvor vi faller ned i selve designelementene, gjør opprydding på overskytende divs og klasser og slipper av "blokkerende" elementer:

  1. Ta alle de tilpassede CSS-klassene og slipp bakgrunns- og høydeinnstillingene - med unntak av fs-horiznav. (Noen breddeinnstillinger er nødvendige. Slett de som ikke er.)
  2. Slett nå designelementer (bilder, tekstblokker) på de riktige stedene. Bruk de nødvendige Blueprint-klassene. (For eksempel, jeg bruker "div" for å tvinge en vertikal tilbakestilling etter en gruppe horisontale blokker. Se etter dette i prøven, og prøv å fjerne dem for å se hva som skjer ellers.)
  3. Legg til noen endelige div seksjoner og CSS klasser, etter behov. For eksempel, fs-smfeature, fs-posttittel, fs-postdate, fs-postauth, fs-descr, fs-recposts-head, fs-newsbox-hode, fs-newsbox-ul.
  4. Fjern eventuelle egendefinerte CSS-klasser som ikke lenger er nødvendige. Eksempelvis fs-funksjoner, fs-txt-kjennetegnet.
  5. Fjern eventuelle egendefinerte "konstruktør" -seksjoner som er utenlandske, eller slå dem sammen med eksisterende Blueprint-divs i HTML-en din. Jeg har forlatt dem for klarhet.
  6. Legg merke til at CSS-filen, under, bruker "disposisjon" i stedet for "grense" på alle bildene. Outlines blir gjengitt over toppen av et bilde og dermed ikke ta opp flere skjerm fast eiendom.
  7. Sidens standard linjehøyde er satt til 115%.

Nå har vi vårt siste design, under, som er det samme som på toppen av denne opplæringen:

Demo og nedlasting

De endelige filene har ingen av de gråblokkede elementene, og det finnes ytterligere verbose kommentarer i style.css-filen som skal hjelpe deg med å dekode formålet med hver tilpasset klasse. ZIP-filen inneholder bilder beskåret fra ulike filmplakater, som er opphavsrett til deres respektive eiere. CSS gridfilene er ikke inkludert i postnummeret.

Vær oppmerksom på at det kan forekomme små uoverensstemmelser mellom kildefilene og koden som presenteres ovenfor.




Siste tanker

Noen endelige kommentarer til eksemplet i denne opplæringen:

  1. Koden som presenteres her er litt clunky med sin ekstra div koder, men de er vant til å illustrere en gridbasert designprosess. Spesielt har jeg strukket ut mockup- og kodingsprosessen for å markere de mulige stadiene. Mange av designelementene kan strammes opp og deres tilsvarende div klasser elimineres i CSS-filen.
  2. Når du blir vant til å bruke CSS-gridrammer, er det sannsynligvis at du vil komprimere de tre CSS-gridmockup-trinnene som er diskutert ovenfor, til bare ett trinn, spesielt hvis du har et grafisk designoppslag for å starte med.
  3. Dette er ikke den eneste prosessen for nettbasert sidedesign. For en mye mer indepth behandling av rutenettdesign, se Mark Boultons serie, Fem enkle trinn for å designe rutenettsystemer.

Dette er ikke et komplekst eksempel, eller et fullt tema for en bloggplattform, men jeg håper det hjelper deg med å forstå hvordan du bruker CSS-nett for webdesign. Mens koden her er for en statisk side, er neste trinn å integrere det med en bloggplattform for å lage en startside mal.