Maak een prototype van een Home-Style Home Page Template met het Blueprint CSS Framework

Toen Collis deze site lanceerde en lezers om tutorial-verzoeken vroeg, was er een algemene voor een "magazine-thema's" -instructie voor blogplatforms. Deze zelfstudie concentreert zich op het eerste deel van het proces: het toepassen van een CSS-raster op het ontwerp om een ​​startpagina-sjabloon te prototypen.

Demo en bron

Je kunt een demo van deze tutorial bekijken door hieronder op de knop "Demo" te klikken. Voor de bron bevat de download van het ZIP-bestand geen Blueprint CSS-code.




Wat we bouwen

De focus ligt hier op een voorbeeld van een webpaginaontwerp met behulp van het Blueprint CSS grid framework, gebaseerd op mijn eerdere Which CSS Grid Framework-artikel. U kunt echter hetzelfde proces toepassen op elk CSS-rasterkader dat u verkiest. Als u het gebruik van rasterkaders op productiesites niet leuk vindt, kunt u de CSS-code en de bijbehorende HTML-klassen altijd vervangen door uw eigen CSS-code.

Het onderstaande pagina-ontwerp wordt beïnvloed door verschillende WordPress-tijdschriftthema's, dus u kunt bekende ontwerpelementen zien, hoewel dit geen WP-specifieke zelfstudie is.

Een typisch grafisch ontwerpproces

Laat ik erop wijzen dat ik slechts een 'fauteuil' ben, autodidactisch ontwerper, en de minimalistische aard van mijn ontwerp zal mijn gebrek aan goede training weerspiegelen. Hopelijk kunt u zich daarmee concentreren op het algemene ontwerp en coderingsproces van het raster, dat gebaseerd is op geometrische elementen, niet op stijl.

Een typisch ontwerpproces voor webpagina's is om te beginnen met een schets op papier, gevolgd door een grafische mockup in Photoshop of Fireworks, enz. Laat alle ontwerpelementen vallen die zich op de plek bevinden waar u ze wilt hebben. Later, in de CSS grid-gebaseerde ontwerpfase, bepaalt u de exacte metingen.)

FilmPundits is een site die eigendom is van een vriend die ik aan het opbouwen ben. Het onderstaande mockup is een van de verschillende "FilmScenic" -ontwerpen die ik heb geprototypeerd. Het onderwerp film leent zich gewoon voor dit voorbeeld vanwege de beelden in breedbeeldstijl.

Als u een soortgelijk ontwerp wilt gebruiken voor niet-filmonderwerpen, past u de beeldhoogten aan zodat ze er minder widescreen-y uitzien. Voor mijn ontwerpbehoeften moet de grootste afbeelding de meeste impact hebben. Dus de compositie bevindt zich iets uit het midden, horizontaal. Dit maakt de hele pagina een beetje dynamischer en trekt de aandacht naar de belangrijkste elementen.

Laten we de onderstaande 'gids'-lijnen bekijken die het ontwerpraster vormen voor de bovenstaande mockup.

Gebruik uw favoriete grafische software om de hulplijnen in een "plak" -kaart te veranderen:

Als u geen CSS-raster gebruikt, codeert u op dit moment uw webpagina en CSS-bestand handmatig, of laat uw software de code voor u genereren.

CSS Grid-Based Design Process

Nu we een grafisch ontwerpmodel hebben, moeten we dat vertalen in HTML- en CSS-code. Om nog maar eens te herhalen, versnelt het gebruik van een CSS grid framework het prototypingproces. U kunt uw ontwerpelementen in pixelbreedten en finetune meten, zodat ze passen bij het CSS-raster dat u gebruikt. (Ik kom niet veel in verticale positionering omdat ik de neiging heb om dat te regelen met beeldhoogten en boven / onder marges.)

