Prototypa en hemsida för tidskriftsstil med CSS Framework

När Collis lanserade den här webbplatsen och frågade läsare för instruktionsförfrågningar, var en vanlig en "magazine teman" hur-till för bloggplattformar. Denna handledning fokuserar på den första delen av processen: tillämpa ett CSS-rutnät till designen för att prototyper en mall för hemsidan.

Demo och Source

Du kan se en demonstration av denna handledning genom att klicka på "Demo" knappen nedan. För källan innehåller inte ZIP-filnedladdningen CSS-koden.




Vad vi bygger

Fokuset här är på ett webbdesign-exempel med hjälp av CSS-ramramen för Blueprint, baserat på min tidigare CSS Grid Framework-artikel. Du kan dock tillämpa samma process på alla CSS-rutor som du föredrar. Om du inte gillar att använda gallerramar på produktionsplatser kan du alltid ersätta CSS-koden och motsvarande HTML-klasser med din egen.

Siddesignen som visas nedan påverkas av många WordPress-tidskrifter, så du kanske ser bekanta designelement, men det här är inte en WP-specifik handledning.

En typisk grafisk designprocess

Låt mig påpeka att jag bara är en "fåtölj", självlärd designare, och min designs minimalistiska natur kommer att återspegla min brist på lämplig träning. Förhoppningsvis kan du fokusera på den allmänna rutnadesigneringen och kodningsprocessen, som bygger på geometriska element, inte på stil.

En typisk designprocess för webbsidor är att börja med en skiss på papper, följt av en grafisk mockup i Photoshop eller Fireworks, etc. Släpp i alla designelement, placerade ungefär där du vill ha dem. Senare, i CSS-nätbaserad designfas bestämmer du exakta mätningar.)

FilmPundits är en webbplats som ägs av en kompis som jag bygger upp. Mockupen nedan är en av flera "FilmScenic" -designer som jag har prototypat. Filmens ämne lutar sig bara till det här exemplet på grund av widescreen-stilbilderna.

Om du vill använda en liknande design för icke-filmämnen, justera bildhöjderna så att de ser mindre widescreen-y. För mina designbehov måste den största bilden ha störst effekt. Så kompositionen är placerad något utanför centrum, horisontellt. Detta gör hela sidan lite mer dynamisk och gör ögat till de viktigaste elementen.

Låt oss titta på "guide" -linjerna nedan, som bildar designnätet för mockupen ovan.

Använd din favoritgrafikprogramvara för att vrida styrlinjerna till en "skiva" -karta:

Om du inte använder ett CSS-nät, skulle du antingen manuellt koda din webbsida och CSS-fil vid den här tiden, eller låta din programvara generera koden för dig.

CSS-nätbaserad designprocess

Nu när vi har en grafisk designmockup, behöver vi översätta det till HTML och CSS-kod. Att upprepa, med hjälp av ett CSS-nät ramar fram prototypprocessen. Du kan mäta dina designelement i pixelbredder och finjustera för att passa CSS-nätet som du använder. (Jag får inte mycket in i vertikal positionering eftersom jag tenderar att kontrollera det med bildhöjder och topp / bottenmarginaler.)

