Bygg adaptive layouter uten medieforespørsler

Sep 14, 2025
hvordan

I lang tid prøvde jeg å nå en perfekt visuell sammensetning på nettsider. Jeg har hatt mye smerte med CSS-brytepunkter i mitt daglige arbeid og var aldri helt fornøyd med vanlige måter å håndtere den responsive layoutet. Nylig oppdaget jeg en veldig kul Responsivt webdesign Trick som gjør alt enkelt, konsekvent og logisk, og jeg er ivrig etter å dele den med deg.

Denne artikkelen handler hovedsakelig om kreativ utvikling, og det er derfor for både: Front End-utviklere som kan finne denne teknikken nyttige, og webdesignere som skal ha en generell forståelse av webproduksjon og hvordan man forbedrer sluttutgangen. Jeg antar at du allerede vet om CSS, breakpoints og media spørringer.

  • Bygg en blogg med rutenett og flexbox

Den tradisjonelle måten

Adaptive layouts: breakpoints

Breakpoints kan føre til utilfredsstillende resultater for ikke-standardiserte visningsporter

Bærbare enheter tar over hele verden. En rekke alle typer enheter endrer måten vi lager nettsteder på. Med 'et responsivt nettsted' de fleste antar bare skrivebords- og mobilversjoner (noen ganger skrivebord, nettbrett, mobil). Slik fungerer det tradisjonelt:

 h1 {
Font-størrelse: 80px;
}
.Container {
Bredde: 980px;
margin: 0 auto;
}

@media (maks bredde: 1023px) {
h1 {
Font-størrelse: 48px;
}
.Container {
Bredde: Auto;
polstring: 0 30px;
}
}

Faktisk, vanligvis Nettstedslayout Vi ser ikke er laget for enheten vår. For eksempel, la oss se hvordan vi justerer skriftstørrelsen på

Adaptive layouts

Med bare ett brytepunkt kan du ende opp med rare punktstørrelser

Du ser, vår & lt; h1 & gt; Tittel har "font-size: 48px" på 320px og 800px bredde enhet, og "Font-size: 80px" på 1024px og 2560px.

Selvfølgelig kan vi legge til flere breakpoints, men antall forskjellige enheter er utallige! Dette kommer til å lage designspesifikasjoner svært kompliserte og forvirrende, fordi det er vanskelig å vite hvilken verdi som brukes på hvilken skjerm.

Adaptive layouts: font size

Du kan aldri skape nok breakpoints for å få skriftstørrelsen perfekt på hver skjerm

Det vi virkelig trenger er dette:

Viewport-enheter

Adaptive layouts: viewpoint units

Viewport-enheter forbedrer saker, men de trenger fortsatt arbeid

Løsningen på dette problemet innebærer viewport enheter VW og VH. Disse er lengde enheter som representerer 1 / 100th av bredden / høyden på visningsporten (bredt støttet av nettlesere fra IE9 +).

