Imazh

Sprites në CSS

Dizenjuesit janë gjithmonë në kërkim të mënyrave për të rritur interaktivitetin në web, por shpesh e komplikojnë veten më shumë se sa duhet. Duke përdorur Sprites, do ju tregoj sa thjeshtë dhe bukur mund të bëni rollovers në faqen tuaj vetëm me CSS; pa asnjë rresht kod JavaScript. Ju siguroj se rollovers nuk do jenë më në listën tuaj të zezë.

Shkarko Kodin Shiko Demon

Kjo guidë do ju tregojë për perdorimin e një teknike në CSS që përdor Sprites [Anglisht: sprajts] për të arritur qëllimin. Lexoni më tutje për të kuptuar çfarë janë Sprites dhe ku gjejnë përdorim në web.

Çfarë janë Sprites?

Shumë prej jush mund të jenë duke pyetur veten se çfarë janë këto Sprites. Termi vjen nga industria e lojërave dhe është përdorur në mase gjatë viteve 80′ deri në mesin e viteve 90′. Për shkak se hardware-et e atyre viteve nuk kishin fuqinë proçesuese të sotshme, dizenjuesit e lojërave krijonin grafika për pozicione të ndryshme të elementëve të lojës të cilat u vendosnin në vendin e duhur, në momentin e duhur.

Sprite e Mario

Fig. 1 - Sprites te Super Mario

Në Figuren 1 ilustrohen disa Sprites të karakterit Mario në lojën Super Mario. Siç e shihni, Mario paraqitet në pozicione të ndryshme të cilët në lojë ndryshohen për të krijuar lëvizjen, vrapimin, kërcimin, etj.

Me përmirësimin e teknologjisë, sot lojërat krijohen kryesisht në 3D me karaktere të cilët animohen në kohë reale. Megjithatë, shume lojera 2D, sidomos në pajisje më pak të fuqishme (celularët psh) akoma përdorin të njëjtën teknikë.

Po çlidhje kanë Sprites me CSS? A nuk përdoreshin në industrinë e lojërave?!

Edhe pse në pamje të parë duket e çuditshme, Sprites mund të përdoren edhe në CSS. Thelbi është i njëjtë si ai i industrisë së lojërave, pra të gjenerojmë disa grafika të cilat do të përdoren në momente të ndryshme. Një faqe interneti nuk është një lojë që luhet, kështu edhe mundësite për ti përdorur janë të kufizuara. Qëllimi kryesor është rollovers për menu apo elementë të tjerë të faqes që doni të jenë më interaktiv.

Si ti përdorim këto Sprites në CSS?

CSS-ja është një gjuhë formatimi e fuqishme, por edhe e thjeshtë në të njëjtën kohë. Instruksionet që do të përdorim do të jenë të gjitha të njohura për ju, thjeshtë teknika mund të ndryshojë.

Për këtë guidë do të marr si shembull një element menu-je të quajtur “feniksi.com” në 3 gjendjet që dua: Normale, Hover (mouse-i sipër) dhe Down (kur shtypet). Të treja gjendjet i kam futur në një imazh të vetëm të ilustruar më poshtë.

Menuja

Fig. 2 - Elementi menusë në 3 gjendje

Figura 2 përmban të 3 gjendjet e elementit të menusë: Normale (lart), Hover (mes) dhe Down (poshtë). Këtë imazh do ta përdorim në “faqen tonë” duke i ndërruar imazhet me CSS për çdo gjendje. Tani po fillon të duket më tepër si Sprite-i i Marios, apo jo?

Para së të kaloj në kod, mata gjatësinë e një gjendje të menusë e cila është 36px. Të treja gjendjet kanë të njëjtën gjatësi dhe më duhet ta fiksoj këtë sepse është ajo që do na shërbejë.

Fillimisht ndërtojmë kodin html, që do të jetë thjeshtë një element a (anchor) me një id:

<a id="menu" href="#"></a>

Krijojmë një rregull në CSS që permban instruksione të perbashkëta për të treja gjendjet:

a#menu, a#menu:hover, a#menu:active{
     display:block;
     width:165px;
     height:36px;
}

