Koja se oznaka koristi za integraciju grafike? Skalabilna vektorska grafika u HTML5

Osnovni koncepti i upotreba

Format skalabilne vektorske grafike (SVG) dio je porodice standarda vektorske grafike. Vektorska grafika se razlikuje od rasterske grafike, u kojoj je definicija boje svakog piksela pohranjena u nekom nizu podataka. Najčešći rasterski formati koji se danas koriste na Internetu su JPEG, GIF i PNG, od kojih svaki ima svoje prednosti i nedostatke.

Često korištene skraćenice
  • CSS: Kaskadni listovi stilova
  • GIF: Format za razmjenu grafike
  • GUI: Grafičko korisničko sučelje
  • HTML: jezik za označavanje hiperteksta
  • JPEG: Zajednička grupa stručnjaka za fotografiju
  • PNG: prijenosna mrežna grafika
  • SVG: skalabilna vektorska grafika
  • XML: Extensible Markup Language

SVG format ima nekoliko prednosti u odnosu na bilo koji rasterski format:

  • SVG grafika je kreirana korišćenjem matematičkih formula koje zahtevaju mnogo manje podataka za skladištenje u originalnoj datoteci jer nema potrebe da se pohranjuju podaci za svaki pojedinačni piksel.
  • Vektorske slike bolje se mijenjaju. Pokušaj skaliranja slika objavljenih na mreži iznad njihove originalne veličine može rezultirati izobličenim (ili pikseliziranim) slikama.

    To je zato što su originalni pikselski podaci dizajnirani za određenu veličinu slike. Prilikom promjene veličine, renderer slike pretpostavlja koje podatke treba koristiti za popunjavanje novih piksela. Vektorske slike su otpornije na skaliranje; Prilikom promjene veličine slike moguće je podesiti odgovarajuće matematičke formule.

  • Veličina izvorne datoteke vektorske grafike je obično manja, tako da se SVG grafika učitava brže od svojih rasterskih kolega i manje zahtijeva podatke.
  • SVG slike se prikazuju u pretraživaču i mogu se prikazati programski. Mogu se dinamički mijenjati, što ih čini posebno pogodnim za aplikacije vođene podacima kao što su grafikoni.
  • Originalni SVG slikovni fajl je u tekstualnom obliku, što ga čini pristupačnim i pogodnim za pretraživače.

U ovom članku ćete naučiti o prednostima SVG formata i kako vam oni mogu pomoći da napravite HTML5 web stranice.

SVG Basics

Kreiranje SVG grafike koristi potpuno drugačiji proces od kreiranja JPEG, GIF ili PNG datoteka. JPEG, GIF i PNG datoteke se obično kreiraju pomoću neke vrste programa za uređivanje slika, kao što je Adobe Photoshop. SVG slike se obično kreiraju pomoću neke vrste jezika zasnovanog na XML-u. Postoje grafički korisnički interfejsi za uređivanje SVG grafike koji će za vas generisati XML kod iza slike. Međutim, ovaj članak pretpostavlja da radite direktno s XML-om. Informacije o SVG programima za uređivanje slika možete pronaći u odjeljku.

Listing 1 prikazuje primjer jednostavne SVG XML datoteke koja crta crveni krug sa crnim okvirom od 2 piksela.

Listing 1. SVG XML datoteka

Gornji kod proizvodi sliku prikazanu na slici 1.

Slika 1. Crveni krug sa crnim okvirom od 2 piksela

Kreiranje osnovnih geometrijskih oblika

Kada radite sa SVG grafikom, XML oznake se koriste za kreiranje geometrijskih oblika; ovi XML elementi su prikazani u tabeli 1.

Tabela 1. XML elementi za kreiranje SVG grafike

linijski element

Element linije je najjednostavniji grafički element. Listing 2 pokazuje kako se kreira horizontalna linija.

Listing 2. Kreiranje horizontalne linije

Kod prikazan na Listingu 2 proizvodi sliku prikazanu na slici 2.

Slika 2. Jednostavna horizontalna linija

SVG korijenska oznaka ima atribute širine i visine koji definiraju područje za crtanje. Ovi atributi djeluju na isti način kao atributi visine i širine drugih HTML elemenata. U ovom slučaju se utvrđuje da radna površina zauzima sav raspoloživi prostor.

Dodatno, ovaj primjer koristi oznaku stila. SVG grafika podržava primenu stilova na sadržaj koristeći širok spektar metoda. Stilovi u ovom članku uključeni su kako bi slike bile lake za uočavanje ili kada su određeni atributi, kao što su boja i širina linije, potrebni za prikazivanje crteža. Više informacija o primeni stilova u SVG grafici možete pronaći u odeljku.

Definiciju linije možete kreirati tako što ćete odrediti početne i krajnje koordinate na X i Y osi u odnosu na radni prostor. Atributi x1 i y1 predstavljaju početne koordinate, a x2 i y2 atributi predstavljaju krajnje koordinate linije. Da biste promijenili smjer crtanja linije, jednostavno morate promijeniti koordinate. Na primjer, modifikacijom prethodnog primjera, možete kreirati dijagonalnu liniju kao što je prikazano na Listingu 3.

