рдирдорд╕реНрдХрд╛рд░ред рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдореБрдЭреЗ рдЫрд╡рд┐ рдорд╛рдирдЪрд┐рддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ HTML рдХреА рдРрд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХрд╛ рдореМрдХрд╛ рдорд┐рд▓рд╛ред рд╕рдЪ рдХрд╣реВрдБ рддреЛ, рдореИрдВ рдЕрдХреНрд╕рд░ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛, рдФрд░ рдлрд┐рд░, рдЖрдорддреМрд░ рдкрд░, рд╕рдм рдХреБрдЫ рдПрдХ рдЖрдпрдд рдХреЗ рдЖрдХрд╛рд░ рдореЗрдВ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЪрд▓рд╛ рдЧрдпрд╛ред рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рдерд╛ред рдХрд╛рд░реНрдп рдЙрд╕ рдЫрд╡рд┐ рдХреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдкреЛрд╕реНрдЯ рдХрд░рдирд╛ рдерд╛ рдЬреЛ рджреЗрд╢ рдХрд╛ рдирдХреНрд╢рд╛ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛, рдФрд░, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдХрд┐рд╕реА рднреА рдХреИрдирд╡рд╛рд╕ рдпрд╛ svg рдХрд╛ рдХреЛрдИ рд╕рд╡рд╛рд▓ рдирд╣реАрдВ рдерд╛ред рдХреЗрд╡рд▓ html рдХреЗрд╡рд▓ рдХрдЯреНрдЯрд░! рдЗрд╕рд▓рд┐рдП, рдХрд╛рд░реНрдп рд╕реЗрдЯ рд╣реИ, Google рд╕рдХреНрд░рд┐рдп рд╣реИ, рдЖрдк рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рд┐рджреНрдзрд╛рдВрдд
рдЪрд▓реЛ рд╕рд┐рджреНрдзрд╛рдВрдд рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ред рдЫрд╡рд┐ рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ рджреЛ рдЯреИрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
рдорд╛рдирдЪрд┐рддреНрд░ - рдорд╛рдирдЪрд┐рддреНрд░ рдФрд░
рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдХрдВрдЯреЗрдирд░ - рдЪрдпрди рдХреНрд╖реЗрддреНрд░ред рдХрд╛рд░реНрдб рдПрдХ рдХреНрд╖реЗрддреНрд░ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИ рдФрд░ рдЙрдирдореЗрдВ рдЕрд╕реАрдорд┐рдд рд╕рдВрдЦреНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред
рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЯреИрдЧ, рдорд╛рдирдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд╣реЛрддрд╛ рд╣реИ:
- coord - рдЪрдпрди рдХреНрд╖реЗрддреНрд░ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ
- href - рд╡рд╣ рд▓рд┐рдВрдХ рдЬрд┐рд╕рд╕реЗ рдЬрд╝реЛрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдкрд░ рд╕рдВрдХреНрд░рдордг рд╣реЛ рдЬрд╛рдПрдЧрд╛
- nohref - рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд▓рд┐рдВрдХ рдирд╣реАрдВ рд╣реИ
- рдЖрдХрд╛рд░ - рдЪрдпрди рдЖрдХрд╛рд░
- рд╕рд░реНрдХрд▓ - рд╕рд░реНрдХрд▓ рдЪрдпрди рдХреНрд╖реЗрддреНрд░
- рдбрд┐рдлрд╝реЙрд▓реНрдЯ - рд╕рдВрдкреВрд░реНрдг рдЫрд╡рд┐ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ
- рдкрд╛рд▓реА - рдмрд╣реБрднреБрдЬ рдЪрдпрди рдХреНрд╖реЗрддреНрд░
- рдЖрдпрдд - рдЖрдпрдд рдЪрдпрди рдХреНрд╖реЗрддреНрд░
- рд▓рдХреНрд╖реНрдп - рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд▓рд┐рдВрдХ рдХрд╣рд╛рдВ рдЦреБрд▓реЗрдЧрд╛
рдХрд╛рд░реНрдб рдХреЛ рдЫрд╡рд┐ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП,
рдорд╛рдирдЪрд┐рддреНрд░ рдЯреИрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдордирдорд╛рдирд╛ рдирд╛рдо рдХреЗ рд╕рд╛рде
рдирд╛рдо рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ, рдФрд░ рдЫрд╡рд┐ рдкрд░
usemap рдЯреИрдЧ
рд▓рдЯрдХрд╛рдПрдВ , рдЬрд┐рд╕рдХрд╛ рдореВрд▓реНрдп рдкреНрд░рд╛рд░реВрдк
"# рдирд╛рдо" рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЪреВрдВрдХрд┐ рдЪрдпрди рдХреНрд╖реЗрддреНрд░ рдмрд╣реБрднреБрдЬ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛, рдЖрдХреГрддрд┐ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдорд╛рди, рдХреНрд╖реЗрддреНрд░ рдЯреИрдЧ, рд╣рдо рдкрд╛рд▓реА - рдмрд╣реБрднреБрдЬ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдореЛрдб рдореЗрдВ, рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рдКрдкрд░реА рдмрд╛рдПрдБ рдХреЛрдиреЗ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдмрд┐рдВрджреБ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ - x, yред рдбреЙрдЯреНрд╕ рдХреЛ рдХреЙрдорд╛ рд╕реЗ рднреА рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдХреЛ рдкрдврд╝ рд░рд╣рд╛ рд╣реИред

