Jedan od najčešćih izazova s kojima se početnici i iskusni web developeri susreću prilikom izrade sučelja je kontrola visine elemenata. Postavljanje div elementa tako da zauzme točno 100% visine vidljivog dijela preglednika (viewporta) ključno je za kreiranje modernih web stranica, bilo da se radi o početnim stranicama s efektom “hero” sekcije, modalnim prozorima, overlayima ili kompleksnim aplikacijama koje ne smiju imati nepotrebno skrolanje.
Iako na prvi pogled čini se da je dovoljno postaviti height: 100%, u praksi to često ne radi očekivano jer CSS-ov postotak visine ovisi o visini roditeljskog elementa. Ako roditelj (u ovom slučaju body i html) nema definiranu visinu, dijete neće znati koliki postotak treba zauzeti. U ovom vodiču detaljno ćemo proći kroz najučinkovitije metode za rješavanje ovog problema, s posebnim naglaskom na korištenje fiksne pozicije i modernih CSS jedinica.
Sadržaj...
Korištenje fiksne pozicije za potpuno prekrivanje ekrana
Jedan od najsigurnijih načina za kreiranje elementa koji će uvijek zauzimati punu visinu i širinu preglednika, bez obzira na sadržaj koji se nalazi iza njega, jest korištenje position: fixed. Ova metoda je posebno korisna kada želite kreirati overlay (prekrivanje) koji služi kao pozadina za pop-up prozore ili navigacijske izbornike koji prekrivaju cijelu stranicu.
Da bismo ovo postigli, moramo definirati element tako da se “zaključa” za sve rubove vidljivog dijela prozora. Primjer HTML strukture bi izgledao ovako:
<div id="wrap"></div>
<div id="container">
<!-- Sadržaj stranice -->
</div>
Za ovaj HTML, primijenit ćemo sljedeći CSS kôd:
* { margin: 0; padding: 0; }
#wrap {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
#container {
position: relative;
}
Objašnjenje mehanizma:
Kada postavimo position: fixed, element se izmješta iz normalnog toka dokumenta i pozicionira relativno u odnosu na viewport. Definiranjem svih četiri strane (top, right, bottom, left) na 0, prisiljavamo preglednik da razvuče element od samog vrha do samog dna i od lijeve do desne ivice ekrana. Dodavanje position: relative na glavni kontejner sadržaja osigurava da se slojevi ispravno renderiraju i sprječava potencijalne probleme s preklapanjem sadržaja koji bi mogao biti nevidljiv ili pogrešno pozicioniran.
Alternativne i moderne metode za kontrolu visine
Iako je metoda s fiksnom pozicijom izuzetno pouzdana za specifične slučajeve poput overlaya, u modernom web dizajnu često koristimo i druge pristupe koji su fleksibilniji i bolje se prilagođavaju različitim uređajima.
Korištenje viewport jedinica (vh)
Najjednostavniji način za postavljanje visine na 100% bez potrebe za manipulacijom roditeljskim elementima je korištenje jedinice vh (viewport height). Jedna jedinica 1vh iznosi 1% visine viewporta. Dakle, 100vh je uvijek točno visina vidljivog dijela ekrana.
Primjer: .full-height { height: 100vh; }
Korištenje Flexbox-a
Flexbox je moćan alat za raspored elemenata. Ako želite da vaš glavni sadržaj zauzme ostatak ekrana nakon što se oduzme visina zaglavlja (headera), Flexbox je idealno rješenje. Postavljanjem display: flex i flex-direction: column na body, možete postaviti glavni element na flex: 1, što će ga natjerati da popuni sav preostali prostor.
Praktični savjeti i česte pogreške
Prilikom rada s visinom elemenata, developeri često nailaze na probleme koji mogu narušiti korisničko iskustvo. Evo nekoliko ključnih stvari na koje trebate pripaziti:
- Nuliranje margina: Preglednici po zadanim postavkama dodaju margine na
bodyelement. Ako ne postavitemargin: 0, vaš element od 100% visine će uzrokovati pojavu nepotrebnog skrolanja (vertical scrollbar). - Problem s mobilnim preglednicima: Na mobilnim uređajima, adresna traka preglednika često se skriva ili pojavljuje tijekom skrolanja, što može uzrokovati “skakanje” elemenata koji koriste
100vh. U takvim slučajevima, preporučuje se korištenje novijih jedinica poputsvh(small viewport height) ilidvh(dynamic viewport height). - Z-index i slojevi: Kada koristite
position: fixedza prekrivanje ekrana, obavezno definirajtez-indexkako biste bili sigurni da se taj element nalazi iznad svih ostalih komponenti stranice. - Sadržaj koji prelazi visinu: Ako element ima fiksnu visinu od 100%, ali sadržaj unutar njega je dulji od ekrana, sadržaj će biti odrezan. U tom slučaju koristite
min-height: 100vhumjestoheight: 100vh, što omogućuje elementu da raste ako je sadržaj dulji.
Kriteriji za odabir metode
Kako biste znali koju metodu odabrati, možete se voditi sljedećim kriterijima:
| Cilj | Preporučena metoda | Glavna prednost |
|---|---|---|
| Overlay / Modalni prozor | position: fixed | Potpuna izolacija od ostatka stranice |
| Hero sekcija (početna slika) | min-height: 100vh | Prilagodljivost sadržaju |
| Aplikacijski layout (Sidebar + Main) | Flexbox / CSS Grid | Precizna kontrola proporcija |
Zaključak
Postavljanje div elementa na 100% visine preglednika može izgledati jednostavno, ali zahtijeva razumijevanje načina na koji CSS interpretira visinu i pozicioniranje. Dok je metoda s position: fixed i definiranjem svih rubova na nulu izvrsna za elemente koji moraju ostati nepomični i prekrivati sadržaj, moderne jedinice poput vh i sustavi poput Flexbox-a nude veću fleksibilnost za svakodnevni layout.
Najvažnije je uvijek testirati dizajn na različitim preglednicima i uređajima, posebno na mobilnim telefonima, kako biste osigurali da korisničko iskustvo ostane besprijekorno bez nepotrebnih praznina ili pogrešnog skrolanja.
Česta pitanja (FAQ)
Zašto height: 100% ne radi na mom divu?
Postot