Här är den process som jag brukar använda för att tillämpa CSS-nät, som behandlar den grafiska designmockupen som en sida. Du måste justera detta så att det passar dina behov.

  1. På en bit papper ritar du en avgränsande rektangel - landskap eller porträtt - som representerar den allmänna formen på din siddesign.
  2. Avdela den begränsande rektangeln i grova sektioner: rubrik, sidfot, huvudinnehåll, sidofält.
  3. Skilj de grova sektionerna vidare, efter behov.
  4. Välj ditt CSS-rutnätverk, oavsett om det är förbyggt eller anpassat. Jag använder Blueprint. Du kan använda det här ensidiga PDF-dokumentet som ett "fuskark".
  5. Bestäm på max sidbredd. Jag har använt standardbredden för Blueprint på 950 pixlar, som är formad av 24 kolumner på 30 px breda och 10 px breda rännor mellan kolumnerna (24x30 - 10 = 950 px).
  6. Mock upp din design i raster grafikprogram (Photoshop, Fireworks, etc.) om du vill. Jag brukar springa över det här steget eftersom. Observera att de flesta CSS-gridramar innehåller ett PNG- eller JPG-galler som du kan överlappa som en guide. Jag använde inte det nätet i den grafiska designprocessen som diskuterats ovan.
  7. Bestäm minsta bredd för dina olika avsnitt.
    1. Jag ville att sidofältet skulle vara minst 190 px bredt (5 Blueprint-kolumner), men lämnade det tills sista, för att säkerställa att de tre små funktionsblocken längst ner till vänster hade prioritet.
    2. Den vänstra sidan av "funktioner" -blocket ska ha en ganska liten vit yta (> = 30 px, eftersom det är bredden på en kolumn i Blueprint). Efter att ha twiddling med sektorerna med högre prioritet bestämde jag mig om 3 kolumner = 110 px breda.
    3. De tre små funktionerna måste ha samma bredd. Något mindre än 190 px bred skulle inte ha samma visuella inverkan. Något mer än 190 px skulle inte lämna tillräckligt med utrymme för det vita utrymmet till vänster. (Om jag hade tid och lutning, kunde jag ha skapat en anpassad ritning ram som skulle ge finare kontroll, eller använde en större bredd sida helt och hållet.)
    4. Den stora funktionens bildbredd (590 px = 15 kolumner) bestäms automatiskt, eftersom den måste spänna bredden på alla tre mindre funktionsblock. Dess förhållande höjd / bredd är större än för de mindre funktionen bilderna, för visuell påverkan och därmed att indikera att det är "viktigare" än andra sidelement. Alla dessa bilder ger en widescreenliknande överklagande, trots olika förhållanden mellan höjd och bredd.
    5. I avsnittet "Senaste inlägg" i sidofältet tvingas bildbredden till 70 px (2 kolumner) - i stället för mina önskade 48x48 tummar - som en följd av vilken horisontell skärmfastighet som finns kvar. (Här är en CSS-gridram kan vara en skuld: tvångsstorlekar.) I slutet ändras dock de små små miniatyrerna lätt vid "widescreen" -temat.
    6. Eventuella textblock som är för breda kan enkelt löstas genom att använda en mindre typsnitt - helst med en typsnitt som fortfarande kan läsas i den mindre storleken.
  8. Bestäm elementhöjder om möjligt. Tillfredsställande höjdpreferenser är mindre av intresse för mig, men jag minimerade placeringen av designelement vertikalt, så att den övergripande siddesignen echoes en "widescreen" känsla. Åtminstone för denna hemsida mall, ville jag inte att sidhöjden skulle vara så stor att de flesta läsare skulle behöva rulla ner. Det skulle förstöra "widescreen" -effekten.
    1. Menyn är bara en platshållare och omfattas inte här i koden. Den spänner över hela "innehållsbredden" på 710 px (18 kols).
    2. Höjden på den stora funktionen avbildades av layouten. Dess proportioner bör likna en "wide screen".
    3. De små bilderna är en nedskalad version av de jag använder på en annan filmplats. Originalen är 470 w x 175 h. Eftersom det bara är 190 px brett att arbeta med, gör en originalbildsskalning den resulterande höjden 71 px, som jag har trimmat här till 70 px. Den resulterande andelen ger fortfarande en bredbilds-känsla, men echo det faktum att dessa block inte är lika viktiga som den stora funktionen bilden.
    4. Höjden på texten i varje liten funktion sektion definieras av fyra vertikala sektioner: film titel, postdatum, postförfattare och beskrivning, samt flera "nedre gränser". (I CSS-koden senare ser du att standardlinjens höjd är 115%.)
    5. Höjden på objekten i blocket Senaste inlägg är minst 49 px, även om de varierar beroende på längden på ett inläggs titel.
    6. Överst i sektionen Nyheter står inte helt upp till toppen av de små funktionerna. Det finns sätt att uppnå detta, även om jag inte har täckt det här.
  9. Bestäm de slutliga bredderna för varje element, factoring i ditt rutnätverks inställningar. Du kan använda din pappersskissa eller grafikmockup som ett hjälpmedel.
  10. Skär upp din grafiska mockup, om du använder en och spara segment till bildfiler.
  11. Lägg till nödvändiga Blueprint div-taggar och klassattribut som stödjer din design.
  12. Test och tweak tills du har en slutlig design som du är nöjd med.
  13. Om du vill, ta bort ramschemat. Det innebär att ersätta den explicit ram (HTML, CSS) med en implicit en - vilket för mig låter som mycket onödigt arbete (men det är bara jag). I åtminstone, i produktion, använd den "komprimerade" versionen av Blueprint-filerna.
  14. Gå och lev.

