InDesign-rutorna är lika enkla som klick-och-dra. Photoshops lager låter målare färgpixlar var som helst de vill ha. Men layout med HTML och CSS är ett spel av nudging och cascading.
Det händer varje dag: Photoshop-kunniga konstledare mockar upp mönster, hinkar deras avstånd, väljer noggrant lämpliga teckensnitt och färger. De avger sitt arbete till en ivrig HTML-utvecklare, som tillkännager att designen sannolikt kommer att ta dagar för att bli en fungerande HTML / CSS. Värre, de kommer att göra ändringar för att ta hänsyn till olika skärmstorlekar. Timing är ett mysterium för båda parter. Kommer det att ta utvecklaren en timme eller en vecka för att göra sin PSD till en fungerande HTML / CSS?
Grunderna för webblayout - det möjliga, praktiska, möjligheterna - är lätta att förstå. Som att utforma sig själv, kan förstå principerna hjälpa någon formgivare att producera bättre mönster och påskynda processen att bygga en webbplats.
Allt på en webbsida, från stycken till bilder till länkar till fet text, finns i osynliga lådor. Dessa lådor finns i två sorter: block och inline. Skillnaden mellan inline och block ligger i deras beteende.
Blockelementen staplar ovanpå varandra. Om inte annat sägs upptar de så mycket horisontellt utrymme som möjligt och trycker allt runt dem upp eller ner. För design är blockelement det primära layoutverktyget.
Inline-element är baserade på textformatering. De bryter inte flödet av text, och deras dimensioner utökas för att passa deras innehåll. Att ange ett inlineelement för att hålla en bredd på 200 pixlar fungerar inte. Fyller det med textvilja.
Som standard är varje element i är antingen ett inline- eller blockelement. Designers kan ändra sin karaktär med en liten CSS - säg att man vänder en stapel listobjekt (inhemska block) i en rad, eller en serie horisontella länkar (native inline) i en vertikal stapel. Det betyder att ett synligt element kan användas för layout. Oavsett om de borde beror på den aktuella layouten.
Inbyggda blockelement innefattar:
- punkterna
- listor
- Artiklar i en lista
- rubriker
-
- tabeller
- Block citat
- Arrangörer i HTML5
,
,
,
, och
- Kroppen själv
Inline-element inkluderar:
Vanliga taggar som varken är block eller inline:
- Dokumenttiteln
- Metataggar
- Skriptetiketter
- Länk taggar
Vid första anblicken verkar anpassning till den lego-liknande mentaliteten kontraintuitiv i ett medium som tillåter gradienter, kurvor och elastiska layouter. Men tanken på allt som en tegel är avgörande för att förstå var innehåll och presentation möts.
Riktlinje: Varje par taggar (eller fristående taggar som
) i kroppen representerar en låda.
Använda block för layout
Ta bort en textram i InDesign och det intilliggande fotot flyttar inte eftersom ingen av placeringen är beroende av den andra. Applicera kurvor i ett Photoshop-lager, och inget annat lager kommer att ändras eftersom kurvor påverkar ett lager åt gången. Men ta bort ett element i HTML, och allt efter det här elementet kommer troligen att förändras. Block i en webbsida stapla till det övre vänstra hörnet av deras behållare, till exempel
eller ett annat block.
All webblayout uppnås med blockelement. Designers använder ofta block element, för att skapa rektangulära områden där allt innehåll passar. Det finns bara fyra regler: - Total bredd: Utrymmet ett element upptar och påverkar.
- Float: Ändra blockens tendens att stapla.
- Tydlig: Re-estblishing stacks.
- Nest: Elements ligger inom varandra eller inte. Det finns ingen halvvägs.
Varje regel har tillägg ... men ingen är skyldiga att montera en sida.
(CSS-experter kommer att inse att dessa regler gäller för element med relativ positionering. Absolut positionering är ett annat - och mindre vanligt - djur.)
1. Total bredd = lådan och bufferten
Total bredd är hur mycket horisontellt utrymme ett block upptar. Detta inkluderar blockets marginal, kant och vaddering. I utskriftstryck är marginal och vadderande typer av takrännor. Men till skillnad från traditionellt negativt utrymme, som skapas genom att trycka in lådor, är vadderingen och marginalen en del av en låda. De är som kramning för layoutelement.
Beräkning av bredd, vaddering och marginal är ofta den största huvudvärk för designers, men de återstående reglerna är lite enklare.
2. Flytande banor blockerar från stacken
Flyttande trycker ett blockelement åt vänster eller höger och tar bort det från den naturliga stapeln. När ett block flyter gör det utrymme för allt under det att stiga runt sin andra sida.
Kolumner uppstår när en serie kvarter flyter intill varandra.
3. Clearing: Gör det möjligt för designers att organisera en sida både horisontellt och vertikalt
En olycklig bieffekt av flytande påverkan på behållaren. En behållare kommer att växa vertikalt för att passa dess innehåll - förutom de som flyter. Om allt flyter, så har lådan ingen höjd. Något under stiger under de flytande föremålen. Chaos följer.
Clearing återupptar blockens naturliga tendens att stapla. I själva verket påminner det om en behållare som den har något att innehålla. Utan clearing kan designers inte organisera en sida både horisontellt och vertikalt.
4. Nesting
Nesting är enkelt: Varje block måste helt ligga i ett annat block. Inget block kan någonsin sträcka sig utanför sina gränser utan allvarliga konsekvenser, och inga två kvarter kan delvis överlappa varandra.
Kolumner måste passa, annars
Det är här designers måste utföra lite matte. För att passa kolumnerna korrekt måste summan av deras totala bredd vara mindre än behållarens bredd.
Kolumner är en serie blockelement som skjuter till vänster eller, i sämre tillfälle, till höger. Om dessa kolumner är för breda för sin behållare, kommer den sista kolumnen att falla under de andra, utan speciella tekniker.
En enkel layout kan använda tre element för att skapa en layout med två kolumner:
…
Ovan använder den vänstra exemplet den här CSS:
#container { width: 1000px; }
#main-content { width: 600px; padding: 20px; }
#sidebar { width: 340px; padding: 10px; }
Behållaren mäter 1000 pixlar bred. Huvudinnehållsblocket är 640 pixlar bredt - 600 bredd + 20 pixlar polstring på varje sida. Sidospärren är 360 pixlar bred - 340 bredd + 10 pixlar polstring på varje sida. (600 + 20 + 20) + (340 + 10 + 10) = 1000. En perfekt passform.
I det högra exemplet är dock något för stort. Det kan vara antingen kolonnens vaddering eller kolonnbredden själva. Kanske är behållaren för smal. Att ändra någon av dessa faktorer för att göra behållaren bredare än kolumnerna skulle lösa problemet.
Undantag kräver mer kod; enhetlighet kräver mindre
Till skillnad från mer traditionella visuella medier, säger skulptur eller grafisk design - skriv kod kräver en stark mental bild av vad koden ska göra.
Vissa aspekter av att utforma med kod är uppenbara. Enkla mönster använder ofta mindre kod än komplexa mönster. Om lösningen på ett designproblem kräver att varje widget, kolumn och textstycke har sin egen bakgrundsfärg, så var det. Det kräver bara mer kod.
- Om en textdel är större än andra behöver den en egen post i CSS-filen.
- Om två kolumner har olika bredder, ska CSS-filen ange bredd för varje.
- Om en design kräver tre typer av punktpunkter, kräver CSS tre definitioner.
Ett mindre uppenbart faktum av design-by-code är att det är ... mindre uppenbart. Föreställning och erfarenhet är särskilt nödvändiga för programmering av sidlayout, där byte av en kolonnmarginal kommer att påverka sina grannar. I övergången från tryck till webbdesign, utan att föreställa sig resultatet blir nya utvecklare.
Inte det color:blue
är svår att förstå. Men det är en sak att skriva div { background: url(photo.jpg) top left no-repeat; }
och en annan för att se ett foto i sammanhanget av sidan.
Lyckligtvis lindrar vissa analogier inlärningskurvan.
- Tänk på CSS som helt och hållet arbetar med styckeformat. Att ändra ett objekt i flygningen är besvärligt. CSS fungerar bäst när det tillämpas på en hel klassificering av bilder eller ord (därav attributet "klass" i HTML).
- Tänk dig att titta på en fjärdedel av en sida i taget. Vid en viss tidpunkt ser användare bara en del av en webbsida eftersom de flesta webbsidor är större än det genomsnittliga webbläsarfönstret. Slutanvändare ser bara en bit åt gången. Den "vikta" uppträder på alla fyra sidorna av webbläsaren.
- Fråga dig själv "Vad händer om varje element fördubblats i kvantitet?" Bra design presenterar innehållet väl vid lanseringen. Stora webbdesign fortsätter att göra det. Artikelmallar måste passa artiklar av varierande längd. Innehållshanterare tar bort gammal text eller lägger till nya foton som inte överensstämmer med planerade proportioner. Kunder bestämmer att de vill ha sina fem senaste tweets på hemsidan. Ingen vet hur en webbplats kan förändras, men planerar för olika mängder av allt är en bra försiktighet.
Går vidare
Fördelarna med att förstå webblayout är att veta vad som är möjligt, förhindra vanliga fallgropar och snabbare utvecklingstider. Men att lära sig att designa med HTML / CSS i åtanke kräver en förändring i tänkandet. CSS-system som 960-nätverket minimera det tekniska arbetet som krävs, och underlätta övergången från rent pixelarbete till kod. Men som att lära sig något språk kan det bästa verktyget vara uthållighet.
Vad ger dig mest problem med att göra mockups till att fungera HTML och CSS? Dela dina erfarenheter och lösningar i kommentarerna nedan.