Vi kan bruke disse til å justere egenskapene til en nettside i henhold til størrelsen. Situasjonen vil bli litt bedre, men smerten er fortsatt den samme:

 h1 {
FONT-STØRRELSE: CALC ((80/1920) * 100VW;
}
.Container {
Bredde: 80Vw;
margin: 0 auto;
}

@media (maks bredde: 1023px) {
h1 {
Font-størrelse: Calc ((48/375) * 100VW;
}
.Container {
Bredde: 90VW;
}
} 

Vi vet aldri om det er for stort eller for lite.

Hvordan kan vi bygge et ekte adaptivt layout system? Hvordan designer vi et responsivt nettsted som fungerer nativt fra 320px til 2560px?

Ideelt sett bør din Mockup forklare logikken bak oppsettet, og hvordan det tilpasser seg en mindre oppløsning til større:

Løsningen

Adaptive layouts: solution

Slik gjør du et virkelig adaptivt layoutsystem

Vi vil kontinuerlig justere egenskapene fra en liten skjerm til en stor. Ingen breakpoints og ingen medieforespørsler. Det vi ønsker er en enkelt verdi som fungerer for hver skjerm.

En matematikkfunksjon med to variabler er nøkkelen. For eksempel, hvis vi vil justere en tittel skriftstørrelse, bør funksjonen se slik ut:

1920x + y = 80
375x + y = 48

1920 - Standard skrivebordsbredde i en design Mockup (er lik 100vw)
375 - Standard mobilbredde i en design Mockup (er lik 100vw)
80 - Ønsket H1 Tittel Font Størrelse på skrivebordet
48 - Ønsket H1 Tittel Font Størrelse på mobil

Dette er X- og Y-verdiene:

x = (80 - 48) / (1920 - 375)
x = 0,0207.

Y = 80 - 1920 * 0,0207
y = 40.256.

For å bruke disse verdiene trenger vi CCE CSS-funksjonen for å utføre beregninger på nettsiden (bredt støttet av nettlesere fra IE9 +). Vi bør telle x * 100 ganger (fordi 1VW-enhet = 1 / 100th of Viewport Width).

Vi tar vår opprinnelige funksjon:
1920x + y = 80
375x + y = 48

Erstatt 1920 med 100vw:
100vw * x + y = ønsket verdi

Erstatt X og Y med verdiene:
100vw * 0,0207 + 40,256 = Ønsket verdi

Vi får den endelige CSS-stilen:

 H1 {font-size: Calc (2.07VW + 40.25px)} 

Overraskende nok, det fungerer endelig akkurat hvordan vi ønsket!

Bare en eiendom for alle skjermer. Du trenger ikke å overskrive verdiene igjen og igjen. Du kan justere og beregne noen typer egenskaper: bredde, skriftstørrelse, polstring, margin, etc.

La oss prøve å bygge en faktisk layout ved hjelp av denne teknikken:

Men denne tilnærmingen har en ulempe: Det er vanskelig å forstå hvilken verdi som står bak denne kalkfunksjonen. Hvordan kan vi forenkle det?

Hvis du kodiger HTML daglig, er du sannsynligvis kjent med Sass / SCS-pre-prosessorer. Her er litt hjelp for deg: La oss lage en "mixin" og gjøre alle disse beregningene skje automatisk, og fortsatt holde våre opprinnelige verdier.

Det er den samme funksjonen som beskrevet ovenfor, men laget som en Sass Mixin:

 $ Display-Wide: 1920
$ display-smal: 375

@mixin væske ($ eiendom, $ minvalue, $ maxvalue)
  $ x: ($ maxvalue - $ minvalue) / ($ display-wide - $ display-smal)
  $ y: $ maxvalue - $ display-wide * $ x
  # {$ eiendom}: Calc (# {100 * $ x} vw + # {$ y} px)

H1.
  @include væske ('font-size', 48,80)

.container
  @include væske ('bredde', 315,1580)
@include væske ('polstring', 30,60) 

Adaptive layouts: mixin

En Sass Mixin kan gjøre hele prosessen enklere

Denne teknikken Gir en svært sofistikert løsning for endelig å bygge virkelig responsive web-layouter. Den støtter de fleste nettleserne, sikrer at prosjektet ditt skal være riktig vist til en besøkende, forenkler stylene strukturen, og viktigst gjør weboppsettet ditt konsekvent og logisk. Jeg håper det kan hjelpe deg med å lansere noen forbløffende webprosjekter.

Relaterte artikler:

  • 17 virkelig nyttig responsive webdesign opplæringsprogrammer
  • Reglene for responsiv webtypografi
  • Opprett et responsivt layout med CSS-rutenett


hvordan - Mest populære artikler

Legg til SVG-filtre med CSS

hvordan Sep 14, 2025

[1. 3] SVG har eksistert siden tidlig på 2000-tallet, og likevel er det fortsatt interessante måter at designere finner for å b..


Animer SVG med JavaScript

hvordan Sep 14, 2025

[1. 3] Det er så mye som kan oppnås internasjonalt i nettleseren ved hjelp av CSS3 eller Web Animations API, i JavaScript. Enkle..


Hvordan korrigere en feilaktig sammensetning

hvordan Sep 14, 2025

Jeg opprettet mitt originale maleri rundt denne tiden i fjor, etter å ha blitt inspirert av de store fantasy landskapene av artister som Dongbiao Lu og RUXING GAO. Det var mitt første stili..


Slik påvirker du Google Rankings med innholdet ditt

hvordan Sep 14, 2025

[1. 3] Innholdet ditt går ingen steder med mindre folk kan søke etter og finne den, så innholdet skal skrives med forståelse f..


Slik legger du til video på interaktive PDF-filer

hvordan Sep 14, 2025

Et bilde er verdt tusen ord, og en video er verdt en million. Videoen kan formidle mer informasjon raskere enn utskrift eller statisk bilder. Det kan gjøre ellers stående dokumenter engasje..


Hemmeligheten til å male som Monet

hvordan Sep 14, 2025

[1. 3] Med denne masterclassen vil vi forsøke å komme inn i hodet til Monet litt, så vi kan tenke og male i sin stil. Men ikke ..


Modellering Kompleks Geometri: 5 Top Tips

hvordan Sep 14, 2025

[1. 3] Gjennom hele mine års erfaring, jobber du i videospillstudioinnstillinger og undervisning 3D Art. Til sultn..


Tegn nøyaktige bein og muskel

hvordan Sep 14, 2025

[1. 3] Anatomi er et stort emne og krever en blanding av vitenskapelig informasjon og kunstnerisk praktisk. For eksempel trenger d..


Kategorier