Listing 3. Kreiranje dijagonalne linije

Slika 3 prikazuje izlaz koda prikazanog na Listingu 3.

Slika 3. Dijagonalna linija

element poliline

Izlomljena linija je crtež sastavljen od nekoliko linija. Listing 4 pokazuje primjer kreiranja crteža koji izgleda kao stepenice stepenica.

Kod na Listingu 4 proizvodi sliku prikazanu na slici 4.

Polilinija se kreira korištenjem atributa točke i definiranjem parova X i Y koordinata odvojenih zarezima. U prikazanom primeru, prva tačka je definisana kao 0,40, gde je 0 koordinata X, a 40 Y koordinata, međutim, jedan skup tačaka nije dovoljan za prikaz slike na ekranu, pošto ovaj skup govori samo o SVG-u prikazati početnu poziciju. Potrebna su vam najmanje dva skupa tačaka: početna i krajnja tačka (na primjer, tačke="0,40 40,40").

Kao i kod crtanja jednostavnih linija, linije ne moraju biti strogo horizontalne ili vertikalne. Ako promijenite vrijednosti iz prethodnog primjera, možete dobiti nepravilne oblike napravljene od linija, kao u Listingu 5.

Listing 5. Kreiranje nazubljene linije

Kod na Listingu 5 proizvodi sliku prikazanu na slici 5.

Slika 5. Nazubljena linija

rect element

Da biste kreirali pravougaonik, samo trebate definirati njegovu širinu i visinu, kao što je prikazano u Listingu 6.

Listing 6. Kreiranje pravokutnika

Kod na Listingu 6 proizvodi sliku prikazanu na slici 6.

Slika 6. Pravougaonik

Rect tag se također može koristiti za kreiranje kvadrata; kvadrat je jednostavno pravougaonik iste visine i širine.

element kruga

Krug je kreiran definisanjem X i Y koordinata centra i radijusa kruga, kao što je prikazano u Listingu 7.

Listing 7. Kreiranje kruga

Kod na Listingu 7 proizvodi sliku prikazanu na slici 7.

Slika 7. Krug

Atributi cx i cy određuju položaj centra kruga u odnosu na platno. Budući da je radijus polovina širine kruga, kada ga određujete, imajte na umu da će ukupna širina slike biti dvostruko veća od vrijednosti koju navedete.

Element elipsa

U suštini, elipsa je krug sa dva radijusa navedena u kodu, kao što je prikazano u Listingu 8.

Listing 8. Kreiranje elipse

Kod na Listingu 8 proizvodi sliku prikazanu na slici 8.

Slika 8. Elipsa

U ovom slučaju, atributi cx i cy također definiraju koordinate centra u odnosu na platno. Međutim, pomoću elipse definirate jedan polumjer za os X, a drugi radijus za Y-os koristeći atribute rx i ry.

element poligona

Poligon je geometrijska figura koja sadrži najmanje tri strane. Listing 9 stvara jednostavan trokut.

Listing 9. Kreiranje trougla

Kod na Listingu 9 proizvodi sliku prikazanu na slici 9.

Slika 9. Trougao

Slično kao u radu sa elementom polilinije, poligoni se kreiraju definisanjem parova X i Y koordinata koristeći atribut point.

Dodavanjem parova koordinata duž X i Y osi, možete kreirati poligone s bilo kojim brojem strana. Na primjer, modifikacijom koda u prethodnom primjeru, možete kreirati četverostrani poligon, kao što je prikazano na Listingu 10.

Listing 10. Kreiranje četverostranog poligona

Kod prikazan na Listingu 10 proizvodi sliku prikazanu na slici 10.

Slika 10. Četvorostrani poligon

Koristeći poligon tag, možete kreirati i geometrijske oblike složenih oblika. Listing 11 stvara crtež zvijezde.

Listing 11. Kreiranje zvijezde

Kod na Listingu 11 proizvodi sliku prikazanu na slici 11.

Slika 11. Zvjezdani poligon

element putanje

Element putanje je najkompleksniji od svih elemenata crteža, koji vam omogućava da kreirate proizvoljne crteže pomoću skupa posebnih naredbi. Element putanje podržava komande navedene u tabeli 2.

Tablica 2. Naredbe koje podržava element staze

Ove naredbe se mogu koristiti velikim ili malim slovima. Ako je naredba navedena velikim slovima, primjenjuje se apsolutno pozicioniranje. Ako se koristi naredba malim slovima, primjenjuje se relativno pozicioniranje. Navođenje primjera korištenja svih naredbi je izvan okvira ovog članka. Međutim, ispod je nekoliko primjera koji pokazuju osnove korištenja ovih naredbi.

Koristeći element putanje, možete kreirati bilo koje jednostavne geometrijske oblike iz prethodnih primjera u ovom članku. Listing 12 koristi element putanje za kreiranje pravilnog trokuta.

Listing 12. Kreiranje trokuta pomoću elementa putanje

Kod na Listingu 12 proizvodi sliku prikazanu na slici 12.

