HTML5-də miqyaslana bilən vektor qrafikası. Svg Qrafik Şəkillərin HTML Nümunələrinin Daxil edilməsi

(Yekaterinburqda proqram təminatının hazırlanması üzrə konfrans və digər təqdimatlardan sonra icmal məqalə. Yekaterinburqda hesabatın video versiyası.techdays.ru saytına baxın )

HTML5 Canvas və SVG nədir?

HTML5 Canvas

– element bitmap qrafikasını göstərmək üçün kətandır. Əslində bu boş blokdur verilmiş ölçülər, JavaScript üçün xüsusi API-lərdən istifadə edərək çəkə bilərsiniz.

API qrafik primitivləri göstərmək, üslubları təyin etmək, çevirmək, fərdi piksellərə daxil olmaq, layihə şəkilləri və videoları göstərmək üçün istifadə olunan 45 xüsusi metod və 21 atributdan ibarətdir.

Özüm element birbaşa HTML5 spesifikasiyasında müəyyən edilir. Bunun üçün API ayrıca sənəddə təsvir edilmişdir -- HTML Canvas 2D Context.

SVG

Musiqi Əyləncəli Ola bilər

Gözəl musiqi vizuallaşdırma oyunu (http://musiccanbefun.edankwan.com/).

SVG sxemi nümunələri

İnsan skeletinin sxemi, dövri sistem kimyəvi elementlər və tənəffüs sistemi (http://ie.microsoft.com/testdrive/Graphics/RealWorldDataAndDiagrams/Default.xhtml).

Yandex xəritələri

Daha yaxın real həyat nümunəsi marşrutları göstərərkən SVG-dən istifadə etməkdir (brauzer bunu dəstəkləyirsə). HTML5 Düşərgəmizdən "Xəritələr və SVG" söhbətinə də baxın.

Daha çox nümunə:

  • Vebin Gözəlliyi http://www.beautyoftheweb.com/ - real dünyadan real saytlar
  • Dev: unplugged http://contest.beautyoftheweb.com/ - HTML5 tətbiqi müsabiqəsində iştirak edən layihələr

Canvas və SVG arasındakı fərq

Müxtəlif ssenarilərdə ya Canvas, ya da SVG qrafiklərin dinamik şəkildə göstərilməsi üçün daha uyğun ola bilər - sonunda bu məsələyə qayıdacağıq. Bu arada, biri ilə digəri arasındakı əsas fərqlərə diqqət yetirək:

Kətan SVG
Format Raster Vektor
Ölçəkləmə
Giriş

Fərdi Piksel Girişi (RGBA)

Giriş fərdi elementlər(DOM)

İndeksləşmə və Əlçatanlıq

Yalnız son rastr görünür (şəkillər, mətn və s. seçə bilməzsiniz) - Əlçatanlıq üçün pisdir

Siz strukturu görə bilərsiniz (məsələn, bütün mətni çıxarın)

Stilizasiya

Vizual üslublar API vasitəsilə göstərildikdə təyin olunur

Vizual üslublar atributlarla müəyyən edilir, siz CSS-ni daxil edə bilərsiniz

Proqramlaşdırma

Primitivlərlə işləmək üçün JS API

Elementlərlə işləmək üçün DOM

Yeniləyin

Yeniləmək üçün - üzərində çəkin və ya tamamilə yenidən çəkin

Fərdi elementləri dəyişdirmək mümkündür

Hadisələr

Siçan hadisələrini idarə etməyin asan yolu yoxdur. Kursorun altındakı obyektlər əl ilə müəyyən edilməlidir.

Siçandan DOM vasitəsilə baş verən hadisələr asanlıqla bağlanır, avtomatik işlənir.

Kod inteqrasiyası

JS kodu Canvas-dan ayrıdır

Siz içəriyə JS daxil edə bilərsiniz

Məlumatların vizuallaşdırılması üçün xüsusi texnologiyadan istifadə edərkən bu fərqlər nəzərə alınmalıdır. Məsələn, Canvas ilə funksiyanın qrafikini çəkmək daha asan ola bilər, SVG ilə isə alət ipuçlarını (siçan göstəricisi altında obyektin tərifi ilə) göstərmək daha asandır.

Bununla belə, praktikada bu fərqləri qismən kompensasiya edən verilənlərin vizuallaşdırılması üçün artıq bir sıra hazır kitabxanalar mövcuddur.

Texnologiyaların hər biri ilə işləməyin əsaslarına girməyəcəyəm, giriş olaraq HTML5 Düşərgəsindən Vadim Makeyevin (Opera) “Dinamik Qrafika: Kətan və SVG” hesabatını tövsiyə edirəm.

MIX 2011 hesabatlarına da baxın:

Kətanla Şəklin Emalı

Canvas-ın diqqətəlayiq xüsusiyyətlərindən biri də odur ki, bu texnologiya göstərilən məlumatlara piksel-piksel çıxışı təmin edir və müxtəlif qrafik elementləri, o cümlədən videonu kətan üzərinə proyeksiya etməyə imkan verir.

Bunun lazım olduğu yerin yaxşı nümunəsi təsvirin işlənməsi/analiz tapşırığındadır.

Processing.js vizuallaşdırma təsvirinə iki yanaşma təklif edir: ara kod, daha sonra kitabxananın özü tərəfindən təhlil edilir ( ayrı fayl və ya səhifənin daxilində) və açıq JavaScript kodu.

Məsələn, fraktal Mandelbrot dəstini çəkmək üçün ya müvafiq nümunə ilə səhifədə qeyd olunan seçimdən, ya da aşağıdakı JavaScript kodundan istifadə edə bilərsiniz:

var xmin = -2.5; varymin = -2; var wh = 4; funksiya 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) / (emal. eni); var dy = (ymax - ymin) / (emal. hündürlük); var y = ymin; üçün (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) ( fasilə ; ) n++; ) if (n == maxsiterations) 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(kətan, sketchProc);

Siz burada özünüz cəhd edə bilərsiniz: http://silverbook.ru/projects/html5datavisualization/demo3-processingjs.htm (kodu kopyalayın, konsola yapışdırın və icra edin).

JavaScript InfoVis Toolbar (JIT)

Məlumatları göstərmək üçün JIT xam dəyərləri JSON kimi qəbul edir:

var json = ( "etiket" : ["etiket A", "etiket B", "etiket C", "etiket D" ], "dəyərlər" : [( "etiket" : "tarix A", "dəyərlər" : ) , ( "etiket" : "tarix B", "dəyərlər" : ), ( "etiket" : "tarix E" , "dəyərlər" : ), ( "etiket" : "tarix F", "dəyərlər" : ), ( "label" : "tarix D", "dəyərlər" : ), ( "etiket" : "tarix C", "dəyərlər" : )] ); var pieChart = new $jit.PieChart(( injectInto: "infovis" , animate: true , ofset: 30, sliceOffset: 0, labelOffset: 20, type: "stacked:gradient" , showLabels:true , resizeLabels: 7, Label: (növ: "Doğma" , ölçü: 20, ailə: "Arial" , rəng: "ağ" ), İpucu: (aktiv edin: doğru , onShow: funksiya (tip, element) ( tip.innerHTML = " "+ element.name + ": " + element.dəyər; ))) )))

rəsm çağırmaq kifayətdir:

PieChart.loadJSON(json);

jQuery Sparklines

SVG ilə xəritənin vizuallaşdırılması

Gəlin SVG-yə keçək və sadə bir nümunə ilə başlayaq. Təsəvvür edin ki, bəzi məlumatları regionların xəritəsində göstərməlisiniz, bunu etməyin ən asan yolu nədir?

SVG şəklində hazır xəritəniz varsa (Rusiyanın xəritəsini Vikipediya saytından götürmüşəm), onda bu çox sadədir - SVG sənədində hər bir bölgənin özünəməxsus identifikatoru olması kifayətdir, onda biz xəritəni daxili svg kimi daxil edirik və sadə kodla düzgün rəngdə rəngləndiririk:

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

Eyni şeyi bir döngədə etsəniz, onda siz artıq təkcə bölgəni deyil, bütün bölgəni və ya hətta bütün ölkəni rəngləyə bilərsiniz:

var data = [(id: "KurganOblast" , dəyər: 30), (id: "SverdlovskOblast" , dəyər: 200), (id: "TyumenOblast" , dəyər: 75), (id: "KhantiaMansia" , dəyər: 100 ), (id: "YamaloNenetsAutDistrict" , dəyər: 20), (id: "ChelyabinskOblast" , dəyər: 150)]; üçün (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); }

SVG ilə məlumatların vizuallaşdırılması üçün kitabxanalar

Dediyim kimi, həm Canvas, həm də SVG rəqəmsal məlumatların qrafiklər və diaqramlar şəklində vizuallaşdırılması kimi ənənəvi vəzifəni həll etmək üçün uyğundur. Hər iki halda, bunu müvafiq kitabxanalarla etmək kifayət qədər asandır.

Artıq Canvas nümunələrinə baxdıq, indi SVG ilə işləmək üçün bir neçə kitabxanaya baxaq. (Bu da tam siyahı deyil, yüksək keyfiyyətli və populyar həllərdir.)

Rafael

Sadə pasta diaqramı əlavə etmək üçün aşağıdakı kod kifayətdir:

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

Bir neçə əlavə əməliyyatla siz əfsanə, diaqram başlıqları və interaktiv alətlər əlavə edə bilərsiniz:

var r = Raphael("diaqram" , 640, 480); r.g.txtattr.font = "12px "Fontin Sans", Fontin-Sans, sans-serif"; r.g.text(320, 100, "İnteraktiv Pie Diaqram" ).attr(("şrift ölçüsü" : 20)); var pie = r.g.piechart(320, 240, 100, ,
(əfsanə: ["%%.%% – Enterprise Users" , "IE Users" ], legendpos: "west" ,
href: ["http://raphaeljs.com" , http://g.raphaeljs.com]});
pie.hover(funksiya () ( bu .sektor.stop(); bu .sektor.miqyaslı(1.1, 1.1, bu .cx, bu .cy); əgər (bu .etiket) (bu .etiket.stop(); bu .label.scale(1.5); bu .label.attr(("font-weight" : 800)); ) ), funksiya () (bu .sector.animate((miqyas: ), 500, "sıçrayış" ) ; if (bu .etiket) ( bu .label.animate((miqyas: 1), 500, "sıçrayış" ); bu .label.attr(("şrift-çəki" : 400)); ) ));

Eynilə, siz uyğun üsullardan istifadə edərək digər diaqram növlərini göstərə bilərsiniz. Nümunələrə birbaşa http://g.raphaeljs.com/ genişləndirmə saytında baxın

HighchartsJS

Kitabxana API-si JSON-da verilənlərdən diaqram yaratmağı çox asanlaşdırır:

var chart1 = new Highcharts.Chart(( chart: ( renderTo: "charts" , defaultSeriesType: "bar" ), başlıq: (mətn: "Meyvə istehlakı" ), xAxis: (kateqoriyalar: ["Alma" , "Banan" , "Oranges" ] ), yAxis: ( başlıq: ( mətn: "Meyvə yeyilmiş" ) ), seriya: [( ad: "Jane" , data: ), (ad: "John" , data: )] ));

Bir az daha mürəkkəb skript ilə siz əlavə təfərrüatlar təyin edə bilərsiniz, məsələn, əfsanə göstərə, alət ipuçlarını quraşdıra bilərsiniz:

var chart = new Highcharts.Chart(( chart: ( renderTo: "charts" , defaultSeriesType: "area" , spacingBottom: 30 ), başlıq: (mətn: "Meyvə istehlakı *" ), subtitr: ( mətn: "* Ceynin banan istehlakı məlum deyil", üzən: doğru , düzləşdirin: "sağ" , verticalAlign: "alt" , y: 15 ), əfsanə: ( düzən: "şaquli" , düzləşdirin: "sol" , verticalAlign: "top" , x: 150, y: 100 , üzən: doğru , sərhədEni: 1, arxa planRəng: "#FFFFFF" ), xAxis: (kateqoriyalar: ["Alma" , "Armud" , "Portağal" , "Banan" , "Üzüm" , "Gəri" , "Çiyələk" , "Moruq" ] ), yAxis: ( başlıq: ( mətn: "Y-oxu" ), etiketlər: ( formatlayıcı: funksiya () ( bu .dəyəri qaytarın; ) ) ), alət ipucu: ( formatlayıcı: funksiya () ( qaytarın " "+bu.seriya.adı+"
" + this .x +": " + this .y; ) ), plotOptions: ( area: ( fillOpacity: 0.5 ) ), seriya: [(ad: "John" , data: ), (ad: "Jane" , data: )] ));

Lazım gələrsə, standart üslubları özünüzlə əvəz edə bilərsiniz.

Nə seçmək lazımdır: Canvas və ya SVG?

Yuxarıdakı nümunələrdən göründüyü kimi, hər iki texnologiya çox vaxt məlumatların vizuallaşdırılması tapşırıqları üçün uyğundur. Çox şey oxşar şəkildə edilir. Piksel-piksel çıxışı lazım olduğu hallarda, Canvas daha yaxşı uyğun gəlir. Diaqramın interaktiv olması lazım olan ayrı-ayrı obyektlərə bölündüyü yerdə SVG daha uyğundur.

Kətan daha yaxşıdır
  • Bitmap qrafiklərinin redaktə edilməsi
  • Qrafikə/videoya effektlərin tətbiqi
  • Rastr qrafikasının yaradılması (məlumatların vizuallaşdırılması, fraktallar, funksiya qrafikləri)
  • Şəkil təhlili
  • Oyun qrafikası (sprite, fon və s.)
SVG daha yaxşıdır
  • Ölçəklənən İnterfeyslər
  • İnteraktiv interfeyslər
  • Diaqramlar, sxemlər
  • Vektor şəkillərinin redaktəsi

Qrafik formada bunu aşağıdakı kimi təqdim etmək olar:

Nəhayət, texnologiya seçərkən nəzərə alınması vacib olan başqa bir vacib kəsmə Canvas və SVG istifadə edərkən performans göstərilməsidir:

Praktikada kətan kiçik render sahəsi ölçüləri ilə daha yaxşı işləyir və böyük rəqəmlər SVG-də obyektləri ölçmək və ya göstərmək lazım olduqda daha uyğundur böyük ekran və bir anda göstərilən çox da çox olmayan obyektlərdə.

Bu nəticə “Bashneft”in idarə heyətinin sədrinin şirkətin səhmdarlarının ümumi yığıncağına elan edilmiş və bir nüsxəsi redaksiyaya təqdim edilmiş hesabatından irəli gəlir.

Sənəddən belə çıxır ki, geoloji kəşfiyyat işləri nəticəsində 2018-ci ildə ehtiyatları 19 milyon ton olan 81 məhsuldar yataq aşkar edilib.

Eyni zamanda, yüksək səmərəli geoloji-texniki tədbirlərin tətbiqi və tətbiqi müasir texnologiyalar gücləndirilmiş neft hasilatı, 11 ayın yekunlarına görə, Başqırdıstanda yetişmiş yataqlarda neft hasilatını 2017-ci ildə - 15 milyon ton səviyyəsində saxlamağa imkan verdi. Göstərilən dövrdə hasilatın ümumi həcmi 17,3 milyon ton neft təşkil edib.

Hesabatda həmçinin qeyd olunur ki, Rosneft-in istehsal və emal kompleksi ilə vahid istehsal zəncirinin yaradılması Ufa neftayırma zavodlarının səmərəliliyini artırıb, əməliyyat və logistika xərclərinin azalmasına səbəb olub. O cümlədən, Avro-6 markalı benzinin istehsalı mənimsənilib və yeni QOST-a uyğun olaraq yol bitumunun sənaye istehsalına başlanılıb.

2018-ci ilin 11 ayı ərzində “Başneft” yanacaqdoldurma məntəqələrində pərakəndə satışın həcmi ötən ilin müvafiq dövrü ilə müqayisədə 13,2 faiz artaraq 1,7 milyon tona çatıb.

Neft kimyası sahəsində strategiyanın həyata keçirilməsi üçün neft-kimya istehsalı modernləşdirilir. Beləliklə, 2018-ci ilin may ayında Ufaorgsintez istifadəyə verildi yeni quraşdırma kumen istehsalı - boyaların, həlledicilərin, avtomobil sənayesində, tibbdə və farmakologiyada istifadə olunan müxtəlif polimerlərin istehsalı üçün xammal. Növbəti sırada “Ufaneftexim”də aromatik maddələr istehsalı kompleksinin yenidən qurulması, “Ufaorgsintez”də yeni olefin istehsalı qurğularının tikintisi dayanır.

2018-ci ilin 9 ayında əməliyyat mənfəətinin konsolidasiya edilmiş göstəricisi 2017-ci ilin eyni dövrü ilə müqayisədə 22,6 faiz artaraq 135,5 milyard rubl təşkil edib. “Bashneft”in xalis mənfəəti 74,6 milyard rubla çatıb ki, bu da ötən ilin eyni dövrü ilə müqayisədə 73,5 faiz çoxdur.

Üçüncü rüb ərzində "Bashneft" səhmdarlarına 2018-ci ilin iyun ayında illik yığıncaqda elan edilmiş 28,2 milyard rubl məbləğində dividendlər ödəyib və ilin əvvəlindən ödənilmiş dividendlərin ümumi məbləği 43 milyard rubl təşkil edib.

Bununla yanaşı, şirkətin xalis borcunun səviyyəsi azalıb və 30 sentyabr 2018-ci il tarixinə 40,1 milyard rubl təşkil edib (2017-ci ilin eyni tarixinə bu rəqəm 104,7 milyard rubl olub).

Eyni zamanda, hesabat dövründə Başqırdıstanın büdcəsinə birdəfəlik gəlir vergisi ödənişi nəzərə alınmaqla vergi ayırmaları ötən ilin müvafiq dövrü ilə müqayisədə 1,5 dəfə artaraq 50,5 milyard rubl təşkil edib.

HTML şəkilləri etiketdən istifadə edərək veb səhifələrə əlavə olunur . Qrafiklərdən istifadə veb səhifələri vizual olaraq cəlbedici edir. Şəkillər veb sənədin mahiyyətini və məzmununu daha yaxşı çatdırmağa kömək edir.

HTML teqlərindən istifadə yarada bilərsiniz təsvir xəritələri aktiv bölgələrlə.

Şəkillərin HTML sənədinə daxil edilməsi

1. Tag

Element alt atributundan istifadə edərək əlavə edilən şəkli və onun ehtiyat məzmununu təmsil edir. Elementdən bəri daxilidir, onu blok elementinin içərisinə yerləşdirmək tövsiyə olunur, məsələn,

Və ya

.

Tag src tələb olunan atributuna malikdir, onun dəyəri şəklin mütləq və ya nisbi yoludur:

Tag üçün aşağıdakı atributlar mövcuddur:

Cədvəl 1. Tag atributları
Atribut Təsvir, qəbul edilmiş dəyər
alt Alt atributu şəkilə alternativ mətn əlavə edir. Şəklin yüklənməmişdən əvvəl və ya qrafiklər söndürüldükdə göründüyü yerdə göstərilir, həmçinin siçan kursorunu şəklin üzərinə gətirdiyiniz zaman alət ipucu kimi göstərilir.
Sintaksis: alt="şəkil təsviri" . !}
çarpaz mənşəli Crossorigin atributu CORS sorğularından istifadə edərək başqa domendən olan resurslardan şəkillər yükləməyə imkan verir. CORS sorğularından istifadə edərək kətana yüklənmiş şəkillər təkrar istifadə edilə bilər. İcazə verilən dəyərlər:
anonim - Çarpaz mənşəli sorğu HTTP başlığından istifadə etməklə edilir və heç bir etimadnamə ötürülmür. Əgər server məzmunun tələb olunduğu serverə etimadnamələri təqdim etmirsə, o zaman şəkil korlanacaq və onun istifadəsi məhdudlaşdırılacaq.
use-credentials - Çarpaz mənşəli sorğu keçilən etimadnamə ilə edilir.
Sintaksis: crossorigin = "anonim" .
hündürlük height atributu şəklin hündürlüyünü təyin edir. px və ya % ilə müəyyən edilə bilər.
Sintaksis: hündürlük: 300px .
ismap Ismap atributu təsvirin serverdə yerləşən xəritə şəklinin bir hissəsi olduğunu göstərir (xəritə şəkli tıklanabilir sahələri olan şəkildir). Xəritə şəklinə kliklədiyiniz zaman koordinatlar URL sorğu sətri kimi serverə göndərilir. ismap atributuna yalnız element olduqda icazə verilir elementin uşağıdır etibarlı href atributu ilə.
Sintaksis: ismap.
longdesc Alt atributunu dolduran şəklin genişləndirilmiş təsviri URL-i.
Sintaksis: longdesc="http://www.example.com/description.txt" .
src src atributu təsvirin yolunu müəyyən edir.
Sintaksis: src="flower.jpg" .
ölçüləri Ekran parametrlərindən asılı olaraq şəkil ölçüsünü təyin edir. Yalnız srcset atributu təyin edildikdə işləyir. Atribut dəyəri vergüllə ayrılmış bir və ya bir neçə sətirdir.
srcset Ekran ayırdetmə qabiliyyətinə əsasən seçiləcək şəkil mənbələrinin siyahısını yaradır. src atributu ilə və ya onun əvəzinə istifadə edilə bilər. Atribut dəyəri bir və ya daha çox vergüllə ayrılmış sətirdir.
istifadə xəritəsi Usemap atributu təsviri şəkil xəritəsi kimi müəyyən edir. Dəyər # simvolu ilə başlamalıdır. Dəyər etiketin adı və ya id atributunun dəyəri ilə əlaqələndirilir və elementlər arasında əlaqə yaradır . Əgər element varsa, atribut istifadə edilə bilməz elementin uşağıdır və ya
eni width atributu təsvirin enini təyin edir. px və ya % ilə müəyyən edilə bilər.
Sintaksis: genişlik: 100% .

1.1. Şəkil ünvanı

Şəkil ünvanı tam olaraq göstərilə bilər (mütləq URL), məsələn:
url(http://anysite.ru/images/anyphoto.png)

Və ya nisbi bir yol vasitəsilə sənəd və ya kök kataloqu Sayt:
url(../images/anyphoto.png) — sənəddən nisbi yol,
url(/images/anyphoto.png) kök kataloqdan nisbi yoldur.

Bu aşağıdakı kimi şərh olunur:
../ - bir pillə yuxarı, kök qovluğuna çıxmaq deməkdir,
images/ - şəkillərin olduğu qovluğa keçin,
anyphoto.png - şəkil faylına işarə edir.

1.2. Şəkil ölçüləri

Şəkil ölçülərini təyin etmədən, rəsm səhifədə faktiki ölçüsündə göstərilir. Siz en və hündürlük atributlarından istifadə edərək şəklin ölçülərini redaktə edə bilərsiniz. Atributlardan yalnız biri təyin olunarsa, ikincisi şəklin nisbətlərini qorumaq üçün avtomatik olaraq hesablanacaqdır.

1.3. Qrafik fayl formatları

JPEG formatı (Birgə Fotoqrafiya Ekspertlər Qrupu). JPEG şəkilləri fotoşəkillər üçün idealdır, onlar milyonlarla müxtəlif rəngləri ehtiva edə bilər. Şəkillər GIF-lərdən daha yaxşı sıxışdırılır, lakin mətn və bərk rəngli böyük sahələr ləkəli ola bilər.

GIF formatı (Qrafik Mübadilə Formatı). Loqolar kimi bərk rəngli sahələri olan şəkilləri sıxmaq üçün idealdır. GIF-lər sizə rənglərdən birini şəffaf təyin etməyə imkan verir, veb səhifənin fonunu təsvirin bir hissəsində göstərməyə imkan verir. GIF-lərə sadə animasiyalar da daxil ola bilər. GIF-lərdə yalnız 256 çalar var ki, bu da şəkilləri afişalar kimi ləkəli və qeyri-real göstərir.

PNG formatı (Portativ Şəbəkə Qrafikası). GIF və JPEG formatlarının ən yaxşı xüsusiyyətlərini ehtiva edir. O, 256 rəngdən ibarətdir və şəkilləri GIF faylından daha kiçik ölçüdə sıxaraq rənglərdən birini şəffaf etməyə imkan verir.

APNG formatı (Animasiyalı Portativ Şəbəkə Qrafikası). PNG formatına əsaslanan şəkil formatı. Animasiya saxlamağa imkan verir və həmçinin şəffaflığı dəstəkləyir.

SVG formatı (Ölçülənə bilən vektor qrafikası). SVG rəsmi XML formatında təsvir edilmiş həndəsi fiqurlar toplusundan ibarətdir: xətt, ellips, çoxbucaqlı və s. Həm statik, həm də animasiyalı qrafika dəstəklənir. Xüsusiyyətlər dəstinə müxtəlif çevrilmələr, alfa maskaları, filtr effektləri, şablonlardan istifadə etmək imkanı daxildir. SVG şəkilləri keyfiyyətini itirmədən ölçüsünü dəyişdirilə bilər.

BMP formatı (Bitmap şəkli). Şablonu piksellərdən ibarət düzbucaqlı şəbəkə olan sıxılmamış (orijinal) bitmapı təmsil edir. Bitmap faylı başlıqdan, palitradan və qrafik məlumatlardan ibarətdir. Başlıq qrafik təsvir və fayl haqqında məlumatları (pikselin dərinliyi, hündürlüyü, eni və rənglərin sayı) saxlayır. Palitra yalnız palitralı şəkilləri (8 bit və ya daha az) ehtiva edən və 256 elementdən çox olmayan Bitmap fayllarında müəyyən edilir. Qrafik məlumatlar şəklin özünü təmsil edir. Bu formatda rəng dərinliyi hər piksel üçün 1, 2, 4, 8, 16, 24, 32, 48 bit ola bilər.

ICO formatı (Windows simvolu). Microsoft Windows-da fayl simvolu saxlama formatı. Həmçinin, Windows ikonası İnternetdəki veb-saytlarda simvol kimi istifadə olunur. Bu, brauzerdə sayt ünvanı və ya əlfəcin yanında göstərilən bu formatın şəklidir. Bir ICO faylı hər birinin ölçüsü və rəngi ayrıca təyin olunan bir və ya daha çox nişandan ibarətdir. İşarənin ölçüsü istənilən ola bilər, lakin ən çox yayılmış nişanlar tərəfləri 16, 32 və 48 piksel olan kvadrat nişanlardır.

2. Tag

Tag qrafik təsviri qaynar nöqtələrlə xəritə kimi təqdim etməyə xidmət edir. Qaynar nöqtələr siçan kursorunun hover zamanı necə dəyişməsi ilə müəyyən edilir. Qaynar nöqtələrə klikləməklə istifadəçi əlaqəli sənədlərə keçə bilər.

Xəritənin adını təyin edən teq üçün ad atributu mövcuddur. Teq üçün ad atributunun dəyəri elementin usemap atributunda olan ada uyğun olmalıdır :

...

Element bir sıra elementləri ehtiva edir , xəritə təsvirində interaktiv sahələri müəyyən edən.

3. Tag

Tag müştəri tərəfi təsvir xəritəsində yalnız bir qaynar nöqtəni təsvir edir. Elementin bağlama teqi yoxdur. Bir qaynar nöqtə digəri ilə üst-üstə düşərsə, o zaman qaynar nöqtələr siyahısından ilk keçid həyata keçiriləcək.

Cədvəl 2. Tag atributları
Atribut Qısa Təsvir
alt Xəritənin aktiv sahəsi üçün alternativ mətni təyin edir.
koordinatları Bölgənin ekrandakı mövqeyini təyin edir. Koordinatlar uzunluq vahidləri ilə müəyyən edilir və vergüllə ayrılır:
üçün dairə— mərkəzin koordinatları və dairənin radiusu;
üçün düzbucaqlı— yuxarı sol və aşağı sağ künclərin koordinatları;
üçün çoxbucaqlı— çoxbucaqlı təpələrinin koordinatları düzgün ardıcıllıqla, həmçinin rəqəmin məntiqi tamamlanması üçün birincilərə bərabər olan sonuncu koordinatları da göstərmək tövsiyə olunur.
yükləyin Href atributunu tamamlayır və brauzerə bildirir ki, resurs, məsələn, onu əvvəlcədən açmaq əvəzinə (PDF faylı kimi) istifadəçi linki kliklədiyi anda yüklənməlidir. Atributa ad verməklə yüklənmiş obyektə ad vermiş oluruq. Atributun dəyərini göstərmədən istifadə etməyə icazə verilir.
href Link üçün URL-i müəyyən edir. Mütləq və ya nisbi keçid ünvanı göstərilə bilər.
hreflang Əlaqədar veb sənədin dilini təyin edir. Yalnız href atributu ilə birlikdə istifadə olunur. Qəbul edilmiş dəyərlər dil kodunu bildirən bir cüt hərfdən ibarət qısaldılmışdır.
media Faylın hansı cihaz növləri üçün optimallaşdırılacağını müəyyənləşdirir. Dəyər istənilən media sorğusu ola bilər.
rel Href atributunu cari sənəd və əlaqəli sənəd arasındakı əlaqə haqqında məlumatla doldurur. Qəbul edilmiş dəyərlər:
alternativ - sənədin alternativ versiyasına keçid (məsələn, çap edilə bilən səhifə, tərcümə və ya güzgü).
müəllif - sənədin müəllifinə keçid.
bookmark əlfəcinlər üçün istifadə olunan daimi URL-dir.
kömək - kömək üçün keçid.
lisenziya - Bu veb sənəd üçün müəllif hüququ məlumatlarına keçid.
sonrakı/əvvəlki - fərdi URL-lər arasındakı əlaqəni göstərir. Bu işarələmə vasitəsilə Google bu səhifələrin məzmununun məntiqi ardıcıllıqla bağlı olduğunu müəyyən edə bilər.
nofollow - axtarış sisteminə bu səhifədəki və ya müəyyən bir keçiddəki keçidləri izləməyi qadağan edir.
noreferrer - göstərir ki, keçidi izləyərkən brauzer HTTP sorğu başlığını (Referrer) göndərməməlidir ki, burada sayt ziyarətçisinin hansı səhifədən gəldiyi barədə məlumat var.
prefetch - hədəf sənədin önbelleğe alınması lazım olduğunu göstərir, yəni. Arxa fonda olan brauzer səhifənin məzmununu öz keşinə yükləyir.
axtarış Hədəf sənəddə axtarış alətinin olduğunu göstərir.
tag - cari sənəd üçün açar sözü təyin edir.
formalar Xəritədə qaynar nöqtənin formasını və onun koordinatlarını təyin edir. Aşağıdakı dəyərləri qəbul edə bilər:
düz düzbucaqlı aktiv sahədir;
dairə - dairə şəklində aktiv sahə;
poli - çoxbucaqlı şəklində aktiv sahə;
default — qaynar nöqtə şəklin bütün sahəsini tutur.
hədəf Linkə kliklədikdə sənədin harada yüklənəcəyini müəyyən edir. Aşağıdakı dəyərləri alır:
_self - səhifə cari pəncərəyə yüklənir;
_blank - səhifə yeni brauzer pəncərəsində açılır;
_parent - səhifə ana çərçivəyə yüklənir;
_top - Səhifə tam brauzer pəncərəsində yüklənir.
növü Bağlantı fayllarının MIME növünü təyin edir, yəni. fayl uzantısı.

4. Təsvir xəritəsinin yaradılması nümunəsi

1) Mənbə şəklini istədiyiniz formanın aktiv sahələrinə işarələyirik. Sahə koordinatları bir fotoşəkil emal proqramı ilə hesablana bilər, məsələn, Adobe Photoshop və ya Çəkmək.


düyü. 1. Xəritə yaratmaq üçün təsvirin işarələnməsi nümunəsi

2) Xəritənin adını etiketə əlavə edərək təyin edin ad atributundan istifadə etməklə. Biz eyni dəyəri etiketin usemap atributuna təyin edirik .

Jpg" alt="flowers_foto" width="680" height="383" usemap="#flowers"> !} gerbera sümbül çobanyastığı lalə
düyü. 2. Şəkil xəritəsinin yaradılması nümunəsi, çiçəyin üzərinə tıkladığınız zaman təsviri olan səhifəyə keçirsiniz

Vektor qrafikası çapda geniş istifadə olunur. Lakin vebsaytlar üçün biz onu SVG ilə də istifadə edə bilərik ( Scalable Vector Graphic - miqyaslana bilən vektor qrafikası). görə W3.org spesifikasiyası SVG-ni belə müəyyən edir:

XML-də ikiölçülü qrafikləri təsvir etmək üçün dil. SVG üç növ obyektdən istifadə etməyə imkan verir: vektor qrafik formaları (məsələn, düz xətlərdən və əyrilərdən ibarət yollar), şəkillər və mətn.

2011-ci ilin avqust ayından SVG W3C tövsiyələrinə daxil edilsə də, bu texnologiya bitmaplarla müqayisədə bir sıra üstünlüklərə malik olsa da, praktiki olaraq veb layihələrində istifadə edilmir. Bu dərsliklər silsiləsində biz veb səhifələrdə SVG elementləri ilə necə işləməyi təqdim edəcəyik.

SVG-nin üstünlükləri

Qətnamə Müstəqilliyi

Raster təsvirlər həlledicilikdən asılıdır. Müəyyən miqyasda ölçü dəyişdirildikdə qrafika görünməz olur. Vektor qrafikası ilə belə bir vəziyyət prinsipcə mümkün deyil, çünki hər şey miqyas dəyişdikdə avtomatik olaraq yenidən hesablanan və keyfiyyət istənilən şəraitdə qorunan riyazi ifadələrlə təmsil olunur.

HTTP sorğularının sayının azaldılması

SVG birbaşa daxil edilə bilər HTML sənədi svg etiketindən istifadə edərək, brauzerin qrafiklərə xidmət göstərmək üçün sorğulara ehtiyacı yoxdur. Bu yanaşma veb saytın yükləmə xüsusiyyətlərinə yaxşı təsir göstərir.

Stillər və skriptlər

svg teqi ilə yerləşdirmə də CSS ilə qrafika üslubunu asanlaşdırır. Arxa fon rəngi, şəffaflıq, haşiyələr və s. kimi obyekt xüsusiyyətlərini dəyişə bilərsiniz. Eynilə, qrafiklər JavaScript ilə manipulyasiya edilə bilər.

Redaktə etmək və canlandırmaq asandır

SVG obyektləri CSS və ya JavaScript istifadə edərək canlandırıla bilər. Siz həmçinin SVG obyektlərini dəyişdirə bilərsiniz mətn redaktoru.

Daha kiçik fayl ölçüsü

SVG rastr qrafika ilə müqayisədə daha kiçik fayl ölçüsünə malikdir.

Əsas SVG formaları

Spesifikasiyaya uyğun olaraq bir neçə əsas fiqur çəkə bilərik: xətt, polyline, düzbucaqlı, dairə, ellips. Bütün elementlər etiketə daxil edilməlidir ... . Əsas elementləri ətraflı nəzərdən keçirin.

Xətt

SVG-də xətt çəkmək üçün elementdən istifadə olunur . O, iki nöqtənin müəyyən edilməli olduğu bir seqment çəkir: başlanğıc və son.

Seqmentin başlanğıcı x1 və y1 atributları ilə, son nöqtəsi isə x2 və y2 atributlarında koordinatlarla müəyyən edilir.

Xəttin rəngini və enini təyin etmək üçün müvafiq olaraq istifadə olunan iki başqa atribut (vuruş və vuruş eni) var.

Bu obyekt oxşardır , lakin elementi ilə Eyni anda bir neçə xətt çəkə bilərsiniz.

Element Nöqtələrin koordinatlarını təyin etmək üçün istifadə olunan nöqtə atributunu ehtiva edir.

Element ilə işlənmiş düzbucaqlı . Genişliyi və hündürlüyü təyin etməliyik.

Bir dairə çəkmək üçün elementdən istifadə edin . Aşağıdakı misalda r atributunda müəyyən edilmiş radiusu 100 olan çevrə yaradırıq:

İlk iki atribut cx və cy mərkəzin koordinatlarını təyin edir. Yuxarıdakı misalda hər iki koordinatı 102-yə təyin etdik. Varsayılan dəyər 0-dır.

Ellips çəkmək üçün elementdən istifadə edin . O, bir dairə kimi işləyir, lakin rx və ry atributlarından istifadə edərək x və y radiuslarını xüsusi olaraq təyin edə bilərik:

Element Üçbucaq, altıbucaqlı və s. kimi çoxüzlü formaları göstərir. Misal üçün:

Vektor qrafikası üçün redaktordan istifadə

Sadə SVG obyektlərini HTML-də göstərmək asandır. Lakin obyektin mürəkkəbliyi artdıqca, bu təcrübə böyük həcmdə işlərin görülməsinə səbəb ola bilər.

Lakin vektor qrafikası üçün istənilən redaktordan istifadə edə bilərsiniz (məsələn, Adobe Illustrator və ya inkscape) obyektlər yaratmaq. Əgər belə bir alətə sahibsinizsə, HTML teqində qrafikləri kodlaşdırmaqdansa, onlara lazımi obyektləri çəkmək daha asandır.

Vektor qrafikası üçün əmrləri fayldan HTML sənədinə köçürə bilərsiniz. Və ya aşağıdakı elementlərdən birini istifadə edərək .svg faylını yerləşdirə bilərsiniz: embed , iframe və obyekt .

Nəticə eyni olacaq.

Brauzer dəstəyi

SVG var yaxşı dəstəkəksər müasir brauzerlər, IE 8 və daha əvvəlki versiyalar istisna olmaqla. Lakin məsələ JavaScript kitabxanasından istifadə etməklə həll edilə bilər. İşi asanlaşdırmaq üçün SVG kodunu Raphael formatına çevirmək üçün ReadySetRaphael.com alətindən istifadə edə bilərsiniz.

Əvvəlcə kitabxananı yükləyirik və HTML sənədinə daxil edirik. Sonra .svg faylını yükləyirik, yüklədikdən sonra yaranan kodu kopyalayıb funksiyaya yapışdırırıq:

Bədən etiketində rsr ID ilə aşağıdakı div elementini yerləşdiririk.

Və hər şey hazırdır.

Serialdakı növbəti dərslikdə biz CSS-də SVG obyektlərinin üslubunu necə tərtib etməyə baxacağıq.

Vektor qrafikası çap materiallarında geniş istifadə olunur. Vebsayta gəlincə, burada biz SVG və ya Ölçəklənən Vektor Qrafikası (miqyaslana bilən) vasitəsilə vektor qrafikasından da istifadə edə bilərik. Vektor qrafikası). Rəsmi W3.org spesifikasiyasında o, aşağıdakı kimi təsvir edilmişdir:

XML-dən istifadə edərək ikiölçülü qrafikləri təsvir etmək üçün dil. SVG bizə üç növdən istifadə etməyə imkan verir qrafik obyektlər: Vektor qrafik formaları (məsələn, düz və əyri xətlərdən ibarət yollar), şəkillər və mətn.

Texnologiya 1999-cu ildən mövcuddur və 16 avqust 2011-ci ildə W3C tövsiyələri siyahısına daxil edilmişdir. Bununla belə, bitmaplar əvəzinə vektor qrafiklərindən istifadənin bir çox üstünlüklərinə baxmayaraq, SVG hələ də geniş istifadə olunmur.

Ölçəklənən Vektor Qrafiklərinin Faydaları

Veb sayt səhifələrində qrafiklərdən istifadə baxımından genişlənə bilən vektor qrafikası bizə rastr qrafika ilə müqayisədə bir sıra üstünlüklər təklif edir, bunlara daxildir:

Qətnamə Müstəqilliyi

Raster qrafika (və ya Bitmap) piksellərdən istifadə edərək yaradıldığı üçün rezolyusiyadan asılıdır. Belə bir qrafik element ölçüsündə artırsa, böyük kvadratlar dərhal görünəcəkdir. Bu, vektor qrafikası ilə baş vermir, çünki onlar rezolyusiyadan asılı deyil, əksinə, riyazi hesablamalar üzərində qurulur ki, bu da bizə onları istənilən ölçüdə artırmağa və keyfiyyətini itirməməyə imkan verir.

HTTP sorğularının azaldılması

Ölçəklənən vektor qrafikası svg teqindən istifadə etməklə birbaşa HTML sənədinə daxil edilə bilər, ona görə də brauzerin qrafik üçün əlavə sorğuya ehtiyacı yoxdur. O, həmçinin veb-saytın fəaliyyətinə müsbət təsir göstərir.

Styling və skript

svg teqi ilə birbaşa inteqrasiya bizə qrafikləri tərtib etməyə imkan verəcəkdir CSS yardımı. Biz HTML-də olduğu kimi fon rəngi, qeyri-şəffaflıq, sərhədlər və s. kimi obyekt xüsusiyyətlərini dəyişə bilərik. Biz həmçinin javascript vasitəsilə qrafikləri idarə edə bilərik.

Canlandırma və redaktə etmək bacarığı

SVG obyekti animasiya elementi və ya jQuery kimi JS kitabxanası ilə canlandırıla bilər. SVG obyekti həmçinin hər hansı mətn redaktoru və ya (pulsuz) və ya kimi qrafik proqram təminatı ilə redaktə edilə bilər.

Daha kiçik fayl ölçüsü

SVG rastr qrafikadan daha kiçik fayl ölçüsünə malikdir.

SVG istifadə edərək sadə fiqurlar çəkin

Spesifikasiyadan sonra biz SVG ilə çoxbucaqlılar, dairələr, xətlər və ya ellipslər çəkə bilərik və brauzerin miqyaslana bilən vektor qrafikası yaratması üçün bütün bu qrafik elementlər "svg" teqlərində yerləşdirilməlidir. Aşağıdakı nümunələrə baxaq:

Xətt

SVG-dən istifadə edərək xətt çəkmək üçün "xətt" elementindən istifadə edə bilərik. Bu element bir düz xətt çəkmək üçün istifadə olunur, ona görə də o, yalnız iki nöqtədən ibarət olacaq: başlanğıc və son.




Yuxarıda gördüyünüz kimi, xəttin başlanğıc nöqtəsi koordinatı ilk iki atributda x1 və x2, son nöqtə koordinatı isə y1 və y2 atributlarında göstərilmişdir.

Burada həmçinin iki başqa atribut var: sərhədin rənginə və eninə cavabdeh olan stroke və stroke-width. Digər tərəfdən, bu atributları daxili üslubda da müəyyən edə bilərik:

Style="stroke-width:1; stroke:rgb(0,0,0);"
və bizə eyni nəticəni verəcəkdir.


*

qırıq xətt

Bu, "xətt"ə çox bənzəyir, lakin "polyline" elementi ilə biz bir əvəzinə bir neçə xətt çəkə bilərik. Budur bir nümunə:




"Polyline" elementi xətlərin bütün koordinatlarını ehtiva edən nöqtə atributlarına malikdir.


*

Düzbucaqlı

Biz yalnız "düz" elementin köməyi ilə bir düzbucaqlı çəkə bilərik. Biz yalnız eni və hündürlüyü təyin etməliyik:





*

Dairə

"Dairə" elementi ilə də dairə çəkə bilərik. Bu misalda r atributu ilə müəyyən edilən radiusu 100 olan dairə çəkəcəyik:




İlk iki atribut, cx və cy, dairənin mərkəzi koordinatını təyin edir. Yuxarıdakı misalda biz həm x, həm də y koordinatları üçün 102 təyin etdik. Bu atributlar təyin edilmədikdə, onlar standart olaraq 0 olacaq.


*

Ellips

“Elips” elementi ilə ellipslər çəkə bilərik. Burada hər şey dairə ilə eyni şəkildə işləyir, lakin bu dəfə biz rx və ry atributlarından istifadə edərək x xətti radiusunu və y xətti radiusunu ayrıca idarə edə bilərik.





*

Poliqon

"Çoxbucaqlı" elementi ilə çoxbucaqlılar, üçbucaq, səkkizbucaq kimi çoxbucaqlı və tərəfləri olan formalar çəkə bilərik. Misal:





*

Vektor qrafik redaktorundan istifadə etməklə

Gördüyünüz kimi, HTML-də SVG ilə sadə fiqurlar çəkmək olduqca asandır. Ancaq daha mürəkkəb bir obyektə ehtiyacımız varsa, bu üsul artıq bizə uyğun olmayacaq.

Xoşbəxtlikdən, yuxarıda qeyd etdiyimiz kimi, işi görmək üçün Adobe Illustrator və ya Inkscape kimi vektor qrafik redaktorundan istifadə edə bilərik. Bu proqram təminatı ilə tanışsınızsa, HTML kodundan istifadə etmək əvəzinə, istifadəçi dostu interfeysdən istifadə edərək asanlıqla obyektlər çəkə bilərsiniz.

Və ya siz həmçinin aşağıdakı elementlərdən birini istifadə edərək svg faylının özünü yerləşdirə bilərsiniz: embed, iframe, object.


Nəticə oxşar olacaq.

IN bu misal ilə istifadə etdik.


*

Genişləndirilə bilən vektor qrafikası üçün brauzer dəstəyi

Brauzer dəstəyi baxımından, IE8 və daha əvvəlki versiyalar istisna olmaqla, genişlənə bilən vektor qrafikaları artıq çox yaxşı dəstəklənir. Lakin bu, adlı javascript kitabxanası ilə düzəldilə bilər. İşləri asanlaşdırmaq üçün biz SVG kodumuzu Raphael tərəfindən dəstəklənən formata çevirmək üçün alətdən istifadə edəcəyik.


Başlamaq üçün Raphael.js kitabxanasını endirin və HTML kodunuza daxil edin. Sonra, svg faylını sayta yükləyin, yaradılan kodu kopyalayıb aşağıdakı yükləmə funksiyasına yapışdırın:

window.onload=function() (
//Rafael kodu bura gedir
}
Bədən etiketinin içərisinə id atributu rsr ilə aşağıdakı div daxil edin.


Və işimiz bitdi! Aşağıdakı linkdəki nümunəyə baxın.

Yekun olaraq

Beləliklə, SVG-nin əsasları budur. Ümid edirik ki, indi bu mövzu haqqında bir az anlayışınız var. Bu biridir daha yaxşı yollar Səhifələrinizin performansını optimallaşdırın, eyni zamanda hətta Retina ekranlarında aydın şəkildə göstərilə bilən qrafikləri təmin edin.

Həmişə olduğu kimi, əgər maraqlanırsınızsa, biz sizin üçün kiçik bir əlavə məqalə seçmişik.

* (SVG-yə giriş)
* (SVG: qətnamədən asılı olmayaq)
* (Niyə SVG istifadə etmirsiniz?)

Oxuduğunuz üçün təşəkkür edirik və ümid edirik ki, bu məqalə sizin üçün faydalı olacaq!

Diqqət! Sizin gizli mətnə ​​baxmaq icazəniz yoxdur.