Hier is het proces dat ik meestal gebruik om CSS-rasters toe te passen, die de mockup voor grafisch ontwerpen als een terzijde behandelen. U moet dit aanpassen aan uw behoeften.

  1. Teken op een vel papier een begrenzende rechthoek - landschap of portret - die de algemene vorm van uw paginaontwerp vertegenwoordigt.
  2. Verdeel de begrenzingsrechthoek in ruwe secties: koptekst, voettekst, hoofdinhoud, zijbalk.
  3. Verdeel de ruwe secties verder, indien nodig.
  4. Kies uw CSS-rasterframe, of het nu voorgebouwd of op maat is. Ik gebruik Blueprint. U kunt dit PDF-document van één pagina gebruiken als een "spiekbriefje".
  5. Bepaal de maximale paginabreedte. Ik heb de Blueprint standaardpaginabreedte van 950 pixels gebruikt, die is samengesteld uit 24 kolommen van elk 30 px breed en 10 px brede goten tussen kolommen (24x30 - 10 = 950 px).
  6. Bespreek uw ontwerp in grafische rastersoftware (Photoshop, Fireworks, enz.) Als u dat wilt. Ik heb de neiging om deze stap over te slaan omdat. Merk op dat de meeste CSS-rasterwerken een PNG- of JPG-raster bevatten dat u als een overlay kunt plaatsen. Ik heb dat raster niet gebruikt in het hierboven besproken grafische ontwerpproces.
  7. Bepaal de minimale breedte voor uw verschillende secties.
    1. Ik wilde dat de zijbalk minimaal 190 px breed was (5 Blueprint-kolommen), maar dit tot de laatste keer heeft overgelaten om ervoor te zorgen dat de drie kleine functieblokken linksonder voorrang hadden.
    2. De linkerkant van het "functies" -blok zou een redelijk beetje witruimte moeten hebben (> = 30 px, omdat dat de breedte is van één kolom in Blueprint). Na twiddling met de secties met hogere prioriteit, vestigde ik me op 3 kolommen = 110 px breed.
    3. De drie kleine functiesblokken moeten dezelfde breedte hebben. Iets minder dan 190 px breed zou niet dezelfde visuele impact hebben. Alles met meer dan 190 px zou niet genoeg ruimte laten voor de witte ruimte aan de linkerkant. (Als ik de tijd en de neiging had, had ik een aangepast Blueprint-raamwerk kunnen maken dat een fijnere controle zou geven of een pagina met een grotere breedte zou gebruiken.)
    4. De breedte van de grote functieafbeelding (590 px = 15 kolommen) wordt automatisch bepaald, omdat deze de breedte van alle drie de kleinere functieblokken moet overbruggen. De hoogte / breedte-verhouding is groter dan voor de kleinere functie-afbeeldingen, voor visuele impact en dus om aan te geven dat deze "belangrijker" is dan andere pagina-elementen. Al deze afbeeldingen geven een breedbeeld-achtige aantrekkingskracht, ondanks verschillende verhoudingen in hoogte / breedte.
    5. In de sectie "Recente berichten" van de zijbalk wordt de breedte van de afbeelding geforceerd naar 70 px (2 cols) - in plaats van mijn gewenste 48x48 duimen - als gevolg van wat horizontaal schermvast is. (Hier is waar een CSS rasterframe een verplichting kan zijn: geforceerde formaten.) Uiteindelijk wijzen zelfs de kleine miniaturen licht op het "breedbeeld" -thema.
    6. Tekstblokken die te breed zijn, kunnen eenvoudig worden gecorrigeerd door een kleiner lettertype te gebruiken - bij voorkeur een lettertype-familie die nog steeds leesbaar is met een kleiner formaat.
  8. Bepaal elementhoogten waar mogelijk. Het voldoen van de hoogtevoorkeuren is voor mij minder belangrijk, maar ik heb de plaatsing van ontwerpelementen verticaal geminimaliseerd, zodat het algemene paginaontwerp een "breedbeeld" -gevoel weerkaatst. In ieder geval voor deze startpagina-sjabloon, wilde ik niet dat de pagina-hoogte zo groot was dat de meeste lezers naar beneden moesten scrollen. Dat zou het "breedbeeld" -effect verpesten.
    1. Het menu is slechts een tijdelijke aanduiding en wordt hier niet in de code behandeld. Het omvat de volledige "content" -breedte van 710 px (18 cols).
    2. De hoogte van het grote functiebeeld werd bepaald door de lay-out. De verhoudingen zouden moeten lijken op een "breed scherm".
    3. De afbeeldingen met kleine functies zijn een verkleinde versie van die ik gebruik op een andere filmsite. De originelen zijn 470 x 175 uur. Aangezien er slechts 190 px breed is om mee te werken, wordt door het schalen van een originele afbeelding de resulterende hoogte 71 px, die ik hier heb bijgesneden tot 70 px. De resulterende verhouding geeft nog steeds een breedbeeldgevoel, maar weerspiegelt het feit dat deze blokken niet zo belangrijk zijn als het grote functiebeeld.
    4. De hoogte van de tekst van elke kleine functie-sectie wordt bepaald door vier verticale secties: filmtitel, datum van de post, auteur en beschrijving van de post, evenals verschillende "ondergrenzen". (In de CSS-code later ziet u dat de standaardlijnhoogte 115% is.)
    5. De hoogte van de items in het blok Recente berichten is minimaal 49 px, hoewel ze variabel zijn, afhankelijk van de lengte van de titel van een bericht.
    6. De bovenkant van de Nieuws-sectie komt niet helemaal overeen met de top van de kleine functies. Er zijn manieren om dit te bereiken, hoewel ik dat hier niet heb behandeld.
  9. Bepaal de uiteindelijke breedte van elk element, rekening houdend met de instellingen van uw rasterframe. U kunt uw papieren schets of grafische mockup gebruiken als hulpmiddel.
  10. Snijd uw grafische mockup op, als u er een gebruikt en sla segmenten op in afbeeldingsbestanden.
  11. Voeg de benodigde Blueprint div-tags en klassekenmerken toe om uw ontwerp te ondersteunen.
  12. Test en knijp totdat je een definitief ontwerp hebt waarmee je tevreden bent.
  13. Als je wilt, haal je het Blueprint-framework eruit. Dit betekent dat het expliciete framework (HTML, CSS) moet worden vervangen door een impliciet framework - wat voor mij klinkt als een hoop onnodig werk (maar dat ben ik alleen). Gebruik in de productie de gecomprimeerde versie van de Blueprint-bestanden.
  14. Ga leven.

