InDesign-vakken zijn zo eenvoudig als klikken en slepen. Met de lagen van Photoshop kunnen schilders pixels op elke gewenste plek kleuren. Maar lay-out met HTML en CSS is een spel van nudging en cascading.
Het gebeurt elke dag: met Photoshop bedreven art directors bespotten ontwerpen, scherpen hun onderlinge afstand, kiezen zorgvuldig passende lettertypen en kleuren. Ze geven hun werk af aan een enthousiaste HTML-ontwikkelaar, die aankondigt dat het ontwerp waarschijnlijk dagen in beslag neemt om HTML / CSS te worden. Erger nog, ze zullen wijzigingen aanbrengen om rekening te houden met verschillende schermformaten. Timing is een mysterie voor beide partijen. Zal het de ontwikkelaar een uur of een week kosten om van zijn PSD HTML / CSS te maken?
De fundamenten van weblay-out - het mogelijke, het praktische, de mogelijkheden - zijn gemakkelijk te begrijpen. Net als het ontwerp zelf, helpt het begrijpen van de principes elke ontwerper om betere ontwerpen te maken en het proces van het bouwen van een site te versnellen.
Alles op een webpagina, van alinea's tot afbeeldingen tot koppelingen naar vetgedrukte tekst, bevindt zich in onzichtbare vakjes. Deze dozen zijn er in twee varianten: blok en inline. Het verschil tussen inline en blok ligt in hun gedrag.
Blokelementen op elkaar stapelen. Tenzij anders wordt verteld, bezetten ze zoveel mogelijk horizontale ruimte en duwen ze alles om hen heen op of neer. Voor ontwerp zijn blokelementen de primaire lay-outtool.
Inline-elementen zijn gebaseerd op tekstopmaak. Ze breken de tekststroom niet, en hun afmetingen breiden uit om in hun inhoud te passen. Een inline-element weergeven om een breedte van 200 pixels te behouden, werkt niet. Het vullen met tekst zal.
Standaard is elk element in de is een inline- of blokelement. Ontwerpers kunnen hun aard wijzigen met een beetje CSS. Stel bijvoorbeeld een stapel lijstitems (native blokken) in een rij, of een reeks horizontale links (native inline) in een verticale stapel. Dat betekent dat elk zichtbaar element kan worden gebruikt voor lay-out. Of ze moeten, hangt af van de lay-out in kwestie.
Native blokelementen omvatten:
- De leden
- lijsten
- Items in een lijst
- rubrieken
-
- tabellen
- Blok citaten
- Organisatoren in HTML5
,
,
,
, en
- Het lichaam zelf
Inline-elementen omvatten:
- Ankers (hyperlinks)
- Stoutmoedig
en
- Cursief
en
- Afbeeldingen
- Citations
- Type styling
- Formulierlabels
- Dat is jouw keuze
Veelgebruikte tags die niet blokvormig of inline zijn:
- De documenttitel
- Meta-tags
- Script-tags
- Koppel tags
Op het eerste gezicht lijkt aanpassing aan de lego-achtige mentaliteit contra-intuïtief in een medium dat gradiënten, krommen en elastische lay-outs mogelijk maakt. Maar het idee van alles als een steen is cruciaal om te begrijpen waar inhoud en presentatie elkaar ontmoeten.
Richtlijn: elk paar tags (of zelfstandige tags zoals
) in het lichaam staat voor een doos.
Blokken gebruiken voor lay-out
Verwijder een tekstkader in InDesign en de aangrenzende foto wordt niet verplaatst omdat de plaatsing van beide niet op de andere is gebaseerd. Pas curven toe op een Photoshop-laag en geen andere laag zal veranderen omdat curven laag voor laag beïnvloeden. Maar verwijder een element in HTML en alles na dat element zal waarschijnlijk veranderen. Blokkeert een stapel webpagina's in de linkerbovenhoek van hun container, zoals de
of een ander blok.
Alle weblay-outs worden bereikt met blokelementen. Ontwerpers gebruiken blokken meestal elementen, om rechthoekige gebieden te creëren waarin alle inhoud past. Er zijn slechts vier regels: - Totale breedte: de ruimte die een element inneemt en beïnvloedt.
- Float: de neiging van blokken om te stapelen te veranderen.
- Duidelijk: herbestemmen van stapels.
- Nest: elementen liggen in elkaar of niet. Er is geen halverwege.
Elke regel bevat restricties ... maar er is geen enkele nodig om een pagina samen te stellen.
(CSS-experts zullen erkennen dat deze regels van toepassing zijn op elementen met relatieve positionering Absolute positionering is een ander - en minder gebruikelijk - dier.)
1. Totale breedte = vak & buffer
Totale breedte is de hoeveelheid horizontale ruimte die een blok inneemt. Dit omvat de marge, rand en opvulling van het blok. In de druktaal zijn marge en opvulling typen dakgoten. Maar in tegenstelling tot de traditionele negatieve ruimte, gecreëerd door dozen uit elkaar te duwen, maken opvulling en marge deel uit van een doos. Ze lijken op tekenspatiëring voor lay-outelementen.
Het berekenen van de breedte, opvulling en marge is vaak de grootste hoofdpijn voor ontwerpers, maar de resterende regels zijn een beetje meer rechtlijnig.
2. Zwevend klopt blokken van de stapel
Drijvend duwt een blokelement naar links of rechts, het verwijderen van de natuurlijke stapel. Wanneer een blok zweeft, maakt het ruimte voor alles daaronder om aan zijn andere kant te stijgen.
Kolommen ontstaan wanneer een reeks blokken naast elkaar zweeft.
3. Wissen: ontwerpers in staat stellen een pagina zowel horizontaal als verticaal te ordenen
Een ongelukkig neveneffect van zweven is de impact op de container. Een container zal verticaal groeien om in de inhoud te passen - behalve degene die zweven. Als alles drijft, heeft de doos geen hoogte. Alles daaronder stijgt onder de zwevende items. Chaos volgt.
Wissen hervat de natuurlijke neiging van blokken om te stapelen. In feite herinnert het een container eraan dat het iets bevat. Zonder opruiming kunnen ontwerpers een pagina zowel horizontaal als verticaal niet organiseren.
4. Nestelen
Nesten is eenvoudig: elk blok moet volledig in een ander blok zitten. Geen enkel blok mag zich buiten zijn grenzen uitstrekken zonder ernstige gevolgen, en er mogen geen twee blokken gedeeltelijk overlappen.
Kolommen moeten passen, of anders
Dit is waar ontwerpers een beetje wiskunde moeten uitvoeren. Om de kolommen correct te plaatsen, moet de som van hun totale breedte kleiner zijn dan de breedte van hun container.
Kolommen zijn een reeks blokelementen die naar links of, bij zeldzamere gelegenheid, naar rechts duwen. Als deze kolommen te breed zijn voor hun container, zonder speciale technieken, valt de laatste kolom onder de andere kolommen.
Een eenvoudige lay-out kan drie gebruiken elementen om een lay-out met twee kolommen te maken:
…
Hierboven gebruikt het linkse voorbeeld deze CSS:
#container { width: 1000px; }
#main-content { width: 600px; padding: 20px; }
#sidebar { width: 340px; padding: 10px; }
De container meet 1000 pixels breed. Het hoofdinhoudblok is 640 pixels breed - 600 breedte + 20 pixels aan beide zijden. Het zijbalkblok is 360 pixels breed - 340 breedte + 10 pixels aan beide zijden. (600 + 20 + 20) + (340 + 10 + 10) = 1000. Een perfecte pasvorm.
In het rechtse voorbeeld is echter iets te breed. Dit kan de kolomvulling zijn of de kolombreedtes zelf. Misschien is de container te smal. Het wijzigen van een van die factoren om de container breder te maken dan de kolommen, zou het probleem oplossen.
Uitzonderingen vereisen meer code; uniformiteit vereist minder
In tegenstelling tot meer traditionele visuele media - bijvoorbeeld beeldhouwen of grafisch ontwerp - vereist het schrijven van code een sterk mentaal beeld van wat de code zal doen.
Sommige aspecten van ontwerpen op basis van code zijn duidelijk. Eenvoudige ontwerpen gebruiken vaak minder code dan complexe ontwerpen. Als de oplossing voor een ontwerpprobleem vereist dat elke widget, kolom en stuk tekst een eigen achtergrondkleur hebben, zo zij het. Het vereist gewoon meer code.
- Als een stuk tekst groter is dan andere, heeft het een eigen vermelding in het CSS-bestand nodig.
- Als twee kolommen verschillende breedten hebben, moet het CSS-bestand de breedten voor elk specificeren.
- Als voor een ontwerp drie typen opsommingstekens nodig zijn, heeft de CSS drie definities nodig.
Een minder voor de hand liggend ontwerp van code is dat het ... minder voor de hand ligt. Verbeeldingskracht en ervaring zijn met name nodig bij het programmeren van de pagina-indeling, waarbij het wijzigen van de marge van een kolom zijn buren zal beïnvloeden. Bij de overgang van gedrukte naar webdesign, worden de nieuwe ontwikkelaars niet voorgelicht over het resultaat.
Niet dat color:blue
is moeilijk te vatten. Maar het is één ding om te schrijven div { background: url(photo.jpg) top left no-repeat; }
en een andere om een foto in de context van de pagina te zien.
Gelukkig vergemakkelijken sommige analogieën de leercurve.
- Zie CSS als volledig werkend met alineastijlen. Het is omslachtig om een item on the fly te wijzigen. CSS werkt het best wanneer het wordt toegepast op een volledige classificatie van afbeeldingen of woorden (vandaar het kenmerk "klasse" in HTML).
- Stel je voor dat je een kwart van een pagina tegelijk bekijkt. Gebruikers zien op enig moment maar een deel van een webpagina, omdat de meeste webpagina's groter zijn dan het gemiddelde browservenster. Eindgebruikers zien slechts een stuk tegelijk. De "vouw" vindt plaats aan alle vier zijden van de browser.
- Stel jezelf de vraag "wat als elk element in hoeveelheid verdubbelt?". Goede ontwerpen presenteren de inhoud goed bij de lancering. Geweldige webontwerpen blijven dit doen. Artikelsjablonen moeten artikelen van verschillende lengte bevatten. Inhoudsbeheerders verwijderen oude tekst of voegen nieuwe foto's toe die niet voldoen aan de geplande verhoudingen. Klanten besluiten dat ze hun vijf meest recente tweets op de startpagina willen hebben. Niemand weet hoe een site kan veranderen, maar het plannen van verschillende hoeveelheden van alles is een goede voorzorgsmaatregel.
Vooruit gaan
De voordelen van het begrijpen van weblay-outs zijn weten wat mogelijk is, voorkomende valkuilen voorkomen en snellere ontwikkelingstijden. Maar leren ontwerpen met HTML / CSS vereist een verandering in denken. CSS-systemen zoals het 960-rastersysteem minimaliseren van het vereiste technische werk, waardoor de overgang van zuiver pixelwerk naar code wordt vereenvoudigd. Maar zoals het leren van welke taal dan ook, is de beste tool wellicht persistentie.
Wat geeft je de meeste moeite om mockups om te zetten in werkende HTML en CSS? Deel uw ervaringen en oplossingen in de onderstaande opmerkingen.