{"id":163,"date":"2020-12-02T07:42:39","date_gmt":"2020-12-02T06:42:39","guid":{"rendered":"https:\/\/piotrgabriel.pl\/wiki\/?p=163"},"modified":"2021-06-29T06:48:36","modified_gmt":"2021-06-29T04:48:36","slug":"mapy-obrazu-w-jezyku-html","status":"publish","type":"post","link":"https:\/\/piotrgabriel.pl\/wiki\/mapy-obrazu-w-jezyku-html\/","title":{"rendered":"Mapy obrazu w j\u0119zyku HTML"},"content":{"rendered":"<p>Dowiedz czym s\u0105 mapy obrazu w HTML, jak je mozna wykorzysta\u0107 i jak je zrobi\u0107.<!--more--><\/p>\n<p>Mapy obrazu w j\u0119zyku HTML tworzymy &#8222;od wiek\u00f3w&#8221; w niemal identyczny spos\u00f3b.\u00a0 S\u0142u\u017c\u0105 one mi\u0119dzy innymi do tego by obrazek statyczny wykorzysta\u0107 jako taki, kt\u00f3rego pewne &#8211; oznaczone &#8211; obszary b\u0119d\u0105 klikalnymi linkami (hiper\u0142\u0105czami \/ odno\u015bnikami) do zakotwiczonych w nich podstron czy innych materia\u0142\u00f3w.<\/p>\n<h2>Definiowanie map obrazu<\/h2>\n<p>Znacznik HTML <code class=\"w3-codespan\">&lt;map&gt;<\/code>definiuje map\u0119 obrazu.\u00a0Mapa obrazu to obraz z klikalnymi obszarami.\u00a0Obszary s\u0105 definiowane za pomoc\u0105 co najmniej jednego znacznika <code class=\"w3-codespan\">&lt;area&gt;<\/code>.<\/p>\n<p>Pos\u0142u\u017cymy si\u0119 ni\u017cej przyk\u0142adem z <a href=\"https:\/\/www.w3schools.com\/html\/html_images_imagemap.asp\" rel=\"nofollow noopener\" target=\"_blank\">https:\/\/www.w3schools.com\/<\/a><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-164 size-full\" src=\"https:\/\/piotrgabriel.pl\/wiki\/wp-content\/uploads\/2020\/12\/mapa-obrazu.jpg\" alt=\"\" width=\"500\" height=\"474\" title=\"\" srcset=\"https:\/\/piotrgabriel.pl\/wiki\/wp-content\/uploads\/2020\/12\/mapa-obrazu.jpg 500w, https:\/\/piotrgabriel.pl\/wiki\/wp-content\/uploads\/2020\/12\/mapa-obrazu-300x284.jpg 300w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/p>\n<p><code><span class=\"tagnamecolor\"><span class=\"tagcolor\">&lt;<\/span>img<span class=\"attributecolor\">\u00a0src<span class=\"attributevaluecolor\">=\"workplace.jpg\"<\/span>\u00a0alt<span class=\"attributevaluecolor\">=\"Workplace\"<\/span>\u00a0usemap<span class=\"attributevaluecolor\">=\"#workmap\"<\/span><\/span><span class=\"tagcolor\">&gt;<\/span><\/span><\/code><br \/>\n<code><span class=\"tagnamecolor\"><span class=\"tagcolor\">&lt;<\/span>map<span class=\"attributecolor\">\u00a0name<span class=\"attributevaluecolor\">=\"workmap\"<\/span><\/span><span class=\"tagcolor\">&gt;<\/span><\/span><\/code><br \/>\n<code>\u00a0\u00a0<span class=\"tagnamecolor\"><span class=\"tagcolor\">&lt;<\/span>area<span class=\"attributecolor\">\u00a0shape<span class=\"attributevaluecolor\">=\"rect\"<\/span>\u00a0coords<span class=\"attributevaluecolor\">=\"34,44,270,350\"<\/span>\u00a0alt<span class=\"attributevaluecolor\">=\"Computer\"<\/span>\u00a0href<span class=\"attributevaluecolor\">=\"computer.htm\"<\/span><\/span><span class=\"tagcolor\">&gt;<\/span><\/span><\/code><br \/>\n<code>\u00a0\u00a0<span class=\"tagnamecolor\"><span class=\"tagcolor\">&lt;<\/span>area<span class=\"attributecolor\">\u00a0shape<span class=\"attributevaluecolor\">=\"rect\"<\/span>\u00a0coords<span class=\"attributevaluecolor\">=\"290,172,333,250\"<\/span>\u00a0alt<span class=\"attributevaluecolor\">=\"Phone\"<\/span>\u00a0href<span class=\"attributevaluecolor\">=\"phone.htm\"<\/span><\/span><span class=\"tagcolor\">&gt;<\/span><\/span><\/code><br \/>\n<code>\u00a0\u00a0<span class=\"tagnamecolor\"><span class=\"tagcolor\">&lt;<\/span>area<span class=\"attributecolor\">\u00a0shape<span class=\"attributevaluecolor\">=\"circle\"<\/span>\u00a0coords<span class=\"attributevaluecolor\">=\"337,300,44\"<\/span>\u00a0alt<span class=\"attributevaluecolor\">=\"Coffee\"<\/span>\u00a0href<span class=\"attributevaluecolor\">=\"coffee.htm\"<\/span><\/span><span class=\"tagcolor\">&gt;<\/span><\/span><\/code><br \/>\n<code><span class=\"tagnamecolor\"><span class=\"tagcolor\">&lt;<\/span>\/map<span class=\"tagcolor\">&gt;<\/span><\/span><\/code><\/p>\n<p>W kodzie mamy znacznik img, w kt\u00f3rym znajduje si\u0119 <code><span class=\"tagnamecolor\"><span class=\"attributecolor\">usemap<span class=\"attributevaluecolor\">=\"#workmap\"<\/span><\/span><\/span><\/code> gdzie #workmap to odniesienie si\u0119 do przetrzeni naszej mapy, jej obszaru<\/p>\n<p>Kolejno mamy znacznik map z atrybutem name a w nim w\u0142a\u015bnie nasz\u00a0 <code><span class=\"tagnamecolor\"><span class=\"attributecolor\"><span class=\"attributevaluecolor\">workmap<\/span><\/span><\/span><\/code> czyli <code><span class=\"tagnamecolor\"><span class=\"tagcolor\">&lt;<\/span>map<span class=\"attributecolor\">\u00a0name<span class=\"attributevaluecolor\">=\"workmap\"&gt;<\/span><\/span><\/span><\/code>. To w\u0142a\u015bnie tutaj odnosi si\u0119 nasz <code><span class=\"tagnamecolor\"><span class=\"tagcolor\">&lt;<\/span>img<span class=\"attributecolor\">\u00a0src<span class=\"attributevaluecolor\">=\"workplace.jpg\"<\/span>\u00a0alt<span class=\"attributevaluecolor\">=\"Workplace\"<\/span>\u00a0usemap<span class=\"attributevaluecolor\">=\"#workmap\"<\/span><\/span><span class=\"tagcolor\">&gt;<\/span><\/span><\/code><\/p>\n<p>Wa\u017cnym wi\u0119c jest aby atrybut name mia\u0142 tak\u0105 sam\u0105 warto\u015b\u0107 jak atrybut usemap!<\/p>\n<h2>Obszary w naszej mapie HTML<\/h2>\n<p>Obszary czyli elementy, kt\u00f3re b\u0119d\u0105 wyznacza\u0142y klikalny fragment naszej mapy. Definiujemy na 4 sposoby;<\/p>\n<ul>\n<li><code class=\"w3-codespan\">rect<\/code>\u00a0&#8211; definiuje prostok\u0105tny region<\/li>\n<li><code class=\"w3-codespan\">circle<\/code>\u00a0&#8211; definiuje obszar ko\u0142owy<\/li>\n<li><code class=\"w3-codespan\">poly<\/code>\u00a0&#8211; definiuje region wielok\u0105tny<\/li>\n<li><code class=\"w3-codespan\">default<\/code>\u00a0&#8211; okre\u015bla ca\u0142y region<\/li>\n<\/ul>\n<h2>Prostok\u0105tny obszaru czyli shape=&#8221;rect&#8221;<\/h2>\n<p>Wsp\u00f3\u0142rz\u0119dne prostok\u0105ta definiuje si\u0119 za pomoc\u0105 osi X i Y. Z dw\u00f3ch wsp\u00f3\u0142rz\u0119dnych powstaje wi\u0119c punkt pierwszy na naszej mapie, czyli:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-165 size-full\" src=\"https:\/\/piotrgabriel.pl\/wiki\/wp-content\/uploads\/2020\/12\/rect1.jpg\" alt=\"\" width=\"499\" height=\"475\" title=\"\" srcset=\"https:\/\/piotrgabriel.pl\/wiki\/wp-content\/uploads\/2020\/12\/rect1.jpg 499w, https:\/\/piotrgabriel.pl\/wiki\/wp-content\/uploads\/2020\/12\/rect1-300x286.jpg 300w\" sizes=\"auto, (max-width: 499px) 100vw, 499px\" \/><\/p>\n<p>Tak jak rozpisuje to przyk\u0142ad z w3school.com wsp\u00f3\u0142rz\u0119dne oznaczonego w czerwonym k\u00f3\u0142ku punktu to 34 i 44. Pierwsza wsp\u00f3\u0142rz\u0119dna liczona jest &#8222;od lewego roku&#8221;, czyli 34 piksele od lewej. Wsp\u00f3\u0142rz\u0119dna 2, czyli 44px liczona jest od g\u00f3ry.<\/p>\n<p>Analogicznie wi\u0119c musi nam powsta\u0107 2 tak oznaczony punkt na naszej mapie, by obszar zaznaczy\u0142 prostok\u0105t. Czyli podaj\u0105c 270 i 350px (od lewej, od g\u00f3ry) mamy kolejy punkt.<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-166 size-full\" src=\"https:\/\/piotrgabriel.pl\/wiki\/wp-content\/uploads\/2020\/12\/rect2.jpg\" alt=\"\" width=\"500\" height=\"473\" title=\"\" srcset=\"https:\/\/piotrgabriel.pl\/wiki\/wp-content\/uploads\/2020\/12\/rect2.jpg 500w, https:\/\/piotrgabriel.pl\/wiki\/wp-content\/uploads\/2020\/12\/rect2-300x284.jpg 300w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/p>\n<p>Efektem b\u0119dzie klikalna przestrze\u0144, prowadz\u0105ca do jakiego\u015b adresu, np.<\/p>\n<p><code><span class=\"tagcolor\">&lt;<\/span>area<span class=\"attributecolor\">\u00a0shape<span class=\"attributevaluecolor\">=\"rect\"<\/span>\u00a0coords<span class=\"attributevaluecolor\">=\"34, 44, 270, 350\"<\/span>\u00a0href<span class=\"attributevaluecolor\">=\"computer.htm\"<\/span><\/span><span class=\"tagcolor\">&gt;<\/span><\/code><\/p>\n<h2>Obszar ko\u0142a czyli shape=&#8221;circle&#8221;<\/h2>\n<p>Analogicznie jak w przypadku prostok\u0105ta, z tym \u017ce teraz mamy do czynienia z 3 wsp\u00f3\u0142rz\u0119dnymi.<\/p>\n<p>Pierwsze dwie definiuj\u0105 \u015brodek naszego ko\u0142a, id\u0105c od lewej i od g\u00f3ry. Trzecia wsp\u00f3\u0142rz\u0119dna definiuje promie\u0144 naszego okr\u0119gu wyra\u017cony w pixelach.<\/p>\n<p>na przyk\u0142ad <code><span class=\"tagcolor\">&lt;<\/span>area<span class=\"attributecolor\">\u00a0shape<span class=\"attributevaluecolor\">=\"circle\"<\/span>\u00a0coords<span class=\"attributevaluecolor\">=\"337, 300, 44\"<\/span>\u00a0href<span class=\"attributevaluecolor\">=\"coffee.htm\"<\/span><\/span><span class=\"tagcolor\">&gt;<\/span><\/code><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-167 size-full\" src=\"https:\/\/piotrgabriel.pl\/wiki\/wp-content\/uploads\/2020\/12\/circle.jpg\" alt=\"\" width=\"500\" height=\"474\" title=\"\" srcset=\"https:\/\/piotrgabriel.pl\/wiki\/wp-content\/uploads\/2020\/12\/circle.jpg 500w, https:\/\/piotrgabriel.pl\/wiki\/wp-content\/uploads\/2020\/12\/circle-300x284.jpg 300w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/p>\n<h2>Obszar wielopunktowy, poli czyli shape=&#8221;poli&#8221;<\/h2>\n<p>Analogicznie jak w przypadku circle i rect ka\u017cdy z naszych punkt\u00f3w musi by\u0107 zdefiniowany dwiema wsp\u00f3\u0142rz\u0119dnymi:<\/p>\n<ol>\n<li>pierwsza od lewej (w pixelach);<\/li>\n<li>druga wsp\u00f3\u0142rz\u0119dna od g\u00f3ry (w pixelach);<\/li>\n<\/ol>\n<p>przykad bazuj\u0105cy na poni\u017cszym obrazku mo\u017ce wi\u0119c przybra\u0107 tak\u0105 posta\u0107:<\/p>\n<p><code><span class=\"tagcolor\">&lt;<\/span>area<span class=\"attributecolor\">\u00a0shape<span class=\"attributevaluecolor\">=\"poly\"<\/span>\u00a0coords<span class=\"attributevaluecolor\">=\"140,121,181,116,204,160,204,222,191,270,140,329,85,355,58,352,37,322,40,259,103,161,128,147\"<\/span>\u00a0href<span class=\"attributevaluecolor\">=\"croissant.htm\"<\/span><\/span><span class=\"tagcolor\">&gt;<\/span><\/code><\/p>\n<p>Dzi\u0119ki temu mo\u017cemy bardzo precyzyjnie oznaczy\u0107 \/ zarysowa\u0107 obszar klikalny naszej mapy.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-168 size-full\" src=\"https:\/\/piotrgabriel.pl\/wiki\/wp-content\/uploads\/2020\/12\/poli.jpg\" alt=\"\" width=\"450\" height=\"435\" title=\"\" srcset=\"https:\/\/piotrgabriel.pl\/wiki\/wp-content\/uploads\/2020\/12\/poli.jpg 450w, https:\/\/piotrgabriel.pl\/wiki\/wp-content\/uploads\/2020\/12\/poli-300x290.jpg 300w\" sizes=\"auto, (max-width: 450px) 100vw, 450px\" \/><\/p>\n<h2>Mapa obrazu i JavaScript<\/h2>\n<p>Klikalny obszar naszej mapy mo\u017ce te\u017c wywo\u0142ywa\u0107 akcje, na przyk\u0142ad tak\u0105 akcj\u0105 mo\u017ce by\u0107 edukacyjna mapa Polski, gdzie dziecko klikaj\u0105c na jaki\u015b powiat, otrzyma informacj\u0119 z ciekawostkami turystycznymi danego powiatu. Wystarczy doda\u0107 element JavaScriptowy &#8222;onclick&#8221; i napisa\u0107 odpowiedni\u0105 akcj\u0119 jako funkcj\u0119 w j\u0119zyku JavaScript.<\/p>\n<p>Przyk\u0142ad<\/p>\n<p><code><span class=\"tagnamecolor\"><span class=\"tagcolor\">&lt;<\/span>map<span class=\"attributecolor\">\u00a0name<span class=\"attributevaluecolor\">=\"workmap\"<\/span><\/span><span class=\"tagcolor\">&gt;<\/span><\/span><\/code><br \/>\n<code>\u00a0\u00a0<span class=\"tagnamecolor\"><span class=\"tagcolor\">&lt;<\/span>area<span class=\"attributecolor\">\u00a0shape<span class=\"attributevaluecolor\">=\"circle\"<\/span>\u00a0coords<span class=\"attributevaluecolor\">=\"337,300,44\"<\/span>\u00a0<strong>onclick<span class=\"attributevaluecolor\">=\"myFunction()\"<\/span><\/strong><\/span><span class=\"tagcolor\">&gt;<\/span><\/span><\/code><br \/>\n<code><span class=\"tagnamecolor\"><span class=\"tagcolor\">&lt;<\/span>\/map<span class=\"tagcolor\">&gt;<\/span><\/span><\/code><\/p>\n<p><code><strong><span class=\"tagnamecolor\"><span class=\"tagcolor\">&lt;<\/span>script<span class=\"tagcolor\">&gt;<\/span><\/span><span class=\"jscolor\"><br \/>\n<span class=\"jskeywordcolor\">function<\/span>\u00a0myFunction() {<br \/>\nalert(<span class=\"jsstringcolor\">\"You clicked the coffee cup!\"<\/span>);<br \/>\n}<br \/>\n<\/span><\/strong><span class=\"tagnamecolor\"><strong><span class=\"tagcolor\">&lt;<\/span>\/script<\/strong><span class=\"tagcolor\"><strong>&gt;<\/strong><\/span><\/span><\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dowiedz czym s\u0105 mapy obrazu w HTML, jak je mozna wykorzysta\u0107 i jak je zrobi\u0107.<\/p>\n","protected":false},"author":1,"featured_media":137,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[44],"tags":[45],"class_list":["post-163","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-html5-css3-javascript","tag-html5"],"_links":{"self":[{"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/posts\/163","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/comments?post=163"}],"version-history":[{"count":0,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/posts\/163\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/media\/137"}],"wp:attachment":[{"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/media?parent=163"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/categories?post=163"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/tags?post=163"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}