A reszponzív weboldalak különféle eszközökön optimális megjelenítést biztosítanak.
A reszponzív oldalakat a CSS3 media query szabályaival alakítjuk ki.
A viewport segítségével a különböző méretű eszközökön egységes megjelenítést adhatunk.
Ezt egyszerűen a HTML oldal fejrészébe másolt következő sorral érhetjük el:
<meta name="viewport" content="width=device-width, initial-scale=1.0">
Működés viewport nélkül és viewport-tal:
Ha nincs kéznél telefon, hogy megnézzük, a böngészőben kapcsoljunk fejlesztő felületen telefonos módba.
Szintaktika:
@media only screen and (max/min-width: méret) { ... }
Vagy min-width, vagy a max-width értéket adom meg.
Példa
@media only screen and (min-width: 300px) { ... }
Az így megadott beállítások 300px-től érvényesek.
Elég így is:
body { background-color: aqua; } @media (min-width: 300px) { body { background-color: beige; } }
@media print { body { font-family: serif; } } @media screen { body { font-family: sans-serif; } }
Fekvőtájolás:
@media (orientation: landscape) { .doboz { background: blue; } }
Álló tájolás:
@media (orientation: portrait) { .doboz { background: blue; } }
A szélességem szélesebb mint a magasság.
@media (min-aspect-ratio: 1/1) { .doboz { background: blue; } }
@media (min-aspect-ratio: 16/9) { .doboz { background: blue; } }
@media (min-width: 300px) { .doboz { background: blue; } }
Olvashatóbb:
@media (width >= 300px) { .doboz { background: blue; } }
Így tartomány is létrehozható:
@media (100px <= width <= 300px) { .doboz { background: blue; } }
<!DOCTYPE html> <html lang="hu"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <link rel="stylesheet" href="style.css"> </head> <body> <div class="container"> <h1>Lorem</h1> <p> Lorem ipsum dolor sit amet. </p> </div> </body> </html>
.container { background-color: navy; color: white; } @media only screen and (min-width: 400px) { .container { background-color: gold; color: #333; } }
Élő példa:
Ha fekvő alakhoz más beállításokat szeretnénk:
@media only screen and (orientation: landscape) { ... }
Élő példa:
Az eltérő képernyőméreteket a flex dobozokkal is kezelhetjük. Nézzük meg a következő példát:
<!DOCTYPE html> <html lang="hu"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> .container { display: flex; flex-wrap: wrap; justify-content: center; } .container div { background-color: aqua; width: 200px; margin: 20px; padding: 10px; } </style> </head> <body> <div class="container"> <div>doboz 1</div> <div>doboz 2</div> <div>doboz 3</div> <div>doboz 4</div> <div>doboz 5</div> <div>doboz 6</div> <div>doboz 7</div> <div>doboz 8</div> <div>doboz 9</div> <div>doboz 10</div> <div>doboz 11</div> <div>doboz 12</div> </div> </body> </html>
Élő példa:
<!DOCTYPE html> <html lang="hu"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Grid</title> <style> #grid { display: grid; column-gap: 5px; row-gap: 5px; grid-template-columns: 100px 100px auto; } .grid-item { background-color: aqua; padding: 10px; } </style> </head> <body> <div id="grid"> <div class="grid-item">doboz 1</div> <div class="grid-item">doboz 2</div> <div class="grid-item">doboz 3</div> <div class="grid-item">doboz 4</div> <div class="grid-item">doboz 5</div> <div class="grid-item">doboz 6</div> <div class="grid-item">doboz 7</div> <div class="grid-item">doboz 8</div> <div class="grid-item">doboz 9</div> <div class="grid-item">doboz 10</div> <div class="grid-item">doboz 11</div> <div class="grid-item">doboz 12</div> </div> </body> </html>
Élő példa:
@container (width >= 600px) { .doboz { background: blue; } }
Lásd még: