nav_dugme codeBlog codeBlog
  • početna Početna stranica
  • Sačuvani članci Sačuvani članci
  • Članci
     (spisak)
  • Kontakt
Povratak na vrh stranice

Info & povezani članci Info o članku - dugme

Info

trejler_sat Datum objave: 28.10.2020.

trejler_dokument Jezici: HTML,
CSS

trejler_teg_narandzasti Težina: 6/10

HTML
CSS
web dizajn
internet
pretraga
formular
frontend
tutorijali
saveti

Povezani članci

Uvod u web dizajn - 1. deo - Početni koraciCSS - @supports - Provera podržanosti svojstavaUpotreba specijalnih znakova u HTML datotekamaFontovi u web dizajnu (osnove tipografije)Napredni parametri internet pretrageKako napraviti dobru lozinkuRegularni izrazi - napredna pretraga tekstaUvod u PHP i back-end programiranjeŠablonske niske u programskim jezicimaASCII, Unicode i UTF - Predstavljanje znakova na računarimaKako napraviti syntax highlighter
Svi članci
Programming isn't about what you know; it's about what you can figure out.
Chris Pine

Tutorijal - Formular za pretragu

Facebook LinkedIn Twitter Viber WhatsApp E-mail
zoom_plus zoom_minus bookmark
početna > Članci > Saveti

Uvod

Poznavanje teorije, kako u oblasti web dizajna tako i u drugim oblastima računarske industrije, svakako je neophodno (iako mladim programerima i web dizajnerima ponekad deluje da nije tako :)), međutim, sve postaje još zanimljivije kada teoretski principi "ožive" kroz primenu u praksi.

Sa teorijom web dizajna već smo se upoznali, i stoga možemo započeti sa realizacijom ideje koju smo provukli kroz prethodne članke: u članku pred nama i drugim člancima koje tek spremamo, bavićemo se tutorijalima za izradu pojedinačnih komponenti web stranica, ali, biće (kasnije) i drugih tutorijala, koji će biti posvećeni različitim strukturama podataka, backend komponentama web aplikacija, desktop programima i Android aplikacijama (kao i raznim drugim oblastima računarske industrije).

U prvom tutorijalu, teoriju koju smo do sada izneli u uvodnom serijalu članaka o web dizajnu (CSS box, Flexbox, 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: dovoljno je povezati Flexbox 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.

Pri povećanju širine, smatraćemo (budući da se ovoga puta nećemo baviti responzivnim web dizajnom), da ima dovoljno mesta za ceo formular, što praktično jeste slučaj sa svim iole modernijim telefonima (a pogotovo sa desktop monitorima).

Ako želite da uskladite formular za pretragu, sa principima responzivnog web dizajna, dovoljno je da napišete nekoliko jednostavnih media-query direktiva i pripadajući CSS kod (koji praktično vodi računa o maksimalnoj širini).

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:

  1. noseći element biće flex box kontejner (mada, za razliku od donje slike, flex-kontejner bez unutrašnjih elemenata - zapravo bi se skroz 'skupio'):

    Plan - korak #1
    Slika 1. - Plan za izradu formulara za pretragu - korak #1.
  2. unutar nosećeg elementa, postavićemo tekstualno polje i dugme sa ikonom:

    Plan - korak #2
    Slika 2. - Plan za izradu formulara za pretragu - korak #2.
  3. preko leve margine, udaljićemo levu ivicu tekstualnog polja od leve ivice nosećeg elementa:

    Plan - korak #3
    Slika 3. - Plan za izradu formulara za pretragu - korak #3.
  4. zaoblićemo ćoškove na levoj strani nosećeg elementa:

    Plan - korak #4
    Slika 4. - Plan za izradu formulara za pretragu - korak #4.
  5. preko desne margine, udaljićemo desnu ivicu dugmeta od desne ivice nosećeg elementa:

    Plan - korak #5
    Slika 5. - Plan za izradu formulara za pretragu - korak #5.
  6. zaoblićemo ćoškove na desnoj strani nosećeg elementa:

    Plan - korak #6
    Slika 6. - Plan za izradu formulara za pretragu - korak #6.
  7. formular je gotov (a boje su uklonjene): *

    Plan - korak #7
    Slika 7. - Plan za izradu formulara za pretragu - korak #7.

Sada kada znamo 'šta nam je činiti', definisaćemo HTML strukturu i CSS.

* U prvih 6 koraka, plavom i žutom bojom su bile predstavljene granice unutrašnjih elemenata (zarad lakšeg razaznavanja), međutim, elementi neće na kraju biti obojeni.

HTML struktura

HTML struktura formulara za pretragu je jednostavna i podrazumeva tri elementa kojima su pripisane klase (zarad stilizacije preko CSS-a):

		
<form class='pretraga_forma_okvir' method='GET' action='pretraga.php'>
    <input type='text' class='pretraga_forma_tekst'
              name='pretraga_forma_tekst'
              placeholder='Pretraga ....'/>
	<button class='pretraga_forma_dugme' type='submit'>
		<img src='/slike/ikona_pretraga.svg'/>
	</button>
</form>
		
	
Slika 8. - HTML struktura formulara.

Može se reći da korišćenje formulara za pretragu deluje previše "zvanično" (jer, praktično, u članku samo isprobavamo mogućnosti CSS-a), ali, prikazali smo HTML strukturu kakva se inače koristi za formulare preko kojih se (zapravo) pokreće pretraga.

Da pojasnimo i detalje sa kojima se nismo susretali ranije.

Atribut placeholder ....

		
placeholder='Pretraga ....'
		
	
Slika 9. - Atribut placeholder - tekst koji se pojavljuje kada u tekstualnom polju nema korisničkog unosa.

.... 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).

