Skalbar vektorgrafik i HTML5. Infoga Svg grafiska bilder HTML-exempel
(Recensionsartikel efter mjukvaruutvecklingskonferensen i Jekaterinburg och andra presentationer. Videoversion av rapporten i Jekaterinburgse techdays.ru )
Vad är HTML5 Canvas och SVG?
HTML5 Canvas
– elementet är en arbetsyta för att rendera bitmappsgrafik. I själva verket är detta ett tomt block givna dimensioner, som du kan rita på med hjälp av speciella API:er för JavaScript.
API:et innehåller 45 specialmetoder och 21 attribut som används för att visa grafiska primitiver, ställa in stilar, transformationer, komma åt enskilda pixlar, projektbilder och videor.
Jag själv elementet definieras direkt i HTML5-specifikationen. API:et för det beskrivs i ett separat dokument – HTML Canvas 2D Context.
SVG
Musik kan vara roligt
Ett vackert musikaliskt visualiseringsspel (http://musiccanbefun.edankwan.com/).
Exempel på SVG-schema
Schema av det mänskliga skelettet, periodiska systemet kemiska grundämnen och andningssystem (http://ie.microsoft.com/testdrive/Graphics/RealWorldDataAndDiagrams/Default.xhtml).
Yandex kartor
Ett närmare exempel från verkligheten är att använda SVG vid rendering av rutter (om webbläsaren stöder det). Se även föredraget "Kartor och SVG" från vårt HTML5-läger.
Fler exempel:
- Skönheten på webben http://www.beautyoftheweb.com/ - riktiga webbplatser från den verkliga världen
- Dev: unplugged http://contest.beautyoftheweb.com/ - projekt som deltar i HTML5-applikationstävlingen
Skillnaden mellan Canvas och SVG
I olika scenarier kan antingen Canvas eller SVG vara bättre lämpade för dynamisk rendering av grafik – vi återkommer till denna fråga i slutet. Under tiden, låt oss fokusera på de viktigaste skillnaderna mellan den ena och den andra:
Duk | SVG | |
Formatera | Raster | Vektor |
Skalning | ||
Tillgång |
Individual Pixel Access (RGBA) |
Tillgång till enskilda element(DOM) |
Indexerbarhet och tillgänglighet |
Endast det sista rastret är synligt (du kan inte välja former, text etc.) - dåligt för tillgängligheten |
Du kan se strukturen (till exempel dra ut hela texten) |
Stilisering |
Visuella stilar ställs in vid rendering via API |
Visuella stilar sätts av attribut, du kan inkludera CSS |
Programmering |
JS API för att arbeta med primitiver |
DOM för att arbeta med element |
Uppdatering |
För att uppdatera - rita över eller rita om helt |
Det är möjligt att ändra enskilda element |
Utvecklingen |
Det finns inget enkelt sätt att hantera mushändelser. Objekten under markören måste definieras manuellt. |
Händelser från musen via DOM hängs enkelt upp, bearbetas automatiskt. |
Kodintegration |
JS-kod separat från Canvas |
Du kan inkludera JS inuti |
Dessa skillnader måste beaktas när man använder en viss teknik för datavisualisering. Till exempel kan det vara lättare att rita en graf över en funktion med Canvas, medan det är lättare att visa verktygstips (med definitionen av ett objekt under muspekaren) med SVG.
I praktiken finns det dock redan ett antal färdiga bibliotek för datavisualisering som delvis kompenserar för dessa skillnader.
Jag kommer inte att gå in på grunderna för att arbeta med var och en av teknikerna, som en introduktion rekommenderar jag rapporten av Vadim Makeev (Opera) från HTML5 Camp "Dynamic Graphics: Canvas and SVG".
Se även rapporter MIX 2011:
Bildbehandling med Canvas
En av de anmärkningsvärda egenskaperna hos Canvas är att denna teknik ger pixel-för-pixel-åtkomst till de visade data och gör att olika grafiska element, inklusive video, kan projiceras på duken.
Ett bra exempel på var detta behövs är i en bildbehandlings-/analysuppgift.
Processing.js erbjuder två tillvägagångssätt för visualiseringsbeskrivning: mellankod, ytterligare analyserad av biblioteket självt ( separat fil eller inne på sidan) och explicit JavaScript-kod.
Till exempel, för att rita en fraktal av Mandelbrot-uppsättningen, kan du använda antingen alternativet som anges på sidan med motsvarande exempel, eller följande JavaScript-kod:
var xmin = -2,5; varymin = -2; var wh = 4; function sketchProc(processing) ( processing.setup = function () ( processing.size(200, 200); processing.noLoop(); ); processing.draw = function () ( processing.loadPixels(); var maxiterations = 200; var xmax = xmin + wh; var ymax = ymin + wh; var dx = (xmax - xmin) / (processing.width); var dy = (ymax - ymin) / (processing.height); var y = ymin; för (var j = 0; j< 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) (brytning;) n++; ) if (n == maxiterationer) processing.pixels.setPixel(i+j*processing.width, 0); else processing.pixels.setPixel(i+j*processing.width, processing.color(n*16 % 255)); x += dx; ) y += dy; ) processing.updatePixels(); ); ) var canvas = document.getElementById("myCanvas" ); var p = new Processing(canvas, sketchProc);Du kan prova det själv här: http://silverbook.ru/projects/html5datavisualization/demo3-processingjs.htm (kopiera koden, klistra in den i konsolen och kör).
JavaScript InfoVis Toolkit (JIT)
För att visa data accepterar JIT råvärden som JSON:
var json = ( "etikett" : ["etikett A" , "etikett B", "etikett C", "etikett D" ], "värden" : [ ( "etikett" : "datum A" , "värden" : ) , ( "label" : "datum B" , "values" : ), ( "label" : "datum E" , "values" : ), ( "label" : "datum F" , "values" : ), ( "etikett" : "datum D" , "värden" : ), ( "etikett" : "datum C", "värden" : )] ); var pieChart = new $jit.PieChart(( injectInto: "infovis" , animate: true , offset: 30, sliceOffset: 0, labelOffset: 20, type: "stacked:gradient" , showLabels:true , resizeLabels: 7, Label: ( typ: "Native" , storlek: 20, familj: "Arial" , färg: "vit" ), Tips: ( aktivera: true , onShow: function (tip, elem) ( tip.innerHTML = " "+ elem.name + ": " + elem.value; ) ) ));det räcker att kalla ritning:
PieChart.loadJSON(json);
jQuery Sparklines
Kartvisualisering med SVG
Låt oss gå vidare till SVG och börja med ett enkelt exempel. Föreställ dig att du behöver visa lite data på en karta över regioner, vad är det enklaste sättet att göra detta?
Om du har en färdig karta i form av SVG (jag tog en karta över Ryssland från Wikipedia-webbplatsen), så görs detta väldigt enkelt - det räcker att varje region har sitt eget unika ID i SVG-dokumentet, då vi infogar kartan som inline svg och färglägger den med en enkel kod i rätt färg:
var SverdlovskOblast = document.getElementById("SverdlovskOblast" ); SverdlovskOblast.style.fill = "#fe3300" ;Om du gör samma sak i en slinga kan du redan färglägga inte bara regionen, utan hela regionen eller till och med hela landet:
var data = [(id: "KurganOblast" , värde: 30), (id: "SverdlovskOblast" , värde: 200), (id: "TyumenOblast" , värde: 75), (id: "KhantiaMansia" , värde: 100 ), (id: "YamaloNenetsAutDistrict" , värde: 20), (id: "ChelyabinskOblast" , värde: 150)]; för (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); }Bibliotek för att visualisera data med SVG
Både Canvas och SVG lämpar sig som sagt för att lösa den traditionella uppgiften att visualisera numerisk data i form av grafer och diagram. I båda fallen är detta ganska enkelt att göra med lämpliga bibliotek.
Vi har redan tittat på Canvas-exemplen, låt oss nu titta på flera bibliotek för att arbeta med SVG. (Detta är inte heller en uttömmande lista, utan snarare högkvalitativa och populära lösningar.)
Raphael
För att lägga till ett enkelt cirkeldiagram räcker följande kod:
var r = Raphael("diagram" , 640, 480); var pie = r.g.piechart(320, 240, 100, );Med några ytterligare operationer kan du lägga till en förklaring, diagramtexter och interaktiva verktygstips:
var r = Raphael("diagram" , 640, 480); r.g.txtattr.font = "12px "Fontin Sans", Fontin-Sans, sans-serif"; r.g.text(320, 100, "Interaktivt cirkeldiagram" ).attr(("font-size" : 20)); var pie = r.g.piechart(320, 240, 100, ,(legend: ["%%.%% – Enterprise Users" , "IE Users" ], legendpos: "west" ,
href: ["http://raphaeljs.com" , http://g.raphaeljs.com]});
pie.hover(function () ( denna .sector.stop(); denna .sector.scale(1.1, 1.1, denna .cx, denna .cy); if (denna .label) ( denna .label.stop(); this .label.scale(1.5); this .label.attr(("font-weight" : 800)); ) ), function () ( this .sector.animate((scale: ), 500, "bounce" ) ; if (denna .etikett) (denna .label.animate((skala: 1), 500, "studsa" ); denna .label.attr(("font-weight": 400)); ) ));
På samma sätt kan du visa andra typer av diagram med lämpliga metoder. Se exempel direkt på tilläggssidan http://g.raphaeljs.com/
HighchartsJS
Bibliotekets API gör det ganska enkelt att generera ett diagram från data i JSON:
var chart1 = new Highcharts.Chart(( chart: ( renderTo: "charts" , defaultSeriesType: "bar" ), title: ( text: "Fruit Consumption" ), xAxis: ( kategorier: ["Äpplen" , "Bananer" , "Apelsiner" ] ), yAxis: ( titel: ( text: "Fruit eaten") ), serie: [( namn: "Jane" , data: ), ( namn: "John" , data: )] ));Med ett lite mer komplext skript kan du ange ytterligare detaljer, till exempel visa en förklaring, ställa in verktygstips:
var chart = new Highcharts.Chart(( chart: ( renderTo: "charts" , defaultSeriesType: "area" , spacingBottom: 30 ), title: ( text: "Fruit consumer *" ), undertitel: ( text: "* Janes banankonsumtion är okänd", flytande: true , align: "right" , verticalAlign: "bottom" , y: 15 ), legend: ( layout: "vertical" , align: "left" , verticalAlign: "top" , x: 150, y: 100 , flytande: sant , borderWidth: 1, bakgrundsfärg: "#FFFFFF" ), xAxis: ( kategorier: ["Äpplen" , "Päron" , "Apelsiner" , "Bananer" , "Druvor" , "Plummen" , "Jordgubbar" , "Hallon" ] ), yAxis: ( titel: ( text: "Y-Axis" ), etiketter: ( formatterare: funktion () ( returnera detta .värde; ) ) ), verktygstips: ( formatterare: funktion () ( returnera " "+this.series.name+"" + this .x +": " + this .y; ) ), plotOptions: ( area: ( fillOpacity: 0.5 ) ), serie: [( namn: "John" , data: ), ( namn: "Jane" , data: )] ));
Om det behövs kan du ersätta standardstilarna med dina egna.
Vad ska man välja: Canvas eller SVG?
Som du kan se från exemplen ovan är båda teknikerna ofta lämpliga för datavisualiseringsuppgifter. Många saker görs på liknande sätt. I de fall där pixel-för-pixel-utdata behövs är Canvas uppenbarligen bättre lämpad. Där diagrammet delas in i separata objekt som måste vara interaktiva är SVG bättre lämpad.
Canvas är bättre
- Redigera bitmappsgrafik
- Tillämpa effekter på grafik/video
- Generering av rastergrafik (datavisualisering, fraktaler, funktionsdiagram)
- Bildanalys
- Spelgrafik (sprites, bakgrund, etc.)
SVG är bättre
- Skalbara gränssnitt
- Interaktiva gränssnitt
- Diagram, scheman
- Vektor bildredigering
I grafisk form kan detta representeras enligt följande:
Slutligen, ett annat viktigt snitt som också är viktigt att tänka på när du väljer en teknik är rendering av prestanda när du använder Canvas och SVG:
I praktiken fungerar canvas bättre med små renderareastorlekar och ett stort antal objekt, i SVG lämpar det sig bättre vid skalning eller visning på stor skärm och på ett inte alltför stort antal objekt som visas åt gången.
Denna slutsats följer av rapporten från styrelseordföranden för Bashneft, som tillkännagavs till bolagsstämman i bolaget, vars kopia gjordes tillgänglig för redaktionen.
Det följer av dokumentet att som ett resultat av geologisk utforskning upptäcktes 81 produktiva fyndigheter under 2018 med reserver på 19 miljoner ton.
Samtidigt, användningen av mycket effektiva geologiska och tekniska åtgärder och införandet modern teknikökad oljeutvinning gjorde det möjligt att upprätthålla oljeproduktionen på mogna fält i Basjkirien på nivån 2017 - 15 miljoner ton efter resultatet på 11 månader. Den totala produktionsvolymen för den angivna perioden uppgick till 17,3 miljoner ton olja.
Rapporten noterar också att skapandet av en enda produktionskedja med gruv- och bearbetningskomplexet Rosneft har ökat effektiviteten hos Ufa-raffinaderierna och lett till en minskning av drifts- och logistikkostnader. I synnerhet har produktionen av Euro-6-bensin bemästrats och den industriella produktionen av vägbitumen i enlighet med den nya GOST har börjat.
Volymen av detaljhandeln vid Bashneft bensinstationer under 11 månader av 2018 ökade med 13,2 procent jämfört med samma period förra året och nådde 1,7 miljoner ton.
För att implementera strategin inom petrokemiområdet moderniseras petrokemisk produktion. Så i maj 2018 tog Ufaorgsintez i drift ny installation produktion av kumen - råvaror för tillverkning av färger, lösningsmedel, olika polymerer som används inom bilindustrin, medicin och farmakologi. Näst på tur är rekonstruktionen av aromatproduktionskomplexet i Ufaneftekhim, konstruktionen av nya olefinproduktionsenheter i Ufaorgsintez.
Den konsoliderade indikatorn på rörelseresultatet för 9 månader 2018 ökade med 22,6 procent jämfört med samma period 2017 och uppgick till 135,5 miljarder rubel. Bashnefts nettovinst nådde 74,6 miljarder rubel, vilket är 73,5 procent mer än under samma period förra året.
Under det tredje kvartalet betalade Bashneft utdelningar till aktieägarna som meddelades vid årsmötet i juni 2018 till ett belopp av 28,2 miljarder rubel, och det totala beloppet för utdelningar som betalats sedan början av året uppgick till 43 miljarder rubel.
Samtidigt minskade nivån på företagets nettoskuld och uppgick den 30 september 2018 till 40,1 miljarder rubel (från samma datum 2017 var denna siffra 104,7 miljarder rubel).
Samtidigt, under rapportperioden, ökade skatteavdragen till Bashkortostans budget, med hänsyn till en engångsskattebetalning, med 1,5 gånger jämfört med samma period förra året och uppgick till 50,5 miljarder rubel.
HTML-bilder läggs till webbsidor med en tagg . Användningen av grafik gör webbsidor visuellt tilltalande. Bilder hjälper till att bättre förmedla essensen och innehållet i ett webbdokument.
Använda HTML-taggar
Infoga bilder i ett HTML-dokument
1. Tagga
Element representerar en bild och dess reservinnehåll, som läggs till med alt-attributet. Sedan elementet är inline, rekommenderas att placera den inuti ett blockelement, till exempel,
Eller
Märka har ett obligatoriskt attribut src , vars värde är en absolut eller relativ sökväg till bilden:
För Tag följande attribut är tillgängliga:
Attribut | Beskrivning, accepterat värde |
---|---|
alt | Alt-attributet lägger till alternativ text till bilden. Den visas på den plats där bilden visas innan den laddas eller när grafiken är inaktiverad, och visas även som ett verktygstips när du för muspekaren över bilden. Syntax: alt="(!LANG:bildbeskrivning" . !} |
korsursprung | Crossorigin-attributet låter dig ladda bilder från resurser från en annan domän med hjälp av CORS-förfrågningar. Bilder som laddats upp på duken med hjälp av CORS-förfrågningar kan återanvändas. Tillåtna värden: anonym – Begäran om gränsöverskridande ursprung görs med hjälp av en HTTP-rubrik och inga inloggningsuppgifter skickas. Om servern inte tillhandahåller referenser till servern som innehållet begärs från, kommer bilden att skadas och dess användning begränsas. use-credentials - Cross-origin-begäran görs med autentiseringsuppgifter godkända. Syntax: crossorigin="anonym" . |
höjd | Height-attributet anger bildens höjd. Kan anges i px eller % . Syntax: höjd: 300px . |
ismap | ismap-attributet indikerar att bilden är en del av en kartbild som finns på servern (en kartbild är en bild med klickbara områden). När du klickar på kartbilden skickas koordinaterna till servern som en URL-frågesträng. Attributet ismap är endast tillåtet om elementet är ett barn av grundämnet med ett giltigt href-attribut. Syntax: ismap . |
longdesc | Bildens utökade beskrivnings-URL, utfyllnad av alt-attributet. Syntax: longdesc="http://www.example.com/description.txt" . |
src | Attributet src anger sökvägen till bilden. Syntax: src="flower.jpg" . |
storlekar | Ställer in bildstorleken beroende på visningsinställningarna. Fungerar bara om attributet srcset är inställt. Attributvärdet är en eller flera strängar separerade med kommatecken. |
srcset | Skapar en lista över bildkällor som kommer att väljas baserat på skärmupplösning. Kan användas med eller istället för src-attributet. Attributvärdet är en eller flera kommaseparerade strängar. |
använd kartan | Usemap-attributet definierar en bild som en bildkarta. Värdet måste börja med tecknet #. Värdet är associerat med värdet på taggens namn eller id-attribut |
bredd | width-attributet anger bildens bredd. Kan anges i px eller % . Syntax: bredd: 100 % . |
1.1. bild URL
Bildadressen kan anges i sin helhet (absolut URL), till exempel:
url(http://anysite.ru/images/anyphoto.png)
Eller via en relativ väg från dokumentera eller rotkatalogen webbplats:
url(../images/anyphoto.png) — relativ sökväg från dokumentet,
url(/images/anyphoto.png) är en relativ sökväg från rotkatalogen.
Detta tolkas på följande sätt:
../ - betyder att gå upp en nivå, till rotkatalogen,
bilder/ - gå till mappen med bilder,
anyphoto.png - pekar på en bildfil.
1.2. Bildmått
Utan att ställa in bildens mått visas ritningen på sidan i dess verkliga storlek. Du kan redigera måtten på en bild med hjälp av bredd- och höjdattributen. Om endast ett av attributen är inställt, kommer det andra att beräknas automatiskt för att bibehålla bildens proportioner.
1.3. Grafiska filformat
JPEG-format (Förenade Fotografers Expert Grupp). JPEG-bilder är idealiska för fotografier, de kan innehålla miljontals olika färger. Bilder komprimeras bättre än GIF-filer, men text och stora områden med enfärgade kan bli fläckiga.
GIF-format (Graphics Interchange Format). Idealisk för att komprimera bilder som har områden med enfärgade, som logotyper. GIF-filer låter dig ställa in en av färgerna till transparent, vilket gör att bakgrunden på en webbsida kan visas genom en del av bilden. GIF-filer kan också innehålla enkla animationer. GIF-filer innehåller endast 256 nyanser, vilket gör att bilderna ser fläckiga och orealistiska ut, som affischer.
PNG-format (Bärbar nätverksgrafik). Innehåller de bästa funktionerna i GIF- och JPEG-format. Den innehåller 256 färger och låter dig göra en av färgerna transparent, samtidigt som du komprimerar bilder till en mindre storlek än en GIF-fil.
APNG-format (Animerad bärbar nätverksgrafik). Ett bildformat baserat på PNG-formatet. Låter dig lagra animationer och stöder även transparens.
SVG-format (Skalbar vektorgrafik). En SVG-ritning består av en uppsättning geometriska former som beskrivs i XML-format: en linje, en ellips, en polygon och så vidare. Både statisk och animerad grafik stöds. Uppsättningen funktioner inkluderar olika transformationer, alfamasker, filtereffekter, möjligheten att använda mallar. SVG-bilder kan ändras storlek utan att förlora kvalitet.
BMP-format (Bitmappsbild). Representerar en okomprimerad (ursprunglig) bitmapp vars mall är ett rektangulärt rutnät av pixlar. En bitmappsfil består av en rubrik, en palett och grafikdata. Rubriken lagrar information om den grafiska bilden och filen (pixeldjup, höjd, bredd och antal färger). Paletten anges endast i de bitmappsfiler som innehåller palettbilder (8 bitar eller mindre) och som inte består av fler än 256 element. Grafiska data representerar själva bilden. Färgdjupet i detta format kan vara 1, 2, 4, 8, 16, 24, 32, 48 bitar per pixel.
ICO-format (Windows-ikon). Lagringsformat för filikoner i Microsoft Windows. Dessutom används Windows-ikonen som en ikon på webbplatser på Internet. Det är en bild av detta format som visas bredvid webbplatsadressen eller bokmärket i webbläsaren. En ICO-fil innehåller en eller flera ikoner, vars storlek och färg ställs in separat. Storleken på ikonen kan vara vilken som helst, men de vanligaste ikonerna är fyrkantiga ikoner med sidorna 16, 32 och 48 pixlar.
2. Tagga
Märka
Namnattributet är tillgängligt för taggen, som anger namnet på kartan. Värdet på namnattributet för taggen
Element
3. Tagga
Märka beskriver endast en hotspot i bildkartan på klientsidan. Elementet har ingen avslutande tagg. Om en hotspot överlappar en annan, kommer den första länken från listan över hotspots att implementeras.
Attribut | Kort beskrivning |
---|---|
alt | Anger alternativ text för det aktiva området på kartan. |
koordinater | Anger regionens position på skärmen. Koordinater anges i längdenheter och separeras med kommatecken: för cirkel— Koordinaterna för centrum och cirkelns radie. för rektangel— koordinater för det övre vänstra och nedre högra hörnet; för polygon— koordinaterna för polygonens hörn i rätt ordning, det rekommenderas också att ange de sista koordinaterna lika med de första, för den logiska kompletteringen av figuren. |
ladda ner | Kompletterar href-attributet och talar om för webbläsaren att resursen ska laddas i samma ögonblick som användaren klickar på länken, istället för att till exempel öppna den i förväg (som en PDF-fil). Genom att ge ett namn till ett attribut ger vi alltså ett namn till det laddade objektet. Det är tillåtet att använda ett attribut utan att ange dess värde. |
href | Anger URL:en för länken. En absolut eller relativ länkadress kan anges. |
hreflang | Anger språket för det associerade webbdokumentet. Används endast i kombination med href-attributet. De accepterade värdena är en förkortning som består av ett par bokstäver som anger språkkoden. |
media | Anger vilka enhetstyper filen ska optimeras för. Värdet kan vara vilken mediefråga som helst. |
rel | Fyller ut href-attributet med information om förhållandet mellan det aktuella dokumentet och det länkade dokumentet. Godkända värden: alternativ – en länk till en alternativ version av dokumentet (till exempel en utskrivbar sida, en översättning eller en spegel). författare - en länk till författaren av dokumentet. bokmärke är en permanent URL som används för bokmärken. hjälp — länk till hjälp. licens - En länk till upphovsrättsinformation för detta webbdokument. nästa/föregående - anger förhållandet mellan enskilda webbadresser. Genom denna uppmärkning kan Google fastställa att innehållet på dessa sidor är länkat i en logisk sekvens. nofollow - förbjuder sökmotorn att följa länkar på denna sida eller på en specifik länk. noreferrer - indikerar att när du följer en länk ska webbläsaren inte skicka en HTTP-begäran header (Referrer), som innehåller information om vilken sida webbplatsbesökaren kom från. prefetch - indikerar att måldokumentet ska cachelagras, dvs. Webbläsaren i bakgrunden laddar sidans innehåll till sin cache. sök Indikerar att måldokumentet innehåller ett sökverktyg. tag - Anger ett nyckelord för det aktuella dokumentet. |
former | Anger formen på aktivpunkten på kartan och dess koordinater. Det kan ha följande värden: rect är ett rektangulärt aktivt område; cirkel - aktivt område i form av en cirkel; poly - aktivt område i form av en polygon; standard - hotspoten upptar hela bildens område. |
mål | Anger var dokumentet ska laddas när länken klickas. Tar följande värden: _self - sidan laddas in i det aktuella fönstret; _blank - sidan öppnas i ett nytt webbläsarfönster; _parent - sidan läses in i den överordnade ramen; _top - Sidan laddas i ett fullständigt webbläsarfönster. |
typ | Anger MIME-typen för länkfilerna, dvs. filtillägget. |
4. Ett exempel på att skapa en bildkarta
1) Vi markerar källbilden i aktiva områden med önskad form. Areakoordinater kan beräknas med hjälp av ett fotobehandlingsprogram, t.ex. Adobe Photoshop eller Måla.
Ris. 1. Ett exempel på bilduppmärkning för att skapa en karta
2) Ställ in kartnamnet genom att lägga till det i taggen
Jpg" alt="(!LANG:blommor_foto" width="680" height="383" usemap="#flowers">
!}
Ris. 2. Ett exempel på att skapa en bildkarta, när du klickar på en blomma kommer du till en sida med en beskrivning
Vektorgrafik används ofta i tryck. Men för webbplatser kan vi också använda det med SVG ( Skalbar vektorgrafik - skalbar vektorgrafik). Enligt W3.org-specifikationen definierar SVG som:
Ett språk för att beskriva tvådimensionell grafik i XML. SVG tillåter användning av tre typer av objekt: vektorgrafiska former (till exempel banor som består av raka linjer och kurvor), bilder och text.
Även om SVG sedan augusti 2011 har inkluderats i W3C:s rekommendationer, denna teknik används praktiskt taget inte i webbprojekt, även om det har ett antal fördelar jämfört med bitmappar. I den här serien med självstudier kommer vi att introducera hur man arbetar med SVG-element på webbsidor.
Fördelar med SVG
Resolution Oberoende
Rasterbilder är upplösningsberoende. Grafik blir opresenterbart när storleken ändras till vissa skalor. FRÅN vektorgrafik en sådan situation är i princip omöjlig, eftersom allt representeras av matematiska uttryck som automatiskt räknas om när skalan ändras, och kvaliteten bevaras under alla förhållanden.
Minska antalet HTTP-förfrågningar
SVG kan bäddas in direkt i ett HTML-dokument med svg-taggen, så webbläsaren behöver inte uppmanas att visa grafiken. Detta tillvägagångssätt har en god effekt på laddningsegenskaperna på webbplatsen.
Stilar och manus
Inbäddning med svg-taggen gör det också enkelt att styla grafik med CSS. Du kan ändra objektegenskaper som bakgrundsfärg, transparens, ramar och så vidare. På liknande sätt kan grafik manipuleras med JavaScript.
Lätt att redigera och animera
SVG-objekt kan animeras med CSS eller JavaScript. Du kan även modifiera SVG-objekt med textredigerare.
Mindre filstorlek
SVG har en mindre filstorlek jämfört med rastergrafik.
Grundläggande SVG-former
Enligt specifikationen kan vi rita flera grundläggande former: linje, polylinje, rektangel, cirkel, ellips. Alla element måste infogas i taggen . Överväg de grundläggande delarna i detalj.
Linje
Ett element används för att rita en linje i SVG
Början av segmentet definieras av attributen x1 och y1, och slutpunkten definieras av koordinaterna i attributen x2 och y2.
Det finns också två andra attribut (slag och streckbredd) som används för att definiera färgen respektive bredden på linjen.
Detta objekt liknar
Element
Rektangel renderad med element
För att rita en cirkel, använd elementet
De två första attributen cx och cy definierar koordinaterna för mitten. I exemplet ovan har vi satt båda koordinaterna till 102. Standardvärdet är 0.
För att rita en ellips, använd elementet
Element
Använda editorn för vektorgrafik
Det är enkelt att rendera enkla SVG-objekt till HTML. Men när objektets komplexitet ökar kan denna praxis leda till att en stor mängd arbete måste göras.
Men du kan använda vilken redigerare som helst för vektorgrafik (t.ex. Adobe Illustrator eller inkscape) för att skapa objekt. Om du äger ett sådant verktyg är det mycket lättare att rita de nödvändiga objekten i dem än att koda grafik i en HTML-tagg.
Du kan kopiera kommandon för vektorgrafik från en fil till ett HTML-dokument. Eller så kan du bädda in .svg-filen med något av följande element: embed , iframe och object .
Resultatet blir detsamma.
Webbläsarstöd
SVG har bra stöd i de flesta moderna webbläsare, förutom IE version 8 och tidigare. Men uppgiften kan lösas med hjälp av JavaScript-biblioteket. För att göra saker enklare kan du använda verktyget ReadySetRaphael.com för att konvertera SVG-kod till Raphael-format.
Först laddar vi och inkluderar biblioteket i ett HTML-dokument. Sedan laddar vi .svg-filen, kopierar och klistrar in den resulterande koden i funktionen efter laddning:
I body-taggen placerar vi följande div-element med ID:t rsr .
Och allt är klart.
I nästa handledning i serien kommer vi att titta på hur man formaterar SVG-objekt i CSS.
Vektorgrafik används ofta i tryckt material. När det gäller hemsidan kan vi här även använda vektorgrafik genom SVG eller Scalable Vector Graphics (skalbar vektorgrafik). I den officiella W3.org-specifikationen beskrivs det så här:
Ett språk för att beskriva tvådimensionell grafik med hjälp av XML. SVG tillåter oss att använda tre typer grafiska objekt: Vektorgrafiska former (som banor som består av raka och böjda linjer), bilder och text.
Tekniken har varit tillgänglig sedan 1999, och den 16 augusti 2011 ingick den i listan över W3C-rekommendationer. SVG används fortfarande inte i stor utsträckning, trots de många fördelarna med att använda vektorgrafik istället för bitmappar.
Fördelar med skalbar vektorgrafik
När det gäller att använda grafik på webbsidor, erbjuder skalbar vektorgrafik flera fördelar jämfört med rastergrafik, som inkluderar:
Resolution Oberoende
Rastergrafik (eller bitmapp) är upplösningsberoende eftersom de skapas med hjälp av pixlar. Om ett sådant grafiskt element ökar i storlek, kommer stora rutor omedelbart att bli synliga. Detta händer inte med vektorgrafik, eftersom de inte är beroende av upplösning, utan istället bygger på matematiska beräkningar, vilket gör att vi kan öka dem till valfri storlek och inte tappa kvalitet.
Minska HTTP-förfrågningar
Skalbar vektorgrafik kan bäddas in direkt i ett HTML-dokument med svg-taggen, så att webbläsaren inte behöver en extra begäran om grafiken. Det har också en positiv effekt på webbplatsens prestanda.
Styling och manus
Direkt integration med svg-taggen kommer också att tillåta oss att styla grafiken när CSS hjälp. Vi kan ändra objektegenskaper som bakgrundsfärg, opacitet, ramar och så vidare, på samma sätt som i HTML. Vi kan även styra grafik genom javascript.
Möjlighet att animera och redigera
Ett SVG-objekt kan animeras med ett animeringselement eller med ett JS-bibliotek som jQuery. SVG-objektet kan också redigeras med vilken textredigerare eller grafikprogram som helst som (gratis) eller .
Mindre filstorlek
SVG har en mindre filstorlek än rastergrafik.
Rita enkla former med SVG
Efter specifikationen kan vi rita som polygoner, cirklar, linjer eller ellipser med SVG och för att webbläsaren ska kunna generera skalbar vektorgrafik måste alla dessa grafiska element placeras i "svg"-taggar. Låt oss titta på exemplen nedan:
Linje
För att rita en linje med SVG kan vi använda elementet "line". Detta element används för att rita en rak linje, så det kommer bara att bestå av två punkter: början och slutet.
Som du kan se ovan anges linjens startpunktskoordinat i de två första attributen x1 och x2, och slutpunktskoordinaten anges i y1 och y2 attributen.
Det finns också två andra attribut här: stroke och stroke-width , som är ansvariga för färgen och bredden på kanten. Å andra sidan kan vi också definiera dessa attribut i inline stil, enligt följande:
Style="stroke-width:1; stroke:rgb(0,0,0);"
och det kommer att ge oss samma resultat.
*
avbruten linje
Detta är väldigt likt "line", men med elementet "polyline" kan vi rita flera linjer istället för bara en. Här är ett exempel:
Elementet "polylinje" har punktattribut som innehåller alla koordinater för linjerna.
*
Rektangel
Vi kan rita en rektangel lika enkelt, bara med hjälp av det "räta" elementet. Vi behöver bara ange bredd och höjd:
*
Cirkel
Vi kan också rita en cirkel med elementet "cirkel". I det här exemplet ritar vi en cirkel med en radie på 100, som definieras av r-attributet:
De två första attributen, cx och cy, definierar cirkelns centrumkoordinat. I exemplet ovan har vi satt 102 för både x- och y-koordinaterna. Om dessa attribut inte är inställda kommer de att vara 0 som standard.
*
Ellips
Vi kan rita ellipser med elementet "ellips". Här fungerar allt på ungefär samma sätt som med cirkeln, men den här gången kan vi styra x-linjeradien och y-linjeradien separat med attributen rx och ry.
*
Polygon
Med elementet "polygon" kan vi rita polygoner, former med flera vinklar och sidor som en triangel, en oktagon. Exempel:
*
Använda vektorgrafikredigeraren
Som du kan se är det ganska enkelt att rita enkla former med SVG i HTML. Men om vi behöver ett mer komplext objekt, kommer denna metod inte längre att passa oss.
Som vi nämnde ovan kan vi lyckligtvis använda en vektorgrafikredigerare som Adobe Illustrator eller Inkscape för att göra jobbet. Om du är bekant med denna programvara kan du enkelt rita objekt med ett användarvänligt gränssnitt istället för att använda HTML-kod.
Eller så kan du också bädda in själva svg-filen med något av följande element: embed, iframe, object.
Resultatet blir liknande.
PÅ detta exempel vi använde med .
*
Webbläsarstöd för skalbar vektorgrafik
När det gäller webbläsarstöd stöds skalbar vektorgrafik redan i IE8 och tidigare. Men detta kan fixas med ett javascript-bibliotek som heter . För att göra saker enklare kommer vi att använda verktyget för att konvertera vår SVG-kod till ett format som stöds av Raphael.
För att komma igång, ladda ner och inkludera Raphael.js-biblioteket i din HTML-kod. Ladda sedan upp svg-filen till webbplatsen, kopiera och klistra in den genererade koden i följande laddningsfunktion:
window.onload=function() (
//Raphael-koden går här
}
Inuti body-taggen, infoga följande div med id-attributet rsr.
Och det är där vi är klara! Se exemplet i länken nedan.
Sammanfattningsvis
Så det är grunderna i SVG. Vi hoppas att du nu har lite förståelse för detta ämne. Detta är en av bättre sätt optimera prestandan på dina sidor, samtidigt som du tillhandahåller grafik som kan visas tydligt även på Retina-skärmar.
Som vanligt, om du är nyfiken, har vi förberett ett litet urval av ytterligare artiklar åt dig.
* (Introduktion till SVG)
* (SVG: låt oss inte vara beroende av upplösning)
* (Varför inte använda SVG?)
Tack för att du läste och vi hoppas att du tycker att den här artikeln är användbar!
Uppmärksamhet! Du har inte behörighet att visa dold text.