Om du är en riktig designer, till skillnad från mig själv, kommer du förmodligen att göra det mesta av designmockupen i ditt favoritgrafikredigeringspaket. Jag föredrar oftast att skissa på papper, sedan mocka i flygning med hjälp av HTML och CSS (både Blueprint och anpassade klasser), som diskuteras nedan.

Nätbaserad kodningsprocess

Nu när du har en mockup av din sidlayout kan du börja kodning i HTML och CSS. Här är en grov process av de faktiska kodningsstegen:

  1. Inkludera nödvändiga CSS-referenser för Blueprint och IE villkorskod i huvud del av din webbsida.
  2. I kroppslabeln, börja med a div vars klass attributet är inställt på "behållare". Detta är en Blueprint-kod för att ange ett behållarområde för designelement. Detta avsnitt av hela sidan. Om du vill att rutnätet ska vara synligt, för att hjälpa dig att placera element på rätt sätt, lägg till värdet "showgrid" till klass attribut av denna div.
  3. Börja raffinera blocken i mindre sektioner med hjälp av HTML-innehåll som är inslaget i div taggar, samt CSS-kontrollerade rektanglar för bilder. För att ange bredder, använd klassen "span-x". Lägg till i några anpassade CSS-klasser som du behöver. Jag brukar lägga in överflödiga anpassade block (med grå bakgrund), ta bort dem sedan jag har min verkliga design implementerad i kod.
  4. Du kan fortsätta att förfina varje grovt block eller hoppa till nästa steg.
  5. Skapa alla nödvändiga logotyper, ikoner eller banderoller som inte redan skapades tidigare.
  6. Byt ut grova block med verkliga designelement. Lägg till lämpligt div taggar, eventuella återstående Blueprint klassvärden.

Exempel HTML och CSS-kod

För att göra de ovanstående processerna klarare, låt oss titta på några faktiska HTML- och CSS-kodfragment för det exemplar av filmplatsdesign som tidigare visats. Tänk på att jag har gått extrema med de icke-Blueprint div-taggarna för tydlighet i denna handledning. Du kommer noga att vilja ta bort eventuella överskottsklasser, eventuellt slå samman nestade div-taggar.

Observera också att jag har använt vissa "fula" icke-Blueprint CSS-klassnamn för tydlighet. De föregås av "fs-", följt av ett funktionellt namn för att klargöra vad jag använder dem för.

Jag har kodat fem steg för denna handledning för att illustrera förfiningsprocessen i HTML och CSS. Normalt skulle jag komprimera steg 1-3.

  1. Blank mall med Blueprint "container" -klass och tom CSS-fil.
  2. Grovt blockerande steg 1.
  3. Grovt blockerande stadium 2. Förfinera grova block från steg 1.
  4. Grovt blockerande stadium 3. Slutlig blockförfining i nödvändiga sektioner.
  5. Slutlig webbsida och CSS.

Dessa steg kommer att bli tydligare i avsnitten nedan.

Steg 1: Blank mallkod

För att börja med vill vi skapa HTML-filen:

   FilmScenic Mall        
rubrik, innehåll, sidofält och sidfot går här
  1. Länk till CSS-filerna "Blueprint" och "Print". Om du använder en annan katalogstruktur, glöm inte att ändra webbadresserna i enlighet med detta. Jag har placerat "Blueprint" -katalogen under index.html-filen, men i produktionen borde den antagligen gå "över" din temakatalog.
  2. Länk till den anpassade "style" CSS-filen, som innehåller alla CSS-klasser som inte är Blueprint. I det här steget är det stil.css.
  3. Ställ in en div med klasserna "container" och "showgrid", båda delar av Blueprint. Genom att använda showgrid-klassen blir gridet vi använder, vilket gör det enklare att se att designelementen placeras ordentligt.

Steg 2: Grovt blockerande steg 1

Blockera nu hela sidan (behållaren) i tre CSS-kontrollerade sektioner: fs-mainblock, fs-sidebar och fs-footer. Du kan se detta i HTML-koden nedan, vilket fyller i några av div.container-elementet som vi introducerade tidigare:

 
rubrik, innehållsblock går här
sidofältet

(c) Copyright 2008-present, Den här bloggen