Çfarë bëra është e thjeshtë. Elementi a (anchor) është një element inline (rresht) dhe në këtë rast e duam që të jetë bllok, prandaj dhe kam perdorur display:block. Gjatësia (height) prej 36px do të bëjë që imazhi të prihet në vetëm 36px dhe mos të shfaqet i tëri. Klasat :hover dhe :active janë pseudo-klasa që u drejtohen gjendjeve “mouse-i siper” dhe “aktive”. Pjesën tjetër të funksionalitetit do e rregullojë background.

Para se të kalojme në kod, më duhet t’ju them që mënyra e shkurtuar që kam përdorur për background është:

background: “url e imazhit”, “zhvendosja horizontale”, “zhvendosja vertikale”, “përsëritja”;

Gjendja Normale

a#menu{
     background:url(menu.jpg) 0 0 no-repeat;
}

Nuk besoj se ka gjë për të shpjeguar këtu. Thjeshtë një imazh që nuk ka as zhvendosje vertikale e as horizontale.

Gjendja Hover

a#menu:hover{
     background:url(menu.jpg) 0 -36px no-repeat;
}

I vetmi ndryshim i kësaj gjendje është se zhvendosjen vertikale e kam vënë “-36px”. Vlera është negative në mënyre që imazhi të spostohet lart për të treguar gjendjen tjetër.

Gjendja Down (Active)

a#menu:active{
     background:url(menu.jpg) 0 -72px no-repeat;
}

Ashtu si tek gjendja Hover, edhe këtu kam spostuar imazhin lart me një vlerë negative. Kam perdorur “-72px” që të spostohem në imazhin e fundit e ti kaloj dy imazhet e para. Pra 36+36=72.

I gjithë kodi bashkë:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Sprites ne CSS</title>
<style type="text/css">
a#menu, a#menu:hover, a#menu:active{
     display:block;
     width:165px;
     height:36px;
}

a#menu{
     background:url(menu.jpg) 0 0 no-repeat;
}

a#menu:hover{
     background:url(menu.jpg) 0 -36px no-repeat;
}

a#menu:active{
     background:url(menu.jpg) 0 -72px no-repeat;
}
</style>
</head>
<body>
     <a id="menu" href="#"></a>
</body>
</html>

Perfundimi

Me këtë guidë paksa të gjatë, por besoj jo të komplikuar shpresoj të keni mësuar përdorimin e Sprite-ve. Shpesh herë dizenjuesit e komplikojnë veten duke përdor Javascript për një rollover të thjeshtë, kur egziston alternativa puro CSS. Nëse doni ti coni gjërat në një nivel tjetër, mund edhe të përdorni të njëjtën teknikë së bashku me ndonjë framework për Javascript (si jQuery apo Prototype) për ta animuar efektin. Përdorni imagjinatën…

Mësim të mbarë.

6 Komente

15 Mars 2010
Ora: 02:43:48

Teme shume e dobishme.
Nje ane pozitive e Sprite eshte dhe zvogelimi i kerkesave (requests) ndaj serverit hostues duke zvogeluar keshtu kohen e ngarkimit te faqes. Disa dizenjues jane mesuar te krijojne 3 imazhe per secilen gjendje te butonit (Normale, Hover, Down), pra 3 kerkesa, ndersa duke perdoru Sprite kemi vetem nje kerkese pasi te tre gjendjet e butonit jane ne nje imazh te vetem.

Nje veretje te vogel tek gjendja Hover dhe Down:
Perdorimi i diplay:block;ben qe elementi <a> te shfaqet si div. Koordinatat fillojne X=0; Y=0 nga qoshja majtas-lart; jane pozitive duke levizur djathtas dhe poshte; jane negative duke levizur majtas dhe lart.

Perdormi i vlerave negative tek “zhvendosja vertikale” ben qe imazhi te zhvendoset lart me -36px. Pra gjendja Normale ngjitet lart duke bere te dukshme gjendjen Hover. E njejta llogjike ndiqet dhe per gjendjen Down.  (Përgjigju)

15 Mars 2010
Ora: 02:52:12

Hi Kokushta,
une personalisht jam i ri ne fushen e CSS (kam pak kohe qe kam filluar ti mesoj saktesisht). Edhe kam pare qe disa designer profesionist bejne te gjithe figurat e faqes ne 1 Sprite te vetme. Pra bejne nje dokument te madh edhe fusin te gjith figurat. Kjo si the ti nornalisht eshte nje Plus i madh per serverin qe duhet te ngarkoj vetem 1 dokument por sipas mendimit tim nje minus per perdoruesin e thjeshte qe merr dokumentin nga Webmaster. Sepse besoj shume pak veta do ishin te afte te punonim me Photoshop e te modifikonin figuren e vetme e te gjeneronin nje te re :)
Megjithese per faqe statike qe figurat nuk mendohet te ndryshojne eshte mire te perdoret kjo menyre :)   (Përgjigju)