Slika 12. Trokut kreiran pomoću elementa putanje

Lista naredbi je definirana pomoću atributa d. U ovom primjeru, crtanje počinje u tački s koordinatama X 150 i Y 0, definiranim naredbom za pomicanje u tačku (M150 0). Zatim koristite naredbu da nacrtate liniju do tačke (L75 200). crta se linija do tačke sa koordinatama X = 75 i Y = 200. Nakon toga, druga linija se iscrtava drugom komandom za crtanje linije do tačke (L225 200). Konačno, obrazac se zatvara pomoću komande za ugrađivanje (Z). Komandu Z ne prate nikakve koordinate, jer da biste zatvorili putanju, po definiciji, povlačite liniju od trenutne pozicije nazad do početne tačke crteža (u ovom slučaju, tačka sa koordinatama X = 150, Y = 0).

Svrha navedenog primjera je bila da vam pokaže koncept; Ako samo treba da kreirate običan trougao, bolje je da koristite oznaku poligona.

Prava moć elementa putanje je njegova sposobnost da kreira prilagođene oblike, kao što je prikazano u Listingu 13. Ovaj primjer je preuzet iz dokumenta World Wide Web Consortium (W3C). Skalabilna vektorska grafika (SVG) 1.1 (2. izdanje)(vidi odjeljak).

Listing 13. Kreiranje prilagođenog oblika pomoću elementa putanje

Kod prikazan na listi 13 proizvodi sliku prikazanu na slici 13.

Slika 13. Prilagođeni oblik kreiran pomoću elementa putanje

Element putanje se može koristiti za kreiranje složenih dizajna kao što su dijagrami i krivudave linije. Imajte na umu da navedeni primjer koristi višestruke elemente putanje. Kada kreirate crteže, niste ograničeni ni na jedan element crteža u SVG root oznaci.

Filteri i gradijenti

Pored osnovnih CSS stilova koji su korišćeni u mnogim gornjim primerima, SVG grafika takođe podržava upotrebu filtera i gradijenata. U ovom odeljku ćete naučiti kako da primenite filtere i gradijente na SVG slike.

Filteri

Filteri se mogu koristiti za primjenu specijalnih efekata na SVG slike. SVG podržava sljedeće filtere.

  • feBlend
  • feColorMatrix
  • feComponentTransfer
  • feComposite
  • feConvolveMatrix
  • feDiffuseLighting
  • feDisplacementMap
  • feFlood
  • feGaussianBlur
  • feImage
  • feMerge
  • feMorphology
  • feOffset
  • feSpecularLighting
  • feTile
  • feTurbulence
  • feDistantLight
  • fePointLight
  • feSpotLight

Listing 14 stvara efekat sjene koja se primjenjuje na pravougaonik.

Listing 14. Kreiranje efekta sjene za pravougaonik

Kod prikazan na listi 14 proizvodi sliku prikazanu na slici 14.

Slika 14. Efekat sjene za pravougaonik

Filteri su definirani unutar def elementa (skraćeno od “definicija”). Filteru u ovom primjeru je dodijeljen identifikator (id) "f1". Sama oznaka filtera ima atribute za definiranje X i Y koordinata, kao i širinu i visinu filtera. Unutar oznake filtera koristite potrebne elemente filtera i postavljate njihova svojstva na željene vrijednosti.

Kada je filter definisan, povezujete ga sa određenim crtežom koristeći atribut filtera, kao što je prikazano u . Postavite url vrijednost na vrijednost atributa id koja je dodijeljena filteru.

Gradijent

Gradijent predstavlja postepeni prijelaz iz jedne boje u drugu. Postoje dvije glavne vrste gradijenata: linearni i radijalni. Tip primijenjenog gradijenta određen je elementom koji koristite. Sljedeći primjeri pokazuju kako primijeniti linearne i radijalne gradijente na elipsu.

Listing 15 stvara elipsu sa linearnim gradijentom.

Listing 15. Kreiranje elipse sa linearnim gradijentom

Kod prikazan na listi 15 proizvodi sliku prikazanu na slici 15.

Slika 15. Elipsa sa linearnim gradijentom

Listing 16 stvara elipsu sa radijalnim gradijentom.

Listing 16. Kreiranje elipse s radijalnim gradijentom

Kod prikazan na listi 16 proizvodi sliku prikazanu na slici 16.

Slika 16. Elipsa sa radijalnim gradijentom

Gradijent, kao i filteri, definisani su unutar def elementa. Svakom gradijentu je dodijeljen identifikator (id). Atributi gradijenta (kao što su boje) se postavljaju unutar oznake gradijenta pomoću stop elemenata. Da biste primijenili gradijent na sliku, postavite vrijednost url atributa fill na identifikator (id) željenog gradijenta.

Tekst i SVG

Pored kreiranja osnovnih geometrijskih oblika, SVG se takođe može koristiti za generisanje teksta, kao što je prikazano u Listingu 17.

Listing 17. Kreiranje teksta koristeći SVG
Volim te SVG

Kod prikazan na Listingu 17 proizvodi sliku prikazanu na slici 17.

Slika 17. Tekst kreiran sa SVG

Ovaj primjer kreira I love SVG rečenicu koristeći element teksta. Kada koristite element teksta, stvarni prikazani tekst je između početnog i završnog elementa teksta.

Možete prikazati tekst duž različitih osa, pa čak i duž putanja. U Listingu 18, tekst je prikazan u obliku luka.

Listing 18. Kreiranje teksta duž putanje u obliku luka
Volim SVG Volim SVG

Kod prikazan na listi 18 proizvodi sliku prikazanu na slici 18.

Slika 18. Tekst postavljen duž putanje u obliku luka

Ovaj primjer dodaje dodatni XML prostor imena, xlink, u SVG root oznaku. Putanja koja se koristi za luk teksta kreirana je unutar def elementa, tako da se sama putanja ne prikazuje na crtežu. Prikazani tekst je ugniježđen unutar elementa textPath, koji koristi prostor imena xlink za upućivanje na id željene putanje.

Kao i kod druge SVG grafike, možete primijeniti filtere i gradijente na tekst. Listing 19 primjenjuje filter i gradijent na tekst.

Listing 19. Kreiranje teksta sa filterom i gradijentom
Volim SVG Volim SVG

Kod prikazan na listi 19 proizvodi sliku prikazanu na slici 19.

Slika 19. Tekst sa filterom i gradijentom

Dodavanje SVG XML koda na web stranice

Kada se SVG XML kreira, može se uključiti u HTML stranice na nekoliko načina. Prvi metod je direktno umetanje SVG XML-a u HTML dokument, kao što je prikazano u Listingu 20.

Listing 20. Direktno umetanje SVG XML-a u HTML dokument
Ugrađeni SVG

Ova metoda je vjerovatno najjednostavnija, ali ne potiče ponovnu upotrebu. Zapamtite da SVG XML može biti sačuvan kao datoteka sa ekstenzijom .svg. Kada sačuvate SVG grafiku kao .svg datoteku, možete koristiti elemente za ugrađivanje, objekt i iframe da biste je uključili u web stranice. Listing 21 prikazuje kod za ugrađivanje SVG XML datoteke pomoću elementa za ugrađivanje.

Listing 21. Uključujući SVG XML fajl pomoću elementa za ugrađivanje

Listing 22 prikazuje kod za uključivanje SVG XML datoteke pomoću elementa objekta.

Listing 22. Uključivanje SVG XML datoteke pomoću elementa objekta

Listing 23 prikazuje kod za uključivanje SVG XML datoteke pomoću iframe elementa.

Listing 23. Uključujući SVG XML fajl koristeći iframe element

Pomoću jednog od ovih metoda možete uključiti istu SVG grafiku na više stranica i ažurirati je uređujući originalnu .svg datoteku.

Zaključak

Ovaj članak pokriva osnove kreiranja grafike pomoću SVG formata. Naučili ste da koristite ugrađene geometrijske elemente za kreiranje osnovnih geometrijskih oblika, kao što su linija, pravougaonik, krug i tako dalje. Takođe ste naučili kako da koristite element putanje za kreiranje složenih dizajna izdavanjem niza naredbi. kao što je kretanje do tačke, crtanje linije do tačke i crtanje luka do tačke. Ovaj članak vas takođe uči kako da primenite filtere i gradijente na SVG grafiku, uključujući grafiku sa tekstom, i kako da uključite SVG grafiku u HTML stranice.

Postoji oznaka za uključivanje slike na određenoj lokaciji na stranici. . Ova oznaka ima obavezan parametar: SRC="", i nekoliko opcionih. SRC="" parametar govori pretraživaču adresu na kojoj treba tražiti grafiku, a vrijednost bi trebala biti URL resursa na kojem se grafička datoteka nalazi. U najjednostavnijem slučaju, ova datoteka će biti smještena u korijenski direktorij ili IMG folder vaše stranice. Opcioni parametri:

Parametar ALT="" kao vrijednost sadrži natpis koji govori o sadržaju slike za one posjetioce čiji pretraživači ne podržavaju grafiku ili rade u grafičkom disabled modu. Isti natpis se pojavljuje kada pređete mišem preko slike.

Parametri WIDTH="" HEIGHT="" kao vrijednosti imaju dimenzije slike u širini i visini u pikselima. Preporučljivo je navesti ove parametre u kodu stranice kako bi pretraživač unaprijed ostavio prostor za sliku, a zatim će se pri učitavanju stranica manje „trzati“. Osim toga, ovi parametri se mogu koristiti za podešavanje veličine slike u prozoru pretraživača.

Parametar BORDER="" crta ivicu oko slike. Vrijednost je broj koji označava širinu okvira u pikselima.

