Tutorijal - Formular za pretragu
Uvod
Na nekoliko mesta u prethodnim člancima, 'provukli' smo ideju koja se tiče objavljivanja tutorijala u kojima ćemo se baviti različitim temama, kao što su (npr): pojedinačne komponente koje se pojavljuju na web stranicama, implementacija struktura podataka, prikaz pojedinačnih delova web aplikacija, desktop programa i Android aplikacija (i sl).
Kroz članak koji je pred nama, započećemo ono što smo najavili.
U prvom tutorijalu, teoriju koju smo do sada izneli u uvodnom serijalu članaka o web dizajnu (CSS box, flex, responzivni web dizajn i još poneka sitnica), primenićemo u praksi, u izradi jednostavnog formulara za pretragu:
Što se tiče tehnikalija stvari su prilično jednostavne, i dovoljno je povezati flex-box kontejner (koji nosi tekstualno polje i ikonu), sa odgovarajućim pseudoklasama ....
Formular za pretragu
Kao što smo videli u uvodnom odeljku, formular za pretragu sadrži polje za unos teksta i ikonu koja služi kao dugme preko koga se pretraga pokreće, pri čemu se oba elementa nalaze unutar flex kontejnera, u okviru koga se unutrašnji elementi raspoređuju horizontalno.
Ukoliko posetilac sajta klikne unutar tekstualnog polja (to jest, ukoliko tekstualno polje dobije "fokus"), širina polja se povećava.
Da bismo se upoznali sa svim detaljima, razmotrićemo pažljivo plan za kreiranje formulara, a potom i celokupnu HTML strukturu i pripadajući CSS kod.
Plan za izradu
Pre nego počnemo da pišemo kod, napravićemo plan:
-
noseći element biće flex box kontejner (mada, za razliku od slike, flex-kontejner bez unutrašnjih elemenata - zapravo bi se skroz 'skupio'):
-
unutar nosećeg elementa, postavićemo tekstualno polje i dugme sa ikonom:
-
preko leve margine, udaljićemo levu ivicu tekstualnog polja od leve ivice nosećeg elementa:
-
zaoblićemo ćoškove na levoj strani nosećeg elementa:
-
preko desne margine, udaljićemo desnu ivicu dugmeta od desne ivice nosećeg elementa:
-
zaoblićemo ćoškove na desnoj strani nosećeg elementa:
-
formular je gotov (a boje su uklonjene): *
Sada kada znamo 'šta nam je činiti', kreiraćemo HTML strukturu i CSS.
HTML struktura
HTML struktura formulara za pretragu je jednostavna i podrazumeva tri elementa kojima su pripisane klase (zarad stilizacije preko CSS-a):
Da pojasnimo i detalje sa kojima se nismo susretali ranije.
Atribut placeholder
....
.... definiše tekst koji će biti ispisan u polju pretrage dok korisnik ne počne da unosi pojam za pretragu (ili u situacijama kada korisnik izbriše tekst).
Pogledajmo i CSS kod.
CSS kod
Pseudoklasa placeholder
imaće uticaj na sve input
elemente (odnosno, na placeholder
tekst unutar svih input
elemenata).
Okvir forme proglašava se za flex kontejner, ali, preko vrednosti inline-flex
, da bi se širina okvira forme prilagođavala širini tekstualnog polja i slike (jer, ukoliko se navede display: flex;
, forma će se automatski širiti do pune širine nosećeg okvira).
Visinu ćemo definisati "ručno", a što se tiče bordure i zaobljavanja ćoškova, u pitanju su delovi modela CSS box (koji su čitaocima poznati od ranije).
Polju za unos pripisuje se fiksna (osnovna) širina, dok će širina pri fokusu biti veća (što je definisano preko pseudoklase :focus
koja se aktivira kada element dobije fokus, i deaktivira kada element izgubi fokus).
Na početku, širina polja je mala (da prazno polje ne bi nepotrebno skretalo pažnju), ali, čim korisnik klikne u polje, širina se poveća.
Preko leve margine, tekstualno polje biće pomereno tako da ne "štrči" preko zaobljenih ćoškova okvira.
Veličina fonta je izabrana u skladu sa pravilima o čitljivosti (12pt je krajnje primerena veličina za polje pretrage; malo veći font takođe dolazi u obzir, ali, ne bi trebalo birati veličinu koja je manja od 12pt, jer to već dovodi u pitanje čitljivost formulara).
Bordura će biti uklonjena, jer u suprotnom ostaje podrazumevana ('default') bordura, koja remeti dizajn.
Boja pozadine je ostala (pod komentarom), jer možda će biti potrebe (u nekom momentu), da je privremeno aktivirate, da biste videli kako margina utiče na položaj tekstualnog polja u odnosu na ceo formular (ili da isprobate neki sličan 'zahvat').
Za kraj, mala 'pikanterija' (bez koje formular samo naglo promeni veličinu):
Iako ovoga puta nećemo detaljnije zalaziti u priču o CSS tranzicijama, tj. animacijama (jer planiramo da u skorije vreme posvetimo članak navedenoj temi), vidimo da se elementarna animacija koja deluje sasvim dopadljivo, može definisati na vrlo jednostavan način.
Dovoljno je navesti:
- šta se menja ("width")
- koliko tranzicija traje ("400ms")
Što se tiče dugmeta, ukinuli smo pozadinu i borduru, a preko desne margine, dugme je udaljeno od desne ivice formulara (ponovo - da ne "štrči" i, takođe, ponovo je pod komentarom ostavljena i boja pozadine koja se može privremeno uključiti, da bi se lakše primetio uticaj desne margine na položaj dugmeta u odnosu na formu i sl):
Za sliku koja se nalazi unutar tagova <button>
definisane su fiksne dimenzije (budući da je sama slika kvadratnih proporcija, za visinu je postavljena vrednost auto
, pa praktično obe stranice dobijaju vrednost preko atributa width
).
Slika koju koristimo (kao i bilo koji <img>
element), takođe ima podrazumevanu borduru, ali, i u ovom slučaju bordura se ukida preko CSS-a.
Za kraj ....
Kao što vidimo, uz malo promišljanja i uz osnovno poznavanje HTML-a i CSS-a, uspeli smo da napravimo jednostavan (ali sasvim efektan) element, koji se može koristiti na sajtovima.
Neki elementi koje ćemo obrađivati u tutorijalima koji tek slede, prilično su jednostavni (baš kao i element koji smo kreirali u ovom članku), dok neki drugi elementi - nisu 'skroz jednostavni', ali, što se tiče komplikovanijih elemenata, potrebna je samo "kilometraža" (to jest, iskustvo koje se stiče kroz izradu nekoliko desetina HTML stranica sa pripadajućim CSS-om; po mogućnosti - tako da svaki sledeći poduhvat bude za nijansu kompleksniji od prethodnog). :)