Du märker att divsna ovan använder både anpassade klasser och Blueprint-klasser (span-18, colborder, span-5, last, span-24). Klassen "sista" är väldigt viktig, annars kommer inte fs-sidebar-sektionen standard höger marginal att stängas av, och sektionen kommer att göra under avsnittet fs-mainblock istället för bredvid det. Colborder drar en vertikal linje mellan fs-mainblock och fs-sidebar, och tar upp en kolumn i sig. Detta återspeglas inte i "span-18" -värdet. I teorin tar mainblock faktiskt upp 19 kolumner (19 + 5 = 24 kolumner, standardblanketten).

Nu lägger vi till klasser till det anpassade formatarket för dessa tre kvarter (se nedan). Obs! En del av dessa är tillfälliga för att visa blockrektanglarna på skärmen medan du förädlar designen. Konsultera den slutliga style.css-filen istället för att använda exakt de regler som presenteras i CSS-kodsekvenserna nedan.

 div.fs-innehåll margin-bottom: 20px;  div.fs-mainblock höjd: 700px; bakgrund: #ccc;  div.fs-sidebar höjd: 700px; bakgrund: #ccc;  div.fs-footer margin-top: 20px; padding-top: 5px; höjd: 30px; bakgrund: #ccc; border-top: 1px solid # 000; 

CSS ovan resulterar i den grova mockupen nedan:

Steg 3: Grovt blockerande steg 2

Låt oss förstärka designen ytterligare genom att bryta ner sektionerna. Fs-mainblock div-klassen är uppdelad i fs-header och fs-featured sektioner. Fs-sidebaren är uppdelad i fs-recentposts och fs-newsbox. Här är den raffinerade div.container:

 
Logo + meny
Utvalda avsnitt
Nya Inlägg

Nyheter

(c) Copyright 2008-present, Den här bloggen


Som tidigare läggs klasser för de nya sektionerna till det anpassade formatarket, style.css. Varje sektions höjd approximeras vid behov och vi lägger en gång till en tillfällig bakgrund till några av elementen, som kommer att tas bort i den slutliga style.css-filen. Här är några ytterligare CSS-regler:

 div.fs-header // Logo + menybredd: 710px; höjd: 110px; bakgrund: #ccc; marginal-botten: 10px;  div.fs-featured // Utvalda sektionsbredd: 710px; höjd: 580px; bakgrund: #ccc; marginal-botten: 10px;  div.fs-sidebar div.fs-recentposts height: 370px; bakgrund: #ccc; marginal-botten: 10px;  div.fs-sidebar div.fs-newsbox height: 270px; bakgrund: #ccc; 

Detta resulterar i följande mockup:

Steg 4: Grovt blockerande steg 3

Detta är det sista steget i mockup-processen. Vi lägger till avsnitt för alla återstående designelement:

  1. Dela fs-header div-klassen i fs-logo och fs-horiznav.
  2. Dela fs-featured i fs-txt-featured och fs-funktioner.
  3. Vidare dela fs-funktioner i fs-bigfeature och fs-smfeatures.
  4. Vidare dela fs-smfeatures i tre block, vardera spänner över 5 Blueprint-kolumner. Inga anpassade CSS-klasser behövs för den senare.
  5. Dela fs-recentposts i fem fs-recentpost sektioner. (I en senare handledning kommer dessa avsnitt att integreras i WordPress, så endast en sektion kommer att användas i en kodslinga.)

Så här ser vår div.container ut:

 
Logotyp
Meny
Dagens
stor funktion
sm-funktionen
sm-funktionen
sm-funktionen
Nya Inlägg
Senaste inlägget
Senaste inlägget
Senaste inlägget
Senaste inlägget
Senaste inlägget

Nyheter

(c) Copyright 2008-present, Den här bloggen


Som du kan se finns det många nestade divs som används. En del av det är bara för tydlighet i denna handledning. För resten kan du på en produktionsplats komprimera en del av det eller ersätta Blueprint-klasserna med din egen. Vissa föredrar att använda caching på sina webbplatser, när man använder "magazine" teman med rutnätverk - men det är inte tillgängligt för denna handledning.