Als u een echte ontwerper bent, zult u waarschijnlijk, in tegenstelling tot ik, de meeste van de ontwerpmodellen in uw favoriete grafische bewerkingspakket doen. Ik schets over het algemeen liever op papier en bespreek het vervolgens direct met HTML en CSS (beide Blueprint en aangepaste klassen), zoals hieronder besproken.

Op grid gebaseerd coderingsproces

Nu u een mockup van uw paginalay-out hebt, kunt u beginnen met coderen in HTML en CSS. Hier volgt een globaal proces van de daadwerkelijke codeerstappen:

  1. Voeg de nodige Blueprint CSS-verwijzingen en IE-voorwaardelijke code toe in de hoofd element van uw webpagina.
  2. Begin in de body-tag met een div wiens klasse attribuut is ingesteld op "container". Dit is een Blueprint-code om een ​​containergebied voor ontwerpelementen op te geven. Dit gedeelte van de hele pagina. Als u wilt dat het raster zichtbaar is, voegt u de waarde "showgrid" toe om de elementen correct te plaatsen klasse kenmerk van deze div.
  3. Begin met het verfijnen van de blokken in kleinere secties met behulp van HTML-inhoud ingepakt div tags, evenals CSS-gestuurde rechthoeken voor afbeeldingen. Als u breedte wilt opgeven, gebruikt u de Blueprint "span-x" -klassen. Voeg eventuele aangepaste CSS-klassen toe die u nodig hebt. Ik gebruik meestal overbodige aangepaste blokken (met een grijze achtergrond) en verwijder ze vervolgens nadat ik mijn daadwerkelijke ontwerp in code heb geïmplementeerd.
  4. U kunt doorgaan met het verfijnen van elk ruw blok of doorgaan naar de volgende stap.
  5. Maak de nodige logo's, pictogrammen of banners die nog niet eerder zijn gemaakt.
  6. Vervang ruwe blokken door actuele ontwerpelementen. Voeg de juiste toe div tags, eventuele resterende Blueprint-klassewaarden.

Voorbeeld HTML en CSS-code