15 Mars 2010
Ora: 03:15:46

Nje arsye me shume per publikuar sa me shume tutoriale Photoshop-i. :)

Hi Kokushta,
une personalisht jam i ri ne fushen e CSS (kam pak kohe qe kam filluar ti mesoj saktesisht). Edhe kam pare qe disa designer profesionist bejne te gjithe figurat e faqes ne 1 Sprite te vetme. Pra bejne nje dokument te madh edhe fusin te gjith figurat. Kjo si the ti nornalisht eshte nje Plus i madh per serverin qe duhet te ngarkoj vetem 1 dokument por sipas mendimit tim nje minus per perdoruesin e thjeshte qe merr dokumentin nga Webmaster. Sepse besoj shume pak veta do ishin te afte te punonim me Photoshop e te modifikonin figuren e vetme e te gjeneronin nje te re
Megjithese per faqe statike qe figurat nuk mendohet te ndryshojne eshte mire te perdoret kjo menyre   

  (Përgjigju)

15 Mars 2010
Ora: 10:51:10

Hi Kokushta.

Verejtja jote eshte e drejte dhe tani po e kuptoj qe menyra si e kam shprehur eshte ngaterruese. Elementi shfaq nje imazh qe ndodhet me poshte (prandaj dhe e kam shkruar ashtu), por ne te vertete imazhi ngjitet lart. Thnx per sqarimin.

Sa i perket Sprites, jane vertete nje zgjidhje e mire per disa arsye. Ju permendet numrin e reqeusts, por me duhet te shtoj aksesueshmerine dhe mos ngarkimin e kote me JavaScript. Pa llogaritur qe koduesit pa eksperience nuk shkruajne JavaScript unobtrusive qe e ben te veshtire degradimin nese JS eshte i caktivizuar.

Kam ne plan edhe te pakten 2 guida te tjera per Sprites ku do te tregoj disa teknika shume te lezetshme me JQuery. Stay tuned :)   (Përgjigju)

15 Mars 2010
Ora: 11:31:54

Shume i dobishem,

Faleminderit, kemi nevoje per te tjera mesime dhe tutoriale rreth css dhe sprite’s :)   (Përgjigju)

19 Korrik 2010
Ora: 02:03:52

Tutorial mjaft i mire…Vazhdoni keshtu  (Përgjigju)

Jepni Mendimin Tuaj

* Emri, Emaili edhe Komenti janë të detyrueshme

Nëse doni të qëndroni gjithmonë të informuar rreth lajmeve që postohen në faqen tonë, pa pasur nevojë që të hyni përdit këtu, ne ju këshillojmë të abonoheni me E-mail.
Ne e urrejmë SPAM-in kështu që mund të regjistroheni pa problem. Ne ju premtojmë që do të merrni E-mail vetëm atëher kur të ketë postime të reja.

RSS Feeds E-Mail:

Shkruaj në Feniksi!

Ne paguajmë nëse ju shkruani një tutorial dhe publikohet tek faqja jonë.

Mëso më Shumë

MG ARTs WpAlb.com ShqipAD Webmaster.AL Host.AL Reklamo

Përkufizime Teknike

Pixel: Monitori i një kompjuteri dhe fotot dixhitale përbehen nga miliona pika pse Pixel. Numri i pikave jepet zakonisht më një numër çift si 1280 x 1024 (horizontal x vertikal). Sa më i madh të jetë ky numër Pixelash aq më shumë detaje shfaqen në monitor apo fotografi.

Quize

Ju jeni këtu: Faqja Kryesore » Sprites në CSS FillimShko në fillim

Info Info mbi Feniksi

Feniksi.Com është një faqe e cila përmban tutoriale të ndryshme mbi webdesign, programimi, grafik, këshilla mbi ndërtimin e faqeve e shumë gjëra të tjera. Për ne nuk është e thjeshtë ta shpjegojmë me disa fjalë, kështu që jua lejmë juve këtë gjë. Nëse keni ndonjë sugjerim për faqen apo ndonjë këshillë përmirësimi, ju lutem na kontaktoni.