CSS

CSS je skraćenica od Cascading Style Sheets, i predstvlja jezik kojim se opisuje izgled web stranica. To je zapravo jezik za formatizovanje dokumenata kao što su HTML i XML dokumenti. Ako želite da dizajnirate vlastitu web stranicu morate se upoznati sa ovim jezikom. U ovom tutorijalu ćete se upoznati sa najvećim delom onoga što treba znati o CSS-u.

Sintaksa CSS pravila

CSS pravila se mogu nalaziti unutar html dokumenta, ili u posebnom fajlu sa ekstenzijom .css. CSS fajl se sastoji od niza CSS pravila kojima se definiše izgled, pozicija i ponašanje html elemenata. Svako od pravila u CSS fajlu podleže sledećoj sintaksi:

_images/css-syntax.png

Dakle, pravilo se sastoji od selektora koji ukazuje na koje se elemente pravilo odnosi, i na niz deklaracija kojema se definišu atributi ( properties ) elemenata na koje se pravilo odnosi.

Svaki html element (tag) ima svoj skup atributa koji se mogu deklarisati u CSS pravilima. Mi se nećemo baviti svim mogućim atributima, a iscrpna lista atributa se može naći u cssreferece.io

Selektori

Slektorima se definišu elementi na koje će se pravilo odnositi. Slektori se mogu kreirati na više načina, kako sledi.

Univerzalni selektor

Univezalni selektor (*) se odnosi na sve elemente na web stranici. Na primer:

* {
  color: green;
  font-size: 20px;
  line-height: 25px;
}

označava da će na celoj web stranici tekst biti prikazan zelenom bojom sa veličinom fonta 20px i sa razmakom među linijama teksta od 25px.

Selektor elemenata

Selektor elemenata se odnosi na sve elemente istog tipa. Na primer:

p {
  font-weight: bold;
  font-size: 12px;
}

označava da će tekst u svakom paragrafu biti sa veličinom fonta 12px i da će biti boldovan.

Selektor po identifikatoru

Elementi mogu da imaju id atribut koji ih identifikuje na jedinstven način. Na primer:

<div id="container"></div>

je jedan div element koji ima id jednak “container”. Za taj element se može definisati CSS pravilo na sledeći način:

#container {
  width: 960px;
  margin: 0 auto;
}

Selektor po klasi

Elementi mogu imati atribut class kojim se označava da pripadaju nekoj klasi elemenata, što znači da više elemenat može imati istu klasu ( za razliku od identifikatora koji su različiti za svaki element ). Na primer ako sledećim elementima:

<div class="box">Ovde je neki tekst</div>
<p class="box">Ovo je jedan paragraf</p>
<p>Ovo je drugi paragraf</p>

zadamo css pravilo:

.box {
  padding: 20px;
  margin: 10px;
  width: 240px;
}

onda će se ovo pravilo odnositi na div i prvi paragraf, ali ne i na drugi paragraf koji nije u istoj klasi.

Referentna lista mogućih selektora može se naći u CSS Selector Reference

Box model

Svi HTML elementi se mogu posmatrati kao boksovi (kutije) u kojima se nalazi neki sadržaj. U CSS izraz “box model” se korsiti kada govorimo o dizajnu i rasporedu elemenata (layout-u). CSS box model je boks (kutija) u koju zamišljamo da je smešten sadržaj elementa. Kutija se sastoji od: margina (margins), bordure (borders), pomaka (padding) i samog sadržaja. To se može ilustrovati sledećom slikom:

_images/boxmodel.gif

A evo kako bi to moglo da se primeni na neki HTML element:

.kutija {
  width: 400px;
  height: 200px;
  margin: 20px;
  padding: 20px;
  border: 10px solid #000;
}

HTML element:

<div class="kutija">Sadržaj elementa</div>

Jedinice mere

U CSS-u se može koristiti više načina za merenje “dužina” kao što su veličina fornta, širina margine, širina bordure itd.

Jednice mogu biti relativne ili apsolutne.

Najčešće korišćenje relativne jedinice su:

  • em - relativno u odnosu na veličinu fonta u elementu ( 2em označava dvostruku veličnu fonta, na primer)
  • % - procenat od veličine fonta u elementu ( 200% označava dvostuku veličinu, na primer)

Najčešće korišćene apsolutne jedinice su:

  • cm - santimetri ( 0.5cm na primer)
  • mm - milimetri ( 4mm na primer)
  • px - pikslovi ( 1 piksl = 1/96 od inča)
  • pt - point ( 1/72 deo inča )
  • pc - 1pc = 12pt

Pozicioniranje elemenata

Svaki od html elemenata pripada grupi block ili inline.

Blok elementi kao što su div, h, p, form se prikazuju uvek u novoj liniji. Inline elementi kao što su span, a, img se prikazuju u istoj liniji. Po pravilu svi elementi u html dokumentu se prikazuju jedan za drugim u redosledu kojim se pojavljuju u dokumentu uz poštovanje gornjeg pravila.

Međutim, taj raspored može biti promenjen na više načina:

  • Korišćenjem tabela ( nije preporučljivo )
  • Korišćenjem position atributa ( Tutorijal 1 )
  • Korišćenjem float and clear atributa ( Tutorijal 2 )
  • Korišćenjem css biblioteka ( bootstrap - Tutorial 3 )
  • Korišćenjem CSS3 flexbox metoda (Tutorijal 4 )

HTML5 je uveo nove tag-ove za definisanje layout-a, pa je to još jedna mogućnost ( Tutorijal 5 )

Tranzicije i transformacije

Pomoću CSS pravila mogu se ostvarivati različiti oblici tranzicija i transformacija html elemenata. Ta tema izlazi iz okvira ovog predmeta, a više o tome možete da nađete u CSS Transitions and Transforms for Beginners

Ilustracije radi dajemo jedan primer:

html:

<div class="container">
  <div class="circle0"></div>
  <div class="circle1"></div>
  <div class="circle2"></div>
  <div class="circle3"></div>
  <div class="circle4"></div>
  <div class="circle5"></div>
</div>

css:

div {
  transition: all 3s ease-in-out;
}

Na kraju, dajemo jedan primer html stranice sa najčešće korišćenim css deklaracijama. Eksperimentišite da uoćite razliku u izgledu dokumenta primenom css pravila.

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSS primeri</title>
    <style>
      * {
        color: red;
      }
      #tekst {
        background-color: yellow;
        font-family: Helvetica, Arial, sans-serif;
        font-size: 36px;
        font-weight: bold;
        text-align: left; /* right, center, justify */
        text-transform: capitalize;
        text-shadow: 4px 4px 5px blue;
        letter-spacing: 8px;
        word-spacing: 20px;
        line-height: 2.5;
      }
      .kutija {
        width: 400px;
        height: 200px;
        margin: 20px;
        padding: 20px;
        border: 10px solid #000;
      }
      .droplet {
        background: skyblue;
        border-radius: 5px 50%;
        height: 100px;
        margin: 100px 250px;
        transform-origin: left top;
        transition: transform 3s;
        width: 100px;
      }
      .droplet:hover {
        transform: rotate(500deg);
      }
    </style>
  </head>
  <body>
    <p id="tekst"> Osnovne deklaracije za tekst i font</p>
    <div class="kutija">Sadržaj elementa</div>
    <div class="droplet"></div>
  </body>
</html>

Dobre tutorijale za css i css3 možete da nađete na W3Schools ili na Tutorilas point