01 Osnove CSS-a
HTML opisuje sadržaj, dok CSS kontroliše kako on izgleda. Poveži style.css u head delu fajla index.html. Svako pravilo čitaj ovako: izaberi ove elemente → promeni ovo svojstvo → upotrebi ovu vrednost → pregledač prikazuje rezultat.
h1 { color: #1d4ed8; }
.site-title { font-size: 2rem; }
CSS pravilo ima selektor, svojstvo i vrednost. U pravilu .project-card { padding: 1rem; }, .project-card bira odgovarajuće elemente, padding imenuje ono što se menja, a 1rem je vrednost. Pregledač primenjuje to pravilo i prikazuje unutrašnji prostor oko sadržaja.
Jednom poveži eksterni stylesheet unutar head dela fajla index.html: <link rel="stylesheet" href="style.css">. Pregledač zatim čita oba fajla.
↳Drži izvorne fajlove odvojeno: Sačuvaj izmene u style.css, zatim osveži pregledač osim ako to Live Server ne radi umesto tebe. Privremena izmena u DevTools-u se ne čuva automatski u tvom fajlu.
Selektori elemenata i class selektori<article class="project-card">
...
</article>
h1 { color: #1d4ed8; }
.project-card { padding: 1rem; }
body, nav i h1 su selektori elemenata. U HTML-u class="project-card" imenuje ponovljivu grupu; u CSS-u .project-card bira elemente sa tom klasom. Tačka znači „izaberi ovu klasu“.
Tipografija i bojabody {
font-family: Arial, sans-serif;
line-height: 1.6;
background: #f4f7fb;
}
a { color: #1d4ed8; }
Koristi color, background, font-family, font-size i line-height da sadržaj bude čitljiv pre nego što dodaš dekoraciju.
02 Box Model
Jedan element čitaj iznutra ka spolja: sadržaj → padding → border → margin. Padding je prostor unutar ivice, a margin je prostor izvan nje, između susednih elemenata.
.project-card { padding: 1rem; margin: 1rem 0; border: 1px solid #cbd5e1; }
Box model.card {
box-sizing: border-box;
padding: 1rem;
margin: 1rem 0;
border: 1px solid #cbd5e1;
border-radius: 0.75rem;
}
Čitaj od sadržaja ka spolja: padding stvara prostor unutar border-a, border je ivica, a margin stvara prostor izvan nje, između susednih elemenata.
Margin — spoljašnji prostorBorder — ivicaPadding — unutrašnji prostorSadržaj
03 Flexbox
Linkovi navigacije kao što su Početna, O projektu i Projekti prirodno prate uobičajeni HTML tok. Kada želiš da ih rasporediš kao jedan navigacioni red, njihov roditelj nav pretvori u flex container pomoću display: flex. Njegovi direktni potomci linkovi tada mogu da se raspoređuju duž glavnog smera: gap dodaje razmak između njih, justify-content ih raspoređuje duž tog glavnog smera, a align-items ih poravnava po poprečnoj osi.
nav { display: flex; gap: 1rem; justify-content: space-between; align-items: center; }
Napravi jedno Flexbox pravilo za navigaciju korak po koraknav { display: flex; }
nav { gap: 1rem; }
nav { justify-content: space-between; }
nav { align-items: center; }
Počni od display: flex: nav postaje flex container, a njegovi direktni linkovi mogu da formiraju red. Dodaj gap: 1rem za razmak između linkova. Zatim justify-content: space-between raspoređuje linkove duž glavne ose, dok align-items: center poravnava linkove po poprečnoj osi. Kompletno pravilo objedinjuje te odluke; isti HTML i CSS fajl ostaju u upotrebi i na malom ekranu.
↕ Poprečna osa — align-items poravnava linkovePočetnaO projektuProjekti
↔ Glavna osa — justify-content raspoređuje linkove 04 CSS Grid
Zamisli više kartica projekata: dve u jednom redu, a dve ispod njih. Flexbox je koristan kada prvenstveno raspoređuješ stavke duž jednog smera; Grid je koristan početnički model kada želiš redove i kolone. Najpre pretvori .projects-grid u grid container pomoću display: grid, a zatim koristi grid-template-columns: repeat(2, 1fr) za dve jednake kolone. Ovde 1fr znači jedan jednak deo dostupnog prostora, a gap dodaje razmak između kartica.
.projects-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 16px;
}
05 Responzivni dizajn i DevTools
Isti HTML i CSS fajl mogu dati drugačiji raspored kada se promeni viewport — vidljiva širina stranice u pregledaču. Odgovarajuće @media pravilo primenjuje se samo za taj viewport; @media (max-width: 768px) znači širinu od 768 piksela ili manju, a ne novu stranicu. DevTools su alati ugrađeni u pregledač koji omogućavaju da pregledaš prikazani HTML i CSS, a zatim privremeno eksperimentišeš pre nego što korisnu ispravku sačuvaš u style.css.
@media (max-width: 768px) { nav { flex-direction: column; } }
DevTools: pregledaj, eksperimentiši, zatim sačuvaj.project-card {
padding: 16px;
}
DevTools su alati ugrađeni u pregledač za pregled prikazane stranice. Desni klik na karticu projekta i izaberi Inspect; pregledač otvara DevTools i bira tu karticu u panelu Elements, koji prikazuje HTML. U Styles pronađi .project-card i privremeno promeni padding: 16px u padding: 32px. Unutrašnji prostor odmah postaje veći. Computed prikazuje konačnu vrednost koju pregledač koristi. Osveži stranicu da ukloniš eksperiment ili vrednost koja ti se sviđa prenesi u style.css, sačuvaj fajl i osveži. DevTools služi za pregled i eksperimentisanje, a nije zamena za editor.
Čitaj i otklanjaj CSS probleme korak po korak
- Pronađi HTML elementPočni od tačnog elementa koji želiš da stilizuješ u
index.html ili DevTools-u. - Pronađi njegov selektorOdluči da li ga bira selektor elementa kao
h1 ili class selektor kao .project-card. - Odredi jedno svojstvo i vrednostZapitaj se šta menjaš i koju vrednost mu daješ, na primer
padding: 1rem. - Potvrdi vezu sa CSS fajlomProveri da li je
style.css povezan iz index.html i da li su oba fajla sačuvana. - Koristi DevTools kao dokazPregledaj element i proveri da li se očekivano pravilo pojavljuje u Styles ili se primenjuje neka druga vrednost.
- Neka eksperimenti ostanu privremeni dok ih ne sačuvašPromeni jedno malo pravilo u DevTools-u da testiraš ideju, zatim korisnu izmenu kopiraj u
style.css. Osvežavanje uklanja izmene napravljene samo u DevTools-u.
Česte početničke CSS greške
- DevTools je izmenio moj izvorni fajlDevTools je privremen. Konačnu ispravku unesi u
style.css, sačuvaj je i osveži stranicu. - CSS fajl nije povezanProveri da li je
link u head delu i da li href="style.css" odgovara imenu sačuvanog fajla. - Class selektor ne odgovara HTML-uPravilo kao
.project-card radi samo kada HTML ima class="project-card". Precizno proveri pravopis. - Zaboravljanje tačke kod class selektora
project-card bira HTML element sa tim imenom; .project-card bira klasu. - Mešanje padding-a i margin-aPadding stvara prostor unutar border-a, oko sadržaja. Margin stvara prostor izvan border-a, između elemenata.
- Pregledanje pogrešnog elementaPomoću Inspect-a izaberi element koji si nameravao pre nego što zaključiš da pravilo nedostaje ili se ignoriše.
- Tretiranje media query-ja kao posebne straniceMedia query menja koja se pravila primenjuju za viewport. Ne pravi drugu mobilnu HTML stranicu.