<img src="sample.png" width="200" height="200" alt="Sample" usemap="#sample"> <map name="sample"> <area shape="poly" coords="30,100,100,30,100,170,170,100"> </map>
рд▓реЗрдЦрди рдкреЗрдВрдЯ
рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рдмрд┐рдВрджреБ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝реЛрдЯреЛрд╢реЙрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╕реЗ рдЪрдХрд┐рдд рдирд╣реАрдВ рдерд╛, рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рд╡рд┐рдВрдбреЛ рд╕реЗ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ, рдФрд░ Google рдореЗрдВ рднрд░ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдХрд░рдг рдмрд╣реБрдд рд░рд╛рдХреНрд╖рд╕реА рдереЗред рдореЗрд░реЗ рдШреБрдЯрдиреЗ рдкрд░ рдЕрдкрдиреА рдЦреБрдж рдХреА рдЫреЛрдЯреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдореБрдЭреЗ рдЫрд╡рд┐ рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рдХреНрд╖реЗрддреНрд░ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдЕрдВрдХ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рдФрд░ рд╕рдорд╛рдкреНрдд рдХреЛрдб рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓реЗрдЖрдЙрдЯ рддреИрдпрд╛рд░ рдХрд░реЗрдВ:
<div class="canvas" id="container"> <div class="inner" id="canvas"> <img src="img/sample.jpg" width="934" height="407" alt="Sample"> </div> </div> <div class="bar" id="bar"></div> <div class="info" id="info"></div>
"рдкрд┐рдВрдЯ" рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдЯрди # рдмрд╛рд░ рдореЗрдВ рдбрд╛рд▓реЗ рдЬрд╛рдПрдВрдЧреЗред
#Info рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП html рдХреЛрдб рдХреЛ рдЬрдирд░реЗрдЯ рдХрд░реЗрдЧрд╛ред
рд╕реАрдПрд╕рдПрд╕:
body { margin: 0; padding: 20px; font-family: Arial, Helvetica, sans-serif; } img { border: none; outline: none; display: block; -moz-user-select: none; -webkit-user-select: none; user-select: none; } .canvas { border: 2px solid #333; padding: 2px; margin-bottom: 16px; display: inline-block; //display: inline; //zoom:1; } .canvas.draw { border-color: #3C0; } .canvas .inner { position: relative; } .canvas .point { width: 1px; height: 1px; background-color: #fff; border: 1px solid #000; overflow: hidden; position: absolute; } .bar { margin-bottom: 16px; } .info { background-color: #FCFCFC; border: 1px dotted #CCC; font-size: 12px; font-style: italic; padding: 8px; word-wrap: break-word; }
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рд▓реЗрдЦрди рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдпреБрджреНрдз рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдЧреИрд░-рдорд╛рдирдХ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдЖрд╢реНрдЪрд░реНрдп рди рдХрд░реЗрдВред рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо #canvas рдкрд░ рдореВрд╕рдбрд╛рдЙрди рдИрд╡реЗрдВрдЯ рд▓рдЯрдХрд╛рдПрдВрдЧреЗ, рдЬрд┐рд╕рдореЗрдВ рдЫрд╡рд┐ рдХреЗ рдПрдХ рдмрд┐рдВрджреБ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЙрд╕рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд░рд┐рдХреЙрд░реНрдб рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред
var addPoint = function(e){ var e = _.getEvent(e), offset = _.getOffset(nodes['canvas']), x = e.clientX + _.getDocScrollLeft() - offset[0], y = e.clientY + _.getDocScrollTop() - offset[1], node = nodes['canvas'].appendChild(_.node('div', {'class':'point'})); node.style.top = y-1+'px'; node.style.left = x-1+'px'; points.push({'x' : x, 'y' : y, 'node' : node}); e.preventDefault && e.preventDefault(); return false; };
рдлрд┐рд░ рд╣рдо рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рдорд╛рдирдЪрд┐рддреНрд░ рдХрд╛ HTML рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ред
var renderInfo = function(){ var text; _.clearNode(nodes['info']); nodes['info'].appendChild(_.node('span', '<map>')); nodes['info'].appendChild(_.node('br')); for(var i = 0, l = areas.length; i < l; i++){ if(areas[i].length > 0){ text = '<area shape="poly" coords="'; for(var i2 = 0, l2 = areas[i].length; i2 < l2; i2++){ if(i2 > 0){ text += ','; } text += areas[i][i2]['x'] + ',' + areas[i][i2]['y']; } text += '">'; nodes['info'].appendChild(_.node('span', text)); nodes['info'].appendChild(_.node('br')); } } nodes['info'].appendChild(_.node('span', '</map>')); };
рдЪрд▓реЛ рдПрдХ рдХрдХреНрд╖рд╛ рдореЗрдВ рд╕рдм рдХреБрдЫ рдлреНрд░реЗрдо рдХрд░рддреЗ рд╣реИрдВ, рдХреБрдЫ рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВ, рдмрд╕ред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХреЛрдИ рддреБрд▓рдЬрд╛ рдмреЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред
рд╕рдВрджрд░реНрдн
рдбреЗрдореЛ ред
рдЦрдЯреНрдЯреЗ (~ 60 рдХреЗрдмреА)ред
GitHubрдкреБрдирд╢реНрдЪред рдЬреАрдереБрдм рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред
рдкреАрдПрд╕ 2ред рдЕрдм "рдкреЗрдВрдЯ" рдХреИрдирд╡рд╛рд╕ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред