Responsive dizajn
Responsive dizajn
Responsive dizajn
Na današnjim sajtovima korisnici pristupaju sa raznih uređaja — desktop računara, laptopova, tableta, mobilnih telefona. Da bi sajt izgledao i funkcionisao lepo na svim tim uređajima, neophodno je da dizajn bude „responsivan“ — da se automatski prilagođava veličini ekrana. Ovu prilagodljivost omogućava tehika koju zovemo Media Queries. MDN Web Docs+2GeeksforGeeks+2
Media Queries omogućavaju da napišeš posebna CSS pravila koja će se primenjivati samo pod određenim uslovima — na primer, ako je širina ekrana manja od 768px (mobilni), ili između 768px i 1024px (tablet), i slično. GeeksforGeeks+2djamware.com+2
Media query je deo CSS-a koji kaže: “Ako je ispunjen ovaj uslov (npr. širina ekrana), primeni ove stilove.” Sintaksa tipične media query-deklaracije izgleda ovako:
@media screen and (max-width: 600px) { /* CSS pravila za male ekrane */ }
@media — CSS at-pravilo koje označava media query. GeeksforGeeks+2MDN Web Docs+2
screen — tip medijuma (ekran). Možeš koristiti i all, print i drugi — ili preskočiti tip (onda važi za “sve medijume”). ReDI Projects+1
(max-width: 600px) — uslov („feature query“): u ovom primeru — maksimalna širina ekrana 600px. Stylovi unutar bloka važe samo ako je uslov ispunjen. GeeksforGeeks+1
Možeš kombinovati više uslova, npr:
@media only screen and (min-width: 768px) and (max-width: 1024px) { /* CSS za ekrane između 768px i 1024px širine */ }
Takođe, moguće je ciljati specifične situacije — orijentaciju (portrait / landscape), rezoluciju, uređaj, print i drugo. djamware.com+1
Glavne prednosti Media Queries:
Stranica se prilagođava različitim veličinama ekrana — mobilni, tablet, desktop. Korisničko iskustvo je bolje. GeeksforGeeks+2GeeksforGeeks+2
Možeš menjati raspored elemenata, širinu, visinu, font-veličine, padding/margine… zavisno od veličine ekrana. MDN Web Docs+1
Takođe možeš prilagođavati stilove za specifične medijume – npr. za štampu (print), veliki ekran, ekran sa dodirom i sl. MDN Web Docs+1
Media Queries su temelj moderne prakse odgovornog (responsive) web dizajna. MDN Web Docs+1
Pretpostavimo da imaš jednostavnu HTML stranicu — i želiš da se na mobilnom ekranu elementi ređaju jedan ispod drugog, a na desktopu stoje u koloni/kontejneru pored. Evo primera:
<!DOCTYPE html>
<html lang="sr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Responsive Media Query Primer</title>
<style>
.container {
display: flex;
flex-direction: column; /* za mobilno — elementi vertikalno */
}
/* Kada je širina ekrana 768px ili više — stavimo horizontalni raspored */
@media screen and (min-width: 768px) {
.container {
flex-direction: row;
}
}
</style>
</head>
<body>
<div class="container">
<div class="box">Box 1</div>
<div class="box">Box 2</div>
<div class="box">Box 3</div>
</div>
</body>
</html>
Na mobilnom (manjem od 768px) .container je kolona — elementi jedan ispod drugog.
Na širem ekranu (desktop, tablet) raspored postaje horizontalan — elementi stoje u redu.
Ovo je vrlo jednostavan, ali praktičan primer responsive rasporeda koristeći Media Queries + fleksiranje (flexbox).
Jedan od dobrih pristupa je mobile-first: prvo pišeš stilove za mobilne (najmanje) ekrane kao osnovne, a potom dodatne media query-e za veće ekrane.
Primer:
/* Mobile-first — osnovni stilovi */
body {
font-size: 16px;
}
/* Tablet / srednji ekrani */
@media screen and (min-width: 600px) {
body {
font-size: 18px;
}
}
/* Desktop / veliki ekrani */
@media screen and (min-width: 992px) {
body {
font-size: 20px;
}
}
Na ovaj način osiguravaš da sajt lepo radi na najmanjim uređajima, a stilske prilagođavanja dodaješ za veće ekrane. GeeksforGeeks+2ReDI Projects+2
Media Queries su korisne kada treba:
da promeniš raspored elemenata u zavisnosti od ekrana (npr. kolone → redovi, sakrivanje / prikazivanje elemenata)
da prilagodiš veličine (font, padding, margin, slike) za manje ili veće ekrane
da sakriješ ili prikažeš određene elemente (meni, sidebar, footer…) na mobilnim / desktop uređajima
da uradiš layout-e koji se lepo skaliraju (responsive grid-ovi, galerije, kartice, fleks rasporedi…)
Media Queries su praktično obavezni za svaki moderni, responsivan sajt.
HTML + CSS: Responsive raspored sa 3 kolone → 1 kolona
<!DOCTYPE html>
<html lang="sr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Responsive Grid with Media Queries</title>
<style>
.grid {
display: grid;
grid-template-columns: 1fr; /* default: 1 kolona — mobilno */
gap: 20px;
padding: 10px;
}
.card {
background: #e0e0e0;
padding: 20px;
border: 1px solid #333;
text-align: center;
}
/* Tablet / manji laptop — 2 kolone */
@media screen and (min-width: 600px) {
.grid {
grid-template-columns: repeat(2, 1fr);
}
}
/* Desktop i veći ekrani — 3 kolone */
@media screen and (min-width: 992px) {
.grid {
grid-template-columns: repeat(3, 1fr);
}
}
</style>
</head>
<body>
<div class="grid">
<div class="card">Kartica 1</div>
<div class="card">Kartica 2</div>
<div class="card">Kartica 3</div>
<div class="card">Kartica 4</div>
<div class="card">Kartica 5</div>
<div class="card">Kartica 6</div>
</div>
</body>
</html>
.grid { grid-template-columns: 1fr; } — podrazumevano za male ekrane — jedna kolona.
Kada je ekrana ≥ 600px — postaju dve kolone.
Kada je ekrana ≥ 992px — tri kolone.
Na ovaj način one iste kartice se dinamički raspoređuju u zavisnosti od širine ekrana — bez promene HTML-a.
Media Queries su osnova za responsivne web sajtove — omogućavaju da stilovi zavise od veličine ekrana i karakteristika uređaja. Kada se kombinuju sa fleksibilnim layout-ima (flexbox, grid), dobijaš sajt koji se lepo prilagođava — od mobilnog do desktopa.
Zadatak / vežba za tebe:
– Napravi stranicu sa listom članaka — da na mobilnom prikazuješ jedan članak po redu, na tabletu dve kolone, a na desktopu tri kolone.
– Dodatno: promeni veličinu fonta i padding-a u zavisnosti od širine ekrana (npr. manji font na mobilnom, veći na desktopu).