Om de bovenstaande processen duidelijker te maken, laten we enkele echte HTML- en CSS-codefragmenten bekijken voor het voorbeeld van de filmsite die eerder is afgebeeld. Houd er rekening mee dat ik in deze zelfstudie puur voor de duidelijkheid extreem ben gegaan met de niet-Blueprint-labels. Waarschijnlijk wilt u overtollige klassen verwijderen, mogelijk geneste div-tags samenvoegen.

Merk ook op dat ik een aantal "lelijke" CSS-klassenamen voor niet-Blueprint voor de duidelijkheid heb gebruikt. Ze worden allemaal voorafgegaan door "fs-", gevolgd door een functionele naam, om duidelijk te maken waarvoor ik ze gebruik.

Ik heb voor deze zelfstudie vijf fasen gecodeerd, ter illustratie van het verfijningsproces in HTML en CSS. Normaal zou ik fase 1-3 comprimeren.

  1. Leeg sjabloon met blauwdruk "container" klasse en leeg CSS-bestand.
  2. Ruwe blokkeringsfase 1.
  3. Ruwe-blokkeerfase 2. Verfijn ruwe blokken vanaf fase 1.
  4. Ruwe-blokkeerfase 3. Laatste blokverfijning in noodzakelijke secties.
  5. Laatste webpagina en CSS.

Deze stappen worden duidelijker in de onderstaande secties.

Stap 1: Lege sjablooncode

Om te beginnen, willen we het HTML-bestand instellen:

   FilmScenic-sjabloon        
koptekst, inhoud, zijbalk en voettekst, ga hier naartoe
  1. Link naar de Blueprint "scherm" en "print" CSS-bestanden. Als u een andere directorystructuur gebruikt, vergeet dan niet om de URL's dienovereenkomstig te wijzigen. Ik heb de "blauwdruk" -map onder het index.html-bestand geplaatst, hoewel het in de productie waarschijnlijk "boven" je themafolder moet gaan.
  2. Link naar het aangepaste CSS-bestand "stijl", dat alle niet-Blueprint CSS-klassen bevat. In deze stap is dat style.css.
  3. Stel een div in met de klassen "container" en "showgrid", beide onderdeel van Blueprint. Als u de klasse showgrid gebruikt, wordt het gebruikte raster weergegeven, zodat u gemakkelijker kunt zien dat ontwerpelementen correct worden geplaatst.

Stap 2: Ruw blokkeringsfase 1

Sluit nu grofweg de hele pagina (container) af in drie CSS-gestuurde secties: fs-mainblock, fs-sidebar en fs-footer. U kunt dit zien in de onderstaande HTML-code, die een deel van het div.container-element dat we eerder hebben ingevoerd, invult:

 
header, inhoudsblokken gaan hier naartoe
zijbalk

(c) Copyright 2008-heden, Dit blog


Je zult zien dat de div's hierboven zowel aangepaste klassen als Blueprint-klassen gebruiken (span-18, colborder, span-5, last, span-24). De "last" -klasse is erg belangrijk, anders wordt de standaard rechtermarge van de fs-sidebar-sectie niet uitgeschakeld en de sectie wordt weergegeven onder het gedeelte fs-mainblock in plaats van ernaast. De colborder tekent een verticale lijn tussen fs-mainblock en fs-sidebar en neemt zelf een kolom op. Dit wordt niet weerspiegeld in de waarde "span-18". In theorie neemt het mainblock eigenlijk 19 kolommen in beslag (19 + 5 = 24 kolommen, de Blueprint standaard).

Nu voegen we klassen toe aan de aangepaste stylesheet voor deze drie blokken (zie hieronder). Opmerking: sommige hiervan zijn tijdelijk, om de blokrechthoeken op het scherm te demonstreren en het ontwerp te verfijnen. Raadpleeg het laatste style.css-bestand in plaats van exact de regels te gebruiken die worden weergegeven in de onderstaande CSS-codefragmenten.

 div.fs-content margin-bottom: 20px;  div.fs-mainblock height: 700px; achtergrond: #ccc;  div.fs-sidebar height: 700px; achtergrond: #ccc;  div.fs-footer margin-top: 20px; padding-top: 5px; hoogte: 30 px; achtergrond: #ccc; border-top: 1px solid # 000; 

De bovenstaande CSS resulteert in de ruwe mockup hieronder:

Stap 3: Ruw blokkeringsstadium 2