Var och en av de nya klasserna läggs till i det anpassade formatarket, med temporära höjder och bakgrunder:

 div.fs-logo / * Site logo * / höjd: 90px; bredd: 400px; bakgrund: # 999; marginal-botten: 10px;  div.fs-horiznav / * Horisontell meny * / höjd: 25px; bredd: 710px; bakgrund: # 999; marginal-botten: 10px;  div.fs-featured / * Utvalda avsnitt * / bredd: 710px; höjd: 580px; bakgrund: #ccc; marginal-topp: 10px; marginal-botten: 10px;  div.fs-txt-featured / * Utvalda * / höjd: 30px; bredd: 110px; bakgrund: # 999;  div.fs-features / * Funktioner * / höjd: 570px; bredd: 590px; bakgrund: # 999;  div.fs-bigfeature / * Stor funktion * / höjd: 260px; bredd: 590px; bakgrund: # 666; marginalbotten: 20px;  div.fs-smfeatures div / * Liten egenskap * / höjd: 280px; bakgrund: # 666; marginal-botten: 10px;  div.fs-recentpost / * Individuell ny post. Höjden är faktiskt variabel, men är minst 49 px * / höjd: 50px; // Grov bredd: 190px; bakgrund: # 999; marginal-botten: 10px; 

Detta resulterar i vårt slutliga mockup-stadium, som ser ganska nära geometrier till vår "skivad" grafisk designmockup:

Vi är nu redo att producera den slutliga koden.

Steg 5: Slutlig mallkod

Det här är det sista steget i kodningsprocessen, där vi släpper in faktiska designelement, gör sanering på överskridna divs och klasser, och avlägsnar några "blockerings" -element:

  1. Ta alla anpassade CSS-klasser och släpp bakgrunds- och höjdinställningarna - med undantag för fs-horiznav. (Vissa breddinställningar är nödvändiga. Släpp dem som inte är.)
  2. Släpp nu in designelement (bilder, textblock) på lämpliga platser. Använd de nödvändiga Blueprint-klasserna. (Till exempel, jag använder "div" för att tvinga en vertikal återställning efter en grupp horisontella block. Leta efter det här i provet och försök ta bort dem för att se vad som händer annars.)
  3. Lägg till några slutliga div-sektioner och CSS-klasser, om det behövs. Fs-smfeatur, fs-posttitle, fs-postdate, fs-postauth, fs-descr, fs-recposts-head, fs-newsbox-huvudet, fs-newsbox-ul.
  4. Ta bort alla anpassade CSS-klasser som inte längre behövs. T.ex. fs-features, fs-txt-featured.
  5. Ta bort eventuella anpassade "konstruktör" -substanser som är externa eller slå samman dem med befintliga ritningsskivor i din HTML. Jag har lämnat in dem för tydlighet.
  6. Observera att CSS-filen, nedan, använder "skiss" istället för "gränsen" på alla bilder. Konturerna görs överst på en bild och tar därmed inte upp mer skärmfastigheter.
  7. Sidans standardlinjehöjd är inställd på 115%.

Nu har vi vår slutliga design, nedan, vilket är detsamma som i början av denna handledning:

Demo och Download

De slutliga filerna har ingen av de gråblåsta elementen, och det finns ytterligare verbala kommentarer i style.css-filen som ska hjälpa dig att dechiffrera syftet med varje anpassad klass. ZIP-filen innehåller bilder beskurna från olika filmaffischer, som är upphovsrättshavarna till respektive ägare. CSS gridfilerna ingår inte i ZIP-filen.

Observera att vissa mindre skillnader kan finnas mellan källfilerna och koden som presenteras ovan.




Slutgiltiga tankar

Några slutliga kommentarer till exemplet i denna handledning:

  1. Koden som presenteras här är lite clunky med dess extra div taggar, men de är vana att tydligt illustrera en nätbaserad designprocess. Specifikt har jag sträckt ut mockup och kodningsprocessen för att markera de möjliga stadierna. Många av designelementen kan stramas upp och deras motsvarande div klasser elimineras i CSS-filen.
  2. När du är van vid att använda CSS-gridramar, kommer du troligen att komprimera de tre CSS-gridmockup-faser som diskuteras ovan i bara ett steg, speciellt om du har en grafisk designskiva för att börja med.
  3. Detta är inte den enda processen för nätbaserad siddesign. För en mer djupgående behandling av gallerdesign, se Mark Boultons serie, Fem enkla steg för att designa nätverkssystem.

Detta är inte ett komplext exempel eller ett helt tema för en bloggplattform, men jag hoppas det hjälper dig att förstå hur du använder CSS-nät för webbdesign. Medan koden här är för en statisk sida, är nästa steg att integrera den med en bloggplattform för att skapa en startsida mall.