Under lång tid försökte jag nå en perfekt visuell komposition på webbsidor. Jag har haft massor av smärta med CSS-brytpunkter i mitt dagliga arbete och var aldrig helt nöjd med vanliga sätt att hantera den lyhörda layouten. Nyligen upptäckte jag en mycket cool Responsiv webbdesign Trick som gör allt enkelt, konsekvent och logiskt, och jag är ivriga att dela den med dig.
Den här artikeln handlar huvudsakligen om kreativ utveckling, så det är för både: Front End-utvecklare som kan hitta den här tekniken användbara, och webbdesigners som borde ha en allmän förståelse för webbproduktion och hur man förbättrar den slutliga produktionen. Jag antar att du redan vet om CSS, Breakpoints och Media Queries.
Bärbara enheter tar över världen. En mängd olika typer av enheter ändrar hur vi skapar webbplatser. Med "en responsiv webbplats" de flesta antar bara skrivbords- och mobilversioner (ibland skrivbord, tablett, mobil). Så här fungerar det traditionellt:
H1 {
FONT-STORLEK: 80px;
}
.behållare {
Bredd: 980px;
Marginal: 0 Auto;
}
@Media (MAX-Bredd: 1023PX) {
h1 {
FONT-STORLEK: 48px;
}
.behållare {
Bredd: Auto;
Padding: 0 30px;
}
}
I själva verket, vanligtvis Webbplatslayout Vi ser är inte gjorda för vår enhet. Till exempel, låt oss se hur vi justerar teckensnittet av & lt; h1 & gt; titel:
Du ser, vår & lt; h1 & gt; Titeln har "Font-size: 48px" på 320px och 800px Bredd enhet, och "Font-size: 80px" på 1024px och 2560px.
Naturligtvis kan vi lägga till fler brytpunkter, men antalet olika enheter är otaliga! Detta kommer att göra designspecifikationer mycket komplicerade och förvirrande, eftersom det är svårt att veta vilket värde som tillämpas på vilken skärm.
Vad vi verkligen behöver är detta:
Lösningen på detta problem involverar visningsenheter VW och VH. Dessa är längdenheter som representerar 1 / 100th av Bredden / höjden på visningsporten (i stor utsträckning av webbläsare från IE9 +).
Vi kan använda dessa för att justera egenskaperna hos en webbsida enligt dess storlek. Situationen blir lite bättre, men smärtan är fortfarande densamma:
H1 {
FONT-STORLEK: Calc ((80/1920) * 100VW;
}
.behållare {
Bredd: 80vw;
Marginal: 0 Auto;
}
@Media (MAX-Bredd: 1023PX) {
h1 {
FONT-STORLEK: CALK ((48/375) * 100VW;
}
.behållare {
Bredd: 90vw;
}
}
Vi vet aldrig om det är för stort eller för litet.
Hur kan vi bygga ett riktigt adaptivt layoutsystem? Hur utformar vi en lyhörd webbplats som fungerar med 320px till 2560px?
Helst bör din mockup förklara logiken bakom layouten och hur det anpassar sig från en mindre upplösning till större:
Vi vill kontinuerligt anpassa egenskaper från en liten skärm till en stor. Inga brytpunkter och inga medifrågor. Det vi vill ha är ett enda värde som fungerar för varje bildskärm.
En matematikfunktion med två variabler är nyckeln. Om vi till exempel vill justera en titelnypstorlek, ska funktionen se ut så här:
1920X + Y = 80
375x + y = 48
1920 - Standard Desktop Bredd i en design Mockup (motsvarar 100VW)
375 - Standard mobilbredd i en designmockup (är lika med 100VW)
80 - Önskad H1 titel typsnitt storlek på skrivbordet
48 - Önskad H1 titel typsnittstorlek på mobilen
Dessa är X- och Y-värdena:
x = (80 - 48) / (1920 - 375)
x = 0,0207
Y = 80 - 1920 * 0,0207
y = 40.256
För att använda dessa värden behöver vi CSSS-funktionen för att utföra beräkningar på webbsidan (i stor utsträckning av webbläsare från IE9 +). Vi bör räkna x * 100 gånger (eftersom 1vw enhet = 1 / 100th av visningsbredd).
Vi tar vår ursprungliga funktion:
1920X + Y = 80
375x + y = 48
Byt ut 1920 med 100VW:
100vw * x + y = önskat värde
Byt ut x och y med värdena:
100VW * 0,0207 + 40,256 = önskat värde
Vi får den slutliga CSS-stilen:
H1 {FONT-STORLEK: CALK (2.07VW + 40.25PX)}
Överraskande nog, som äntligen fungerar hur vi ville ha!
Bara en egendom för alla skärmar. Inget behov av att skriva över värdena igen och igen. Du kan justera och beräkna alla typer av egenskaper: Bredd, typsnitt, Padding, Marginal, etc.
Låt oss försöka bygga en verklig layout med hjälp av den här tekniken:
Men det här tillvägagångssättet har en nackdel: Det är svårt att förstå vilket värde som står bakom den här beräkningsfunktionen. Hur kan vi förenkla det?
Om du kodar HTML dagligen är du förmodligen bekant med SASS / SCSS pre-processor. Här är lite hjälp för dig: Låt oss göra en "mixin" och göra alla dessa beräkningar hända automatiskt och håller fortfarande våra ursprungliga värden.
Det är samma funktion som beskrivits ovan, men gjord som en Sass Mixin:
$ Display-Wide: 1920
$ Display-smal: 375
@mixin vätska ($ egendom, $ minvalue, $ maxvalue)
$ X: ($ MaxValue - $ minvalue) / ($ Display-wide - $ Display-smal)
$ y: $ MaxValue - $ Display-Wide * $ X
# {$ property}: calc (# {100 * $ x} vw + # {$ y} px)
h1
@include vätska ('Font-size', 48,80)
.behållare
@include vätska ('Bredd', 315,1580)
@include vätska ('Padding', 30,60)
Denna teknik Ger en mycket sofistikerad lösning för att äntligen bygga verkligt responsiva webbayouter. Den stöder de flesta webbläsarna, säkrar ditt projekt för att visas korrekt till en besökare, förenklar din stilsstruktur, och viktigast gör din webb layout konsekvent och logisk. Jag hoppas det kan hjälpa dig att starta några förvånande webbprojekt.
Relaterade artiklar:
(Bildkredit: Amazon) Även om vi inte vet det exakta datumet för Amazon Prime Day 2020 Ändå vet vi ..
Innan vi börjar med hur man gör en logotyp i Photoshop, bör vi ta itu med elefanten i rummet - Photoshop cc Byg..
Måla digitalt med en ritningstablett och ritning programvara artrage. Att använda på en grafik tablett eller mo..
Vinkelmaterial är en UI-komponentram som implementerar Googles materialdesignspecifikation för vinkel 2 - det nya, snabbare imp..
1800-talet Rococo målare använde fantasi, drömlika paletter, romantisk atmosfär och livligt borstarbete för att skapa en und..
Houdinis starka punkt har alltid varit sin processuella natur. Med några noder och en liten uppsättning uttryck kan du skapa ko..
Vissa mobila mönster lider av ett problem: de kan se bra ut på ytan, men börja använda dem och du får snart veta att en allt..
Det är lätt att få tag i att försöka utveckla en idé inom ett statiskt mockup eller platt filritningsverktyg, men en ..