Reszponzivitás media query-vel. Így csináld
A weboldalak reszponzivitását általában CSS-en belül media query-vel oldjuk meg. Ebben olyan CSS utasításokat gyűjtünk amik csak adott ablak-szélesség esetén érvényesülnek.
A weboldalak reszponzivitását általában CSS-sel és azon melül media query utasításokkal oldjuk meg. Ennek lényege, hogy olyan CSS utasításokat gyűjtünk alatta, amik csak bizonyos képernyő szélesség (pontosabban: böngésző-ablak szélesség) esetén fognak érvényesülni. Ha olyan széles ablakban nézzük a weboldalt, amire a media query nem vonatkozik, akkor az ott lévő CSS utasítások olyanok, mintha ott sem lennének.
Így néz ki a media query
Példa egy media queryre:
@media screen and (max-width: 600px)
{
.kepek {flex-direction: column;}
.infobox {margin: 5px; padding: 5px;}
H2 {font-size: 24px;}
}
Ebben az esetben a középen lévő, két kapcsos zárójel közötti, csak példaként beírt CSS utasítások csak akkor futnak le, ha 600 pixeles, vagy annál kisebb képernyőn nézzük a weboldalt.
Az első sor elején a @media jelenti, hogy ez egy media query lesz. A screen jelentése, hogy képernyőre vonatkoztatva szeretnénk CSS változtatásokat megadni. Lehet ugyanis print is itt, amivel azt adhatjuk meg, hogy ha valaki kinyomtatná a weboldalt, akkor hogy jelenjen meg a webolalunk a papíron. Ezt azonban kevés weboldal használja. Utána egy sima zárójelben adjuk meg a képernyő szélességet pixelben, és hogy az maximum vagy minum érték. (mivel a screen és a szélesség megadása egyaránt a feltétele annak, hogy a mediaquery lefusson, kerül közéjük egy and is.) A biztonság kedvéért tisztázzuk:
A max-width: 600px azt jelenti, hogy 600 pixel alatt, 600pixelig érvényesül
A min-width: 600px azt jelenti, 600 pixelen és afölött érvényesül
Melyiket használjuk a kettő közül? Ez csak rajtunk múlik. A hagyományos felfogás szerint először elkészítjük a weboldalt, az összes CSS-sel desktop nézetre optimalizálva, mondjuk 1920-as pixelszélességet feltételezve. Ezt követően media query-ket teszünk a CSS fileba amik felülírják a CSS-t, ha a megadott szélesség alatt nézi valaki a weboldalt. Ilyenkor a max-width-et használjuk, ahogy megyünk lefelé a képernyőszélességben.
A mobile first felfogás szerint pedig eleve mobiltelefonra szerkesztjük meg a weboldalt. Miután ez kész, media queryvel felülírjuk, ha valaki az okostelefonénál szélesebb képernyőn nézi a weblapot. Ilyenkor a min-width-et használjuk, ahogy haladunk felfelé a képernyő szélességben.
Mindegy, melyik módszert használjuk, nem jobb az egyik, mint a másik. Ami közös mindkettőben, hogy több media query-t is használhatunk egymás után különböző szélességekre, és szoktak is többet megadni a webfejlesztők, akik töréspont-ként hivatkoznak media queryben megadott szélességekre.
Amire figyelni kell
A media query igazán egyszerű. Csak három apróságra kell figyelni, ezekre:
- Ha több media query-t használunk, akkor egy konkrét képernyő szélességre több is érvényesülhet egyszerre. Ha pl. 400 pixel keskenyen nézem az oldalt, arra nem csak a legalacsonyabb szélességnél, mondjuk 600 pixelnél beállított media query fog vonatkozni, hanem a korább, pl. a max-width:1000px is. (Ha ellentmondás van, akkor a CSS fileban lejjebb levő felülírja a korábbit)
- Mivel a mediaquery lényege, hogy felülírja az alap CSS-ünket, ezért a CSS file végén kell elhelyezni.
- Minden mediaquery végén két kapcsos zárójel van. Az egyik magát a mediaquery-t zárja le, a másik pedig azon belül az utolsó CSS utasítást. Ajánlott a mediaquery-t lezáró kapcsos zárójelet külön sorba tenni.
Ha még egyáltalán nem ismered a CSS kódokat, akkor még az egész előtt nézd meg, mik a legnépszerűbb CSS kódok. Ha kiváncsi vagy, hogy ugyanezt hogy tanuljuk meg a Prooktatás alap tanfolyamán, nézd meg ebben a videóban példákkal. Ha pedig már ismered a CSS-t és most tennéd reszponzívvá a weboldalat, akkor ezeket javaslatokat érdemes megfontolni.
Jó szórakozást!