Futura

3. RADIONICA - POZICIONIRANJE/BOOTSTRAP


Position


Static

Početna vrijednost za sve elemente, znači da se element pozicionira na stranici u odnosu na druge elemente. Ako imamo element div-2 unutar div-1:

<!DOCTYPE html>
<html>
  <head>
    <style>
      .div-1 {
        background-color: #0000ff;
        color: #ffffff;
        width: 500px;
        height: 400px;
        position: static;
      }
      
      .div-2 {
        background-color: #ff0000;
        color: #ffffff;
        width: 200px;
        height: 200px;
        position: static;
      }
    </style>
  </head>

  <body>
    <div class="div-1">
      div-1
      <div class="div-2">
        div-2
      </div>
      <p>
        div-2 je unutar div-1
      </p>
    </div>
  </body>
</html>
Rezultat (klikni me!)

Elementi se ponašaju kao da nismo niti postavili position.


Relative

Početna vrijednost za sve elemente, znači da se element pozicionira na stranici u odnosu na druge elemente (jednako kao static), ali omogućuje i korištenje top, right, bottom, left svojstava. S tim svojstvima možemo pomaknuti element u nekom smjeru. Ako u prethodnom primjeru ubacimo "position: relative;" za div-2:

position: relative;
left: 50px;

Dobit ćemo: Rezultat (klikni me!)


Absolute

Element ignorira ostale elemente stranice i pozicionira se u odnosu na parent element (element kojem pripada) ako parent element ima postavljen position: relative. Ako nema takvog elementa pozicionira se u odnosu na body stranice.
Ako dodamo u div-2 "position: absolute;" i "right: 0;" div-2 će ignorirati ostatak stranice i premjestiti se prema body
Tekst unutar div-1 će se također pomaknuti, jer div-2 mu više ne smeta:

position: absolute;
right: 0;
Rezultat (klikni me!)

Ako želimo da se div-2 pozicionira unutar div-1, potrebno je za div-1 dodati "position: relative;"

position: relative;
Rezultat (klikni me!)


Fixed

Element ostaje uvijek na istoj poziciji na stranici. Kao i kod "position: absolute;" možemo koristiti top, right, bottom, left. Primjer sa "position: fixed; bottom:0; left:10%; width:80%;"

Primjer (klikni me!)


Zadatak 1

Potrebno je poredati elemente kao na slici. Za izradu zadatka potrebno je koristiti div elemente sa proizvoljnim nazivima klasa, te position svojstvima (ne fixed) za te klase (CSS external zapis).
Napomena! Kako bi se jedan prazani div element prikazao, potrebno mu je odrediti visinu, širinu i pozadinsku boju.


Nema slike, nema zadatka ;)


Float

Svojstvo float omogućuje da element postavimo lijevo (vrijednost left), desno (vrijednost right), inherit (nasljeđuje od parent elementa) i none (početna vrijednost) u odnosu na sljedeći element.

Primjer:

<div id="div-1" style="background-color:#0000ff; width:50px; height:50px; float:left;">
</div>

<div id="div-2" style="background-color:#ff0000; width:50px; height:50px; float:left;">
</div>

<p>Plavi i crveni div su float left u odnosu na ovaj tekst</p>

Rezultat:

Plavi i crveni div su float left u odnosu na ovaj tekst



Ako želimo da tekst ide u sljedeći red potrebno mu je postaviti svojstvo clear. Svojstvo clear ima vrijednosti both (obje strane), left, right i none (početna vrijednost).

<div id="div-1" style="background-color:#0000ff; width:50px; height:50px; float:left;">
</div>

<div id="div-2" style="background-color:#ff0000; width:50px; height:50px; float:left;">
</div>

<p style="clear: both;">Ovaj tekst je u novom redu</p>

Rezultat:

Ovaj tekst je u novom redu



Zadatak 2

Zadatak je identičan prethodnom, samo je elemente potrebno poredati (kao na slici) koristeći float svojstva.


Nema slike, nema zadatka ;)

@media

Svojstvo @media omogućuje postavljanje drugačijeg ponašanja stranice ako se ispune određeni uvjeti. U naš static primjer dodali smo:

<style>
  @media screen and (min-width:400px) and (max-width:799px) {
  /*ako je velicina ekrana između 400px i 799px*/
      #div-2 {
          background-color: #ffff00; /*promijeni boju*/
      }
  }
  
  @media screen and (max-width:399px) {
  /*ako je velicina ekrana manja ili jednaka 399px*/
      #div-2 {
          background-color: #00ff00; /*promijeni boju*/
      }
  }
</style> 

I dobili: Rezultat (klikni me!)



Zadatak 3

Potrebno je napraviti stranicu kao na slici. Za izradu zadatka potrebno je koristiti float i clear svojstva (CSS external zapis).


Nema slike, nema zadatka ;)


Bootstrap


Što je Bootstrap?

  • Bootstrap je najpopularniji HTML, CSS i Javascript framework za izradu responzivnih stranica (stranice prilagođene svim rezolucijama ekrana, poput monitora, tableta i mobitela)
  • Besplatan za koristiti (MIT licenca)
  • Nastao 2011. godine. Trenutno najnovija verzija 3.3.6 iz 2015. godine
  • Koristi Javascript framework JQuery (MIT licenca)

Kako uključiti Bootstrap?

Za uključiti Bootstrap potrebno je u dokument unijeti:

<!-- informacije o širini stranice i približavanju, potrebno za Bootstrap -->
<meta name="viewport" content="width=device-width, initial-scale=1">

<!-- uključivanje Bootstrap CSS-a putem web linka -->
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">

<!-- uključivanje JQuery framework-a putem web linka -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>

<!-- uključivanje Bootstrap framework-a putem web linka -->
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>

Grid sustav

Najvažniji dio Bootstrap-a je grid sustav koji omogućuje da se stranica pri izradi prilagodi svim rezolucijama ekrana. Grid sustav dijeli stranicu na 12 dijelova i svaki element može uzimati 1 ili više dijelova (do 12). Npr. ako se odlučite da tri elementa uzimaju po 4 dijela, time dijelite stranicu na 3 jednaka dijela (12/4=3).


3 3 3 3
4 4 4
6 6
12


Grid ima četiri klase za prilagodbu prema četiri vrste ekrana:

  • xs (dolazi od engl. extra small - ekrani <768px, najčešće mobiteli)
  • sm (dolazi od engl. small - ekrani >=768px i <992px, najčešće tableti)
  • md (dolazi od engl. medium - ekrani >=992px i <1200px, najčešće monitori)
  • lg (dolazi od engl. large - ekrani >=1200px veliki monitor)

Klase se pridružuju u formatu col-*-*, gdje je prva zvjezdica veličina ekrana (xs, sm, md ili lg), a druga broj (od 1 do 12) koliko dijelova element zauzima na stranici. Nekoliko primjera:

class="col-xs-3"
class="col-sm-6"
class="col-md-6"
class="col-lg-3"

Obično se više klasa pridruži jednom elementu za više tipova ekrana, npr.

<div class="col-xs-3 col-sm-6 col-md-6 col-lg-3">

Time dobijemo div koji se ponaša drukčije ovisno o rezoluciji ekrana.

Svaka postavljena veličina vrijedi i za sve više, npr. ako se postavi sm, vrijedi za sm, md i lg, ili ako se postavi md vrijedi i za lg. Manje veličine, ako se ne navedu, koriste cijeli redak (12 stupaca).

Grid sistem ima nekoliko pravila:

  • elementi s col-*-* klasama moraju biti unutar elementa sa container klasom (koji ima fixed width) ili elementa container-fluid (koji ima full-width)
  • koriste se redci (row) za kreiranje stupaca (col), a sadržaj ide u stupce
  • suma duljine stupaca treba biti 12

Primjer:

<div class="container">
  <div class="row">
    <div class="col-md-6">
      ...
    </div>
  </div>
</div>

stacked-to-horizontal primjer

Čest primjer Boostrap-a je stacked-to-horizontal. Koriste se dva div-a sa col-sm-6.
sm, md i lg su time postavljeni da divovi koriste po 6 dijelova ekrana, a za xs koriste puni redak (12).

Primjer (klikni me)


Zadatak 4

Poredati elemente kao na slici, ali koristeći Bootstrap.


Nema slike, nema zadatka ;)

Zadatak 5

Napraviti stranicu kao na slici. Za izradu zadatka potrebno je koristiti Bootstrap.


Nema slike, nema zadatka ;)