Čim se unese prvi znak, placeholder tekst se automatski briše.

Čim se obriše poslednji znak (među znacima koje je korisnik uneo), placeholder tekst se (ponovo) pojavljuje.

Pogledajmo i CSS kod.

CSS kod

Pseudoklasa placeholder imaće uticaj na sve input elemente (odnosno, na placeholder tekst unutar svih input elemenata).

		
::placeholder{
	color: #888;
}
		
	
Slika 10. - Pseudoklasa placeholder - način da se stilizuje placeholder tekst koji je definisan na prethodnoj slici.

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).

		
.pretraga_forma_okvir {
	display:         inline-flex;
	flex-direction:  row;
	justify-content: flex-start;
	align-items:     stretch;
	height:          36px;
	border:          solid 2px #888888;
	border-radius:   18px;
}
		
	
Slika 11. - CSS kod za okvir formulara.

Visinu ćemo definisati "ručno", a što se tiče bordure i zaobljavanja ćoškova, u pitanju su osnovni elementi modela CSS box (koji su čitaocima poznati još od ranije).

		
.pretraga_forma_tekst {
	width:      120px;
	margin:     0 0 0 16px;
	font-size:  12pt;
	border:     none;
	/*background: blue;*/

	-webkit-transition: width 400ms;
  	transition: width 400ms;
}

.pretraga_forma_tekst:focus{
	width: 240px;
}
		
	
Slika 12. - CSS kod za tekstualno polje (sa pseudoklasom "focus").

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 da je privremeno aktivirate (u nekom momentu), 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):

		
-webkit-transition: width 400ms;
transition:         width 400ms;
		
	
Slika 13. - CSS kod preko koga je definisana jednostavna animaciju širenja i skupljanja tekstualnog polja.

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")

Psihološka istraživanja navode da je 400ms optimalno trajanje tranzicija u grafičkim interfejsima: promena deluje "prijatno na oko" (nije prenagljena), ali, istovremeno je dovoljno brza, pa korisnici takvu radnju neće zapaziti kao nešto što "nepotrebno oduzima vreme".

Što se tiče dugmeta, ukinuli smo pozadinu i borduru, i postavili smo odgovarajuću vrednost desne margine, da bi dugme bilo udaljeno od desne ivice formulara (ponovo, da ne "štrči", i takođe je ponovo 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):

		
.pretraga_forma_dugme {
	background: transparent;
	border: none;
	margin: 0 8px 0 0;
	/*background: green;*/
}
		
	
Slika 14. - CSS kod za dugme preko koga se pokreće pretraga.

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 (u obzir se uzimaju proporcije slike).

Slika koju koristimo takođe ima podrazumevanu borduru (kao i bilo koji drugi <img> element), ali, i u ovom slučaju bordura se ukida preko CSS-a.

		
.pretraga_forma_dugme img {
	width:  24px;
	height: auto;
	border: none;
}
		
	
Slika 15. - CSS kod za sliku koja se prikazuje preko dugmeta (koje služi za pokretanje pretrage).

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 web stranica, koje ćemo obrađivati u tutorijalima koji tek slede, prilično su jednostavni (baš kao i formular koji smo kreirali u ovom članku), dok neki drugi elementi nisu 'skroz jednostavni', ali, što se tiče komplikovanijih primera, 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). :)

Autor članka Nikola Vukićević Za web portal codeblog.rs
Napomena: Tekstovi, slike, web aplikacije i svi ostali sadržaji na sajtu codeblog.rs (osim u slučajevima gde je drugačije navedeno) predstavljaju intelektualnu svojinu autora sajta codeblog.rs i zabranjeno je njihovo korišćenje na drugim sajtovima i štampanim medijima, kao i bilo kakvo drugo korišćenje u komercijalne svrhe, bez eksplicitnog pismenog odobrenja autora.
© 2020-2026. Sva prava zadržana.
Facebook LinkedIn Twitter Viber WhatsApp E-mail
početna > Članci > Tutorijal - Formular za pretragu
codeBlog codeBlog
Sajt posvećen popularizaciji kulture i veštine programiranja.
Napomena: Tekstovi i slike na sajtu codeblog.rs (osim u slučajevima, gde je drugačije navedeno) predstavljaju intelektualnu svojinu autora sajta codeblog.rs i zabranjeno je njihovo korišćenje na drugim sajtovima i štampanim medijima, kao i bilo kakvo drugo korišćenje u komercijalne svrhe, bez eksplicitnog odobrenja autora.
© 2020-2026. Sva prava zadržana.
Facebook - logo
Instagram - logo
LinkedIn - logo
Twitter - logo
E-mail
Naslovna
   •
Uslovi korišćenja
   •
Obaveštenja
   •
FAQ
   •
Kontakt