Parametar ALIGN= određuje položaj slike na stranici i može uzeti vrijednosti TOP - poravnava gornju ivicu slike sa najvišim elementom tekuće linije, TEXTTOP - poravnava gornju ivicu slike sa najviši tekstualni element tekuće linije, MIDDLE - poravnava sredinu slike sa osnovnom linijom tekuće linije, ABSMIDDLE - poravnava sredinu slike sa sredinom tekuće linije. BASELINE ili BOTTOM - poravnava donju ivicu slike sa osnovnom linijom tekuće linije, ABSBOTTOM - poravnava donju ivicu slike sa donjom ivicom trenutne linije, HSPACE= - određuje horizontalnu uvlaku, VSPACE= - određuje vertikalna uvlaka.

Sintaksa oznake:

Ticker

Tekuća linija je određena oznakom .

Atributi ove oznake su bgcolor - boja pozadine tekuće linije, visina - visina linije, širina - širina linije.

Smjer - postavlja smjer kretanja puzeće linije - direction="lijevo" (desno, gore, dolje) - kretanje lijevo (desno, gore, dolje).

Ponašanje - ponašanje linije - ponašanje="scroll" (slajd, alternativno). Scroll - normalno pomicanje (ne morate ga specificirati, to je zadano)



Klizanje - skrolovanje sa zaustavljanjem, linija ide do ivice i zaustavlja se. Ako koristite parametar petlje istovremeno sa behavor="slide", linija će se pomicati postavljeni broj puta i zaustaviti se na rubu. Alternativno - linija će se pomicati od ruba do ruba.
Scrollamount - brzina kretanja linije, scrollamount="1". Može imati vrijednosti od 1 do 10. 1 je najsporije kretanje, 10 je najbrže.

Sintaksa oznake: tekst

Moderni web pretraživači mogu reproducirati video i audio datoteke u različitim formatima. Da bi to učinili, koriste ugrađene plejere (dodatak, ActiveX kontrole) ili eksterne programe za reprodukciju. Možete umetnuti zvuk ili video u HTML dokument koristeći različite oznake:

- za umetanje pozadinskog zvuka;

- za umetanje video zapisa u AVI formatu;

- za umetanje zvučnih i video datoteka;

- za umetanje audio i video fajlova.

Kada odlučite da umetnete audio i/ili video u HTML dokument, imajte na umu da su odgovarajuće datoteke prilično velike. Najpopularniji fajlovi na Internetu sada su MP3, WMA, AIFF, AU, RealAudio (sa ra i ram ekstenzijama), MP4, MIDI audio fajlovi i MPEG, MOV video formati. WAV audio format i AVI video format se rijetko koriste na Internetu.

(Pregledni članak nakon konferencije o razvoju softvera u Jekaterinburgu i druge prezentacije. Video verzija izvještaja u Jekaterinburgupogledajte na techdays.ru )

Šta su HTML5 Canvas i SVG?

HTML5 Canvas

– element je platno za crtanje rasterske grafike. U stvari, to je prazan blok zadanih dimenzija na koji možete crtati koristeći posebne API-je za JavaScript.

API uključuje 45 specijalnih metoda i 21 atribut koji se koristi za prikaz grafičkih primitiva, postavljanje stilova, transformacije, pristup pojedinačnim pikselima i projektovanje slika i video zapisa.

Sebe element je definiran direktno u HTML5 specifikaciji. API za to je opisan u posebnom dokumentu - HTML Canvas 2D Context.

SVG

Muzika može biti zabavna