Laten we het ontwerp verder verfijnen door de secties op te splitsen. De klasse fs-mainblock div is verdeeld in fs-header en fs-featured secties. De fs-sidebar is onderverdeeld in fs-recentposts en fs-newsbox. Hier is de geraffineerde div.container:

 
Logo + menu
Aanbevolen secties
Recente berichten

Nieuws

(c) Copyright 2008-heden, Dit blog


Net als voorheen worden de klassen voor de nieuwe secties toegevoegd aan de aangepaste stylesheet, style.css. De hoogte van elke sectie wordt waar nodig benaderd en we voegen opnieuw een tijdelijke achtergrond toe aan sommige elementen, die in het uiteindelijke style.css-bestand worden verwijderd. Hier zijn enkele aanvullende CSS-regels:

 div.fs-header // Logo + menu width: 710px; hoogte: 110 px; achtergrond: #ccc; margin-bottom: 10px;  div.fs-featured // Aanbevolen secties width: 710px; hoogte: 580 px; achtergrond: #ccc; margin-bottom: 10px;  div.fs-sidebar div.fs-recentposts height: 370px; achtergrond: #ccc; margin-bottom: 10px;  div.fs-sidebar div.fs-newsbox height: 270px; achtergrond: #ccc; 

Dit resulteert in de volgende mockup:

Stap 4: Ruw blokkeringsfase 3

Dit is de laatste stap in het mockup-proces. We voegen secties toe voor alle resterende ontwerpelementen:

  1. Verdeel de fs-header div-klasse in fs-logo en fs-horiznav.
  2. Verdeel fs-featured in fs-txt-featured en fs-features.
  3. Verdeel fs-features verder in fs-bigfeature en fs-smfeatures.
  4. Verdeel fs-smfeatures verder in drie blokken, elk bestaand uit 5 Blueprint-colums. Er zijn geen aangepaste CSS-klassen nodig voor de laatste.
  5. Verdeel fs-recentposten in vijf fs-recentpost-secties. (In een later zelfstudie worden deze secties geïntegreerd in WordPress, dus slechts één sectie wordt gebruikt in een codelus.)

Dit is hoe onze div.container er nu uitziet:

 
Logo
Menu
Uitgelicht
grote functie
sm functie
sm functie
sm functie
Recente berichten
recente post
recente post
recente post
recente post
recente post

Nieuws

(c) Copyright 2008-heden, Dit blog


Zoals je kunt zien, zijn er veel geneste divs gebruikt. Sommige zijn alleen voor de duidelijkheid in deze zelfstudie. Voor de rest kun je op een productiesite een deel ervan verdichten of de Blueprint-klassen vervangen door de jouwe. Sommige mensen geven er de voorkeur aan om caching op hun sites te gebruiken, wanneer ze 'magazine'-thema's gebruiken met grid-frameworks - hoewel dat buiten de scope van deze tutorial valt.

Elk van de nieuwe klassen wordt toegevoegd aan de aangepaste stylesheet, met tijdelijke hoogten en achtergronden:

 div.fs-logo / * Site-logo * / hoogte: 90px; breedte: 400 px; achtergrond: # 999; margin-bottom: 10px;  div.fs-horiznav / * Horizontaal menu * / hoogte: 25px; breedte: 710 px; achtergrond: # 999; margin-bottom: 10px;  div.fs-featured / * Aanbevolen secties * / width: 710px; hoogte: 580 px; achtergrond: #ccc; margin-top: 10px; margin-bottom: 10px;  div.fs-txt-featured / * Uitgelicht * / hoogte: 30px; breedte: 110 px; achtergrond: # 999;  div.fs-features / * Features * / height: 570px; breedte: 590 px; achtergrond: # 999;  div.fs-bigfeature / * Big feature * / height: 260px; breedte: 590 px; achtergrond: # 666; margin-bottom: 20px;  div.fs-smfeatures div / * Klein kenmerk * ​​/ hoogte: 280 px; achtergrond: # 666; margin-bottom: 10px;  div.fs-recentpost / * Individueel recent bericht. Hoogte is eigenlijk variabel, maar is minimaal 49 px * / hoogte: 50px; // Ruwweg breed: 190 px; achtergrond: # 999; margin-bottom: 10px; 

