Het blijkt dat CSS Grid behoorlijk goed is in het opstellen van online-strips, vooral als je wilt dat je strips flexibel zijn. In deze tutorial gebruiken we Barry the cat om te demonstreren hoe je een responsieve strip kunt bouwen.
Voor deze tutorial heb ik wat artwork van GraphicRiver geleend; Sleepy Fat Cat is eigenlijk een weergavetypes, maar zit vol met een aantal mooie kattenvectoren - perfect voor deze komische demo!
Sleepy Fat Cat-letterbeeld op GraphicRiverVergeet niet dat u geavanceerde browserfuncties nodig hebt om CSS Grid in actie te zien, lees CSS CSS-rasterlay-out: een snelstartgids als u een niet-ondersteunende browser gebruikt. Dit is waar we naartoe werken:
Bekijk de volledige demo op CodePen om te zien hoe deze reageert op verschillende schermformaten.
Laten we beginnen met het maken van wat HTML:
Barry's kussen
Een verhaal van loomheid en stoffering
"Ik moet waarschijnlijk opstaan-dingen om te doen."
“Naaah.”
Sleepy Fat Cat door messenj4h
© Copyright, nog lang en gelukkig, na Envato Tuts+
Hier hebben we een Een aantal panelen bevat tekst, maar de rest is voor onze komische afbeeldingen. We hebben hier twee opties: we kunnen onze afbeeldingen inline in de panelen plaatsen of afbeeldingen toevoegen via CSS. Ik doe dit laatste omdat het eenvoudiger controle over de plaatsing en de grootte van de afbeeldingen biedt, maar je zou kunnen stellen dat inline-afbeeldingen beter toegankelijk zouden zijn. Uw keuze. Om de (pels) bal aan het rollen te krijgen, voegen we enkele stijlen toe om onze typografie en kleuren te dekken: Ik heb Kalam gekozen als het weblettertype van Google voor onze tekst: de handgeschreven stijl is perfect voor strips. Je moet het aansluiten in je CSS of via een link in je documentkop: Eerst mobiel starten, we leggen dingen uit in één kolom met één paneel in elke rij: Als je terugkijkt op onze eerdere Grid-tutorials, zul je je dat herinneren Laten we nu enkele algemene stijlen aan onze panelen toevoegen: De Laten we eens kijken wat we tot nu toe hebben! Waar is het internet voor gemaakt, toch? Ik heb een paar SVG-afbeeldingen voorbereid om aan de panelen toe te voegen, die ik een voor een doe: Ziet er goed uit! Maar ik wil geen grenzen rondom allemaal de panelen. Ik zal ze verwijderen (met Deze afbeeldingen werken nog niet perfect; arme oude Barry krijgt een serieuze bijsnijding. Het is tijd om verder te kijken dan mobiel en ons raster te wijzigen voor grotere viewports. Laten we wat mediaquery's toevoegen; een op 400px en een op 600px (willekeurige cijfers, gebruik wat je maar wilt): We zullen ze gebruiken om de rasterlay-out in elk geval te wijzigen. We gaan voor twee kolommen en acht rijen voor iets grotere schermen, dan drie kolommen en vijf rijen voor nog grotere. Nu we uit onze enkele kolombeperkingen zijn gebarsten, kunnen we een beetje creatiever zijn. We hebben bijvoorbeeld onze titel nodig om over de breedte van de hele strip te lopen. Hetzelfde geldt voor de panelen met tekst en de copyrightverklaring. Zelfs sommige afbeeldingen kunnen beter worden weergegeven in panelen op de volledige breedte. Dus we voegen deze gegevens toe aan de eerste van onze mediaquery's: Ik heb de typografie in een paar gevallen ook veranderd, en gaf ons uiteindelijk: Onze lay-out met twee kolommen ziet er geweldig uit! Onze strip met drie kolommen moet echter worden gecorrigeerd. Omdat we eerst mobiel werken, zijn de regels die we hebben toegepast op onze eerste mediaquery nog steeds van kracht op de grootste schermen. We moeten ons een weg banen door de panelen en een aantal stijlen resetten. Begin met het maken van de Hetzelfde geldt voor Ik zou graag zien dat het eerste deel van de dialoog verticaal gecentreerd is, dus laten we daarvoor flexbox gebruiken. Voeg het volgende toe aan de tweede media-query: Raster beperkt ons niet tot blokken op gelijke afstand langs een pagina, maar we kunnen onze panelen ook gelaagd aan elkaar plakken. We gaan ons laatste stukje tekst een beetje interessanter maken door het toe te wijzen aan dezelfde rasterlocatie als het volgende paneel: Hier hebben we beide gepositioneerd We kunnen de z-index gebruiken om de stapelvolgorde te veranderen, dus geven Notitie: Nu we een rij effectief hebben verwijderd, moet u uw Laten we een beetje meer stijl toevoegen aan onze "Naaah". Nogmaals, roosteritems worden niet zo veel beperkt als je zou denken - we kunnen ze verschuiven met negatieve marges en ze zelfs zonder problemen transformeren. Ik heb een aantal stijlen aan het paneel en de alinea erin toegevoegd om dit te geven: Goed gedaan, dit is wat we hebben gebouwd! Dit was een leuke oefening in het gebruik van CSS Grid, terwijl je onderweg kennismaakte met een aantal nieuwe Grid-concepten. Ik hoop dat je het leuk vond - nu als je het niet erg vind, ga ik een dutje doen. om op te treden als ons raster, met een lading van
2. Basisstijlen
/ * basics * / body background: # f8f7f2; opvulling: 0 10%; lettertype: 100% / 1,5 'Kalam', cursief; h1 marge: 0; regelhoogte: 1; opvulling: 10px; kleur: # 251b19; p marge: 0; opvulling: 10px; kleur: # 251b19; lettergrootte: 1.2em; a color: # e56633; a: hover text-decoration: none;
3. Ons raster
.grid-1 display: grid; breedte: 100%; maximale breedte: 770 px; marge: 10% automatisch; rooster-sjabloon-kolommen: 1fr; grid-template-rijen: auto 200px 200px auto 200px 200px 200px auto 200px 200px auto; grid-gap: 25px;
roostervormige template-columns
geeft aan hoeveel kolommen we hebben en hoe breed ze zullen zijn. roostervormige template-rijen
doet hetzelfde voor rijen; hier definiëren we elf van hen. De afbeeldingen met afbeeldingen zijn 200 px hoog, degenen met tekst worden automatisch aangepast aan de inhoud. Tenslotte, roostervormige gap
bepaalt onze rugmarge..paneel kleur: wit; achtergrondherhaling: geen herhaling; achtergrond-positie: middelpunt; achtergrondformaat: omslag; vakschaduw: 0px 0px 0px 5px # 251b19;
achtergrond
eigenschappen hebben nog geen visuele impact, maar ze zullen net zo snel zijn als we wat achtergrondafbeeldingen toevoegen. En de box-shadow
fungeert als een rand. Je kunt ook traditioneel gebruiken grens
eigenschappen hier als je dat wilt, maar vak-schaduw geeft soms meer flexibiliteit. 4. Cat Pictures
.panel-1 background-image: url (cat-1.svg);
vakschaduw: geen;
) van degene die tekst bevatten, samen met de eerste afbeelding en de uiteindelijke afbeelding. 5. Media Queries
/ * media-query 1 * / @media alleen scherm en (min-breedte: 400px) / * media-query 2 * / @media alleen scherm en (min-breedte: 600px)
/ * media query 1 * / @media only scherm en (min-width: 400px) .grid-1 grid-template-columns: repeat (2, 1fr); grid-template-rijen: auto 200px auto 200px 200px auto 200px auto; / * media query 2 * / @media only scherm en (min-width: 600px) .grid-1 grid-template-columns: repeat (3, 1fr); grid-template-rijen: auto 200px 200px 200px auto;
Spanning
.panel-title, .panel-3, .panel-6, .panel-7, .panel-copyright grid-column: span 2;
6. Bevestiging van onze lay-out met drie kolommen
.paneelvormig title
span drie kolommen in plaats van slechts twee. Dan .panel-3
(met de tekst) kan worden teruggezet naar rasterkolom: bereik 1;
of grid-column: auto;
.panel-6
. Met nog een paar wijzigingen zou je zoiets als dit moeten krijgen:Een heel klein beetje van Flexbox
.panel-3 display: flex; align-items: center;
Voor flexbox, na flexbox 7. Panelen overlappen
.panel-7 grid-column: 1; grid-rij: 4; z-index: 1; .paneel-8 rasterkolom: 1 / span 2; grid-rij: 4;
.panel-7
en .paneelvormig 8
naar rasterkolom: 1;
en grid-rij: 4;
. Dat betekent dat ze zich allebei op exact dezelfde plaats bevinden, met de seconde die als tweede wordt weergegeven in de DOM die bovenop de eerste wordt gestapeld..panel-7
een z-index: 1;
brengt het naar de top:roostervormige template-rijen
zijn oke. Conclusie
Verder lezen