Prekrasna igra muzičke i grafičke vizualizacije (http://musiccanbefun.edankwan.com/).

Primjeri dijagrama u SVG-u

Dijagram ljudskog skeleta, periodični sistem hemijskih elemenata i respiratorni sistem (http://ie.microsoft.com/testdrive/Graphics/RealWorldDataAndDiagrams/Default.xhtml).

Yandex Maps

Bliži primjer iz stvarnog života je crtanje ruta koristeći SVG (ako ga pretraživač podržava). Pogledajte i razgovor “Mape i SVG” iz našeg HTML5 kampa.

Više primjera:

  • Beauty of the Web http://www.beautyoftheweb.com/ – stvarne stranice iz stvarnog svijeta
  • Dev: unplugged http://contest.beautyoftheweb.com/ – projekti koji učestvuju u konkursu za HTML5 aplikacije

Razlika između Canvasa i SVG-a

U različitim scenarijima, ili Canvas ili SVG mogu biti prikladniji za dinamičko grafičko prikazivanje - vratit ćemo se na ovo pitanje na kraju. Za sada, pogledajmo ključne razlike između jednog i drugog:

Platno SVG
Format Raster Vector
Skaliranje
Pristup

Individualni pristup pikselima (RGBA)

Pristup pojedinačnim elementima (DOM)

Indeksabilnost i dostupnost

Vidljiv je samo konačni raster (ne možete odabrati oblike, tekst, itd.) - loše za Pristupačnost

Možete vidjeti strukturu (na primjer, izvući sav tekst)

Stilizacija

Vizuelni stilovi se postavljaju prilikom renderovanja preko API-ja

Vizuelni stilovi su postavljeni atributima, možete uključiti CSS

Programiranje

JS API za rad sa primitivima

DOM za rad sa elementima

Ažuriraj

Za ažuriranje - precrtavanje ili potpuno ponovno crtanje

Moguće je mijenjati pojedinačne elemente

Događaji

Ne postoji jednostavan način za rukovanje događajima miša. Objekti ispod kursora moraju se ručno identificirati.

Događaji miša se lako šalju preko DOM-a i automatski obrađuju.

Integracija koda

JS kod odvojen od Canvasa

Možete uključiti JS unutra

Ove razlike se moraju uzeti u obzir kada se koristi jedna ili druga tehnologija za vizualizaciju podataka. Na primjer, crtanje grafa funkcije može biti lakše sa Canvas-om, dok je prikazivanje savjeta (prepoznavanje objekta ispod pokazivača miša) lakše sa SVG-om.

U praksi, međutim, već postoji niz gotovih biblioteka za vizualizaciju podataka koje djelimično neutrališu ove razlike.

Neću ulaziti u osnove rada sa svakom od tehnologija kao uvod, preporučujem izvještaj Vadima Makeeva (Opera) sa HTML5 kampa „Dinamička grafika: Canvas i SVG“.

Pogledajte i izvještaje MIX 2011:

Obrada slika pomoću platna

Jedna od značajnih karakteristika Canvas-a je da ova tehnologija pruža piksel po piksel pristup prikazanim podacima i omogućava vam da projektujete različite grafičke elemente, uključujući video, na platno.

Dobar primjer gdje je to potrebno je zadatak obrade/analize slike.

Processing.js nudi dva pristupa opisivanju vizualizacije: srednji kod, koji dalje analizira sama biblioteka (u zasebnom fajlu ili unutar stranice) i eksplicitni JavaScript kod.

Na primjer, da nacrtate fraktal Mandelbrotovog skupa, možete koristiti i opciju naznačenu na stranici s odgovarajućim primjerom i sljedeći JavaScript kod:

var xmin = -2,5; var ymin = -2; var wh = 4; funkcija sketchProc(processing) ( Processing.setup = funkcija () ( Processing.size(200, 200); Processing.noLoop(); ); Processing.draw = function () ( Processing.loadPixels(); var maxiterations = 200; var xmax = xmin + wh var ymax = ymin + wh;< processing.height; j++) { var x = xmin; for (var i = 0; i < processing.width; i++) { var a = x; var b = y; var n = 0; while (n < maxiterations) { var aa = a * a; var bb = b * b; var twoab = 2.0 * a * b; a = aa - bb + x; b = twoab + y; if (aa + bb >16.0) (prekid ; ) n++; ) if (n == maksiteracije) process.pixels.setPixel(i+j*processing.width, 0); ostalo process.pixels.setPixel(i+j*processing.width, processing.color(n*16 % 255)); x += dx; ) y += dy; ) process.updatePixels(); ); ) var canvas = document.getElementById("myCanvas"); var p = nova obrada(platno, sketchProc);

Možete i sami isprobati ovdje: http://silverbook.ru/projects/html5datavisualization/demo3-processingjs.htm (kopirajte kod, zalijepite ga u konzolu i izvršite).

JavaScript InfoVis Toolkit (JIT)

Za prikaz podataka, JIT uzima sirove vrijednosti kao JSON:

var json = ( "oznaka" : ["oznaka A", "oznaka B", "oznaka C", "oznaka D" ], "vrijednosti" : [ ( "oznaka" : "datum A", "vrijednosti": ) , ( "oznaka" : "datum B" , "vrijednosti" : ), ( "oznaka" : "datum E" , "vrijednosti" : ), ( "oznaka" : "datum F" , "vrijednosti" : ), ( "label" : "datum D" , "vrijednosti" : ), ( "label" : "datum C", "vrijednosti" : )] ); var pieChart = new $jit.PieChart(( injectInto: "infovis" , animate: true , offset: 30, sliceOffset: 0, labelOffset: 20, tip: "stacked:gradient" , showLabels:true , resizeLabels: 7, Label: ( tip: "Native" , veličina: 20, porodica: "Arial" , boja: "white" ), Savjeti: ( omogućiti: true , onShow: funkcija (tip, elem) ( tip.innerHTML = " " + elem.name + ": " + elem.value; ) ) ));

samo pozovite renderiranje:

PieChart.loadJSON(json);

jQuery Sparklines

Vizualizacija na mapi koristeći SVG

Pređimo na SVG i počnimo s jednostavnim primjerom. Zamislite da trebate prikazati neke podatke na mapi regija, koji je najlakši način da to učinite?

Ako imate gotovu kartu u obliku SVG (mapu Rusije sam uzeo sa web stranice Wikipedije), onda se to radi vrlo jednostavno - dovoljno je da svaka regija ima svoj jedinstveni ID unutar SVG dokumenta, onda umetnite mapu kao inline svg i obojite je jednostavnim kodom u željenu boju:

var SverdlovskOblast = document.getElementById("SverdlovskOblast" ); SverdlovskOblast.style.fill = "#fe3300" ;

Ako uradite istu stvar u petlji, tada možete obojiti ne samo područje, već cijelu regiju ili čak cijelu zemlju:

var data = [(id: "KurganOblast" , vrijednost: 30), (id: "SverdlovskOblast" , vrijednost: 200), (id: "TyumenOblast" , vrijednost: 75), (id: "KhantiaMansia" , vrijednost: 100 ), (id: "YamaloNenetsAutDistrict" , vrijednost: 20), (id: "ChelyabinskOblast" , vrijednost: 150)]; za (var i = 0; i< data.length; i++) { var item = data[i]; var region = document.getElementById(item.id); region.style.fill = RGBtoHex(item.value, 0, 0); }

Biblioteke za vizualizaciju podataka koristeći SVG

Kao što sam već rekao, i Canvas i SVG su pogodni za rješavanje tradicionalnog problema vizualizacije numeričkih podataka u obliku grafikona i grafikona. U oba slučaja, to se može prilično lako učiniti korištenjem odgovarajućih biblioteka.

Već smo pogledali primjere sa Canvas-om, pogledajmo sada nekoliko biblioteka za rad sa SVG-om. (Ovo također nije potpuna lista, već prilično kvalitetna i popularna rješenja.)

Raphael

Za dodavanje jednostavnog tortnog grafikona dovoljan je sljedeći kod:

var r = Raphael("grafikon", 640, 480); var pie = r.g.piechart(320, 240, 100, );

Uz nekoliko dodatnih koraka možete dodati legendu, natpise grafikona i interaktivne opise alata:

var r = Raphael("grafikon", 640, 480); r.g.txtattr.font = "12px "Fontin Sans", Fontin-Sans, sans-serif"; r.g.text(320, 100, "Interaktivni tortni grafikon" ).attr(("font-size" : 20)); var pie = r.g.piechart(320, 240, 100, ,
(legenda: ["%%.%% – Poslovni korisnici" , "IE korisnici" ], legenda: "zapad" ,
href: ["http://raphaeljs.com" , http://g.raphaeljs.com]});
pie.hover(function () (ovaj .sector.stop(); ovaj .sector.scale(1.1, 1.1, ovaj .cx, ovaj .cy); if (ova .oznaka) (ova .label.stop(); this .label.scale(1.5 this .label.attr("font-weight" : 800) ) ), function () ( this .sector.animate((scale: ), 500, "bounce"); (ova .label) (ova .label.animate((skala: 1), 500, "bounce" ); ovo .label.attr(("font-weight" : 400)); ) ));

Druge vrste grafikona mogu se proizvesti na sličan način koristeći odgovarajuće metode. Pogledajte primjere direktno na stranici proširenja http://g.raphaeljs.com/

Highcharts JS

API biblioteke olakšava generiranje grafikona koristeći podatke u JSON-u:

var chart1 = novi Highcharts.Chart(( grafikon: ( renderTo: "charts" , defaultSeriesType: "bar"), title: (tekst: "Potrošnja voća"), xAxis: ( kategorije: ["Jabuke" , "Banane" , "Narandže" ]), yAxis: ( naslov: ( tekst: "Voće jedeno" ) ), serija: [( ime: "Jane" , podaci: ), ( ime: "John" , podaci: )] ));

Uz malo složeniju skriptu, možete odrediti dodatne detalje, na primjer, prikazati legendu, konfigurirati opise alata:

var chart = new Highcharts.Chart(( grafikon: ( renderTo: "charts" , defaultSeriesType: "area" , proredBottom: 30 ), title: ( tekst: "Potrošnja voća *"), podnaslov: ( tekst: "* Janeina potrošnja banana je nepoznata", plutajući: true , poravnati: "desno" , okomitoPoravnati: "dno" , y: 15 ), legenda: ( raspored: "vertikalno" , poravnati: "lijevo" , okomito poravnati: "vrh" , x: 150, y: 100 , floating: true , borderWidth: 1, backgroundColor: "#FFFFFF" ), xAxis: ( kategorije: ["Jabuke" , "Kruške" , "Narandže" , "Banane" , "Grožđe" , "Šljive" , "Jagode" , "Maline" ] ), yAxis: ( naslov: ( tekst: "Y-Axis" ), oznake: ( formater: funkcija () ( vrati ovu .value; ) ) ), opis alata: ( formater: funkcija () ( povratak " "+this.series.name+"
" + ovo .x +": " + ovo .y; ) ), plotOptions: ( oblast: ( fillOpacity: 0,5 ) ), serija: [( ime: "John" , podaci: ), ( ime: "Jane" , podaci: )] ));

Ako je potrebno, možete zamijeniti zadane stilove vlastitim.

Da li da odaberete Canvas ili SVG?

Kao što se može vidjeti iz gornjih primjera, obje tehnologije su često prikladne za zadatke vizualizacije podataka. Mnoge stvari se rade na sličan način. U slučajevima kada je potreban izlaz piksel po piksel, Canvas je očito bolje prilagođen. Tamo gdje se dijagram razlaže na pojedinačne objekte u kojima trebate održavati interaktivnost, SVG je prikladniji.

Platno je bolje
  • Uređivanje rasterske grafike
  • Dodavanje efekata na grafiku/video
  • Generacija rasterske grafike (vizuelizacija podataka, fraktali, grafovi funkcija)
  • Analiza slike
  • Grafika igre (sprijtovi, pozadina, itd.)
SVG je bolji
  • Skalabilni interfejsi
  • Interaktivni interfejsi
  • Dijagrami, dijagrami
  • Uređivanje vektorskih slika

U grafičkom obliku ovo se može predstaviti na sljedeći način:

Konačno, još jedan važan aspekt koji je također važno uzeti u obzir pri odabiru tehnologije je renderiranje performansi kada se koristi Canvas i SVG:

U praksi, Canvas radi bolje kada je površina za renderovanje mala i na velikom broju objekata u SVG-u je pogodnija kada je potrebno skaliranje ili prikazivanje na velikom ekranu i kada nema previše objekata istovremeno.

Većina web stranica sadrži grafiku. Omogućava vam da informacije prezentujete živopisno i jasno. U mnogim slučajevima, bolje je pokazati sliku nego dati dugačak tekstualni opis.
Postoje dva načina za postavljanje grafike na stranicu:

  • umetanje pojedinačnih slika;
  • popunjavanje pozadine slikom.

U svakom slučaju, grafička slika je preuzeta iz datoteke.

Umetanje grafičke slike iz datoteke grafičkog formata na stranicu se vrši pomoću oznake (sa engleskog, slika - slika) označavajući adresu datoteke kao argument atributa SRC:

Adresa grafičke datoteke je ili URL ili naziv datoteke, moguće sa putanjom. Na primjer, da biste prikazali grafičku datoteku logotip.jpg, trebali biste napisati oznaku

Za povećanje brzine prijenosa grafičke slike u oznaci možete koristiti LOWSRC atribut (dodatni parametar), koji uzima adresu grafičke datoteke kao argument. Možete kreirati dvije grafičke datoteke: jedna (na primjer, recimo logotip.jpg) sadrži sliku visoke rezolucije, a druga (na primjer, logotip.gif) sadrži sliku niske rezolucije. Onda označi

Naređuje pretraživaču da prvo preuzme datoteku logotip.gif, a zatim je zamijeni datotekom logotip.jpg čim bude primljena.
Drugi način da se ubrza učitavanje grafike je da navedete dimenzije pravougaonog područja u koje će grafika biti postavljena pomoću atributa WIDTH i HEIGHT, mjereno u pikselima. Ako navedete ove atribute, pretraživač će prvo dodijeliti prostor za grafiku, pripremiti izgled dokumenta, prikazati tekst i tek onda učitati grafiku. Imajte na umu da pretraživač komprimira ili rasteže sliku kako bi se uklopila u određenu veličinu okvira. Primjer određivanja dimenzija slike:

Grafika se obično koristi zajedno s tekstom, pa se javlja izazov usklađivanja teksta i grafike. Ovaj problem se rješava korištenjem atributa ALIGN tag koristeći razne argumente. Na primjer, možda želimo da tekst teče oko slike desno ili lijevo. Obično je slika usko povezana sa tekstom, što može biti ružno. Da biste to izbjegli, možete postaviti prazne margine oko ilustracije. Polja se kreiraju pomoću atributa VSPACE za gornje i donje margine i NSPACE za bočne margine u oznaci . Argumenti ovih atributa navedeni su kao brojevi koji određuju veličinu polja u pikselima. Da biste otkazali prelamanje teksta oko grafike, koristite oznaku
.
Sljedeća oznaka postavlja grafiku iz datoteke logotip.jpg da se premota udesno (slika će biti lijevo od teksta):

Ako želite da postavite sliku desno od teksta, onda vam je potreban atribut ALIGN dodijeliti argument PRAVO:

Da biste postavili margine oko slike, morate napisati oznaku kao što je:

Ovdje brojevi 20 i 10 određuju veličinu polja.
Razmotrimo primjer kombinirane upotrebe grafike i teksta. Otvorite Notepad (Beležnica za uređivač teksta) Windows. Napišite HTML kod u njemu koristeći oznake o kojima smo gore govorili. Ispod je program koji daje neki tekst i grafiku. Možete koristiti bilo koju datoteku koju imate kao grafičku datoteku. Datoteka koja se ovdje koristi je logotip.gif.


Vježba 1



<Н1>Tekst se prelama oko grafike na desnoj strani
Ovo je primjer zajedničkog korištenja teksta i grafike.
Tekst HTML programa može se napisati u bilo kojem uređivaču teksta. Ovo koristi oznake za označavanje teksta.

Ovaj tekst se prikazuje iz novog pasusa. Da bismo to učinili, koristili smo posebnu oznaku.


Pokušajte promijeniti veličinu prozora pretraživača. Obratite pažnju na to kako se izgled teksta mijenja.

Rice. 657. Tekst se prelama oko slike sa desne strane

Pružaju široke mogućnosti za precizno pozicioniranje slika (kao i drugih elemenata) na stranici stolovi I stilova. O ovim HTML elementima će biti reči kasnije. Na primjer, možete definirati tabelu bez vidljivih okvira i smjestiti slike, tekstove i druge elemente u ćelije ove tablice.

mob_info