Dit resulteert in onze laatste mockup-fase, die vrij nauw lijkt in de geometrie van onze mockup met "gesneden" grafische ontwerpen:

We zijn nu klaar om de definitieve code te produceren.

Stap 5: definitieve sjablooncode

Dit is de laatste stap in het coderingsproces, waarbij we de feitelijke ontwerpelementen laten vallen, de overtollige divs en klassen opruimen en alle "blokkerende" elementen verwijderen:

  1. Neem alle aangepaste CSS-klassen en plaats de instellingen voor achtergrond en hoogte - met uitzondering van fs-horiznav. (Bepaalde instellingen voor de breedte zijn nodig. Laat ze vallen die dat niet zijn.)
  2. Verlaag nu ontwerpelementen (afbeeldingen, tekstblokken) op de juiste plaatsen. Gebruik de nodige Blueprint-klassen. (Bijvoorbeeld, ik gebruik "div" om een ​​verticale reset te forceren na een groep horizontale blokken. Zoek dit in de sample en probeer ze te verwijderen om te zien wat er anders gebeurt.)
  3. Voeg eventueel noodzakelijke div-secties en CSS-klassen toe. Bijvoorbeeld, fs-smfeature, fs-posttitle, fs-postdate, fs-postauth, fs-descr, fs-recposts-head, fs-newsbox-head, fs-newsbox-ul.
  4. Verwijder eventuele aangepaste CSS-klassen die niet langer nodig zijn. Bijvoorbeeld, fs-features, fs-txt-featured.
  5. Verwijder alle aangepaste "constructor" divs die vreemd zijn, of voeg ze samen met bestaande Blueprint divs in je HTML. Ik heb ze achtergelaten voor duidelijkheid.
  6. Merk op dat het onderstaande CSS-bestand "outline" gebruikt in plaats van "border" op alle afbeeldingen. Contouren worden weergegeven boven een afbeelding en nemen dus geen extra schermruimte in beslag.
  7. De standaardlijnhoogte van de pagina is ingesteld op 115%.

Nu hebben we ons uiteindelijke ontwerp, hieronder, wat hetzelfde is als aan het begin van deze tutorial:

Demo en downloaden

De uiteindelijke bestanden bevatten geen van de grijsblokkeringselementen en er zijn aanvullende uitgebreide opmerkingen in het bestand style.css die u moeten helpen het doel van elke aangepaste klasse te ontcijferen. Het ZIP-bestand bevat afbeeldingen die zijn bijgesneden uit verschillende filmposters, die het copyright van hun respectievelijke eigenaren hebben. De Blueprint CSS grid-bestanden zijn niet opgenomen in de ZIP.

Houd er rekening mee dat er enkele kleine discrepanties kunnen bestaan ​​tussen de bronbestanden en de bovenstaande code.




Laatste gedachten

Enkele laatste opmerkingen over het voorbeeld in deze tutorial:

  1. De hier gepresenteerde code is een beetje onhandig met zijn extra div tags, maar ze zijn gewend om een ​​op rasters gebaseerd ontwerpproces duidelijk te illustreren. Concreet heb ik het mockup- en codeerproces uitgerekt om de mogelijke stadia te benadrukken. Veel van de ontwerpelementen kunnen worden aangescherpt en de overeenkomstige div-klassen worden verwijderd in het CSS-bestand.
  2. Zoals je gewend raakt aan het gebruik van CSS-rasterframeworks, comprimeer je waarschijnlijk de drie CSS grid mockup-stadia die hierboven zijn besproken in slechts één fase, vooral als je een stukje grafische vormgeving hebt om te beginnen met.
  3. Dit is niet het enige proces voor op een grid gebaseerd paginaontwerp. Zie de reeks van Mark Boulton, Five Simple Steps to designing grid systems voor een veel diepgaandere behandeling van het ontwerp van het raster..

Dit is geen ingewikkeld voorbeeld en ook geen volledig thema voor een blogplatform, maar ik hoop dat het u helpt te begrijpen hoe CSS-rasters moeten worden gebruikt voor het ontwerpen van webpagina's. Hoewel de code hier voor een statische pagina is, is de volgende stap het te integreren met een blogplatform om een ​​startsjabloon te maken.