• 締切済み

img 上の任意の座標範囲の色を変えたい

img タグで読み込んだ画像上に、map/area 属性を付加した以下のような HTMLがあります。coords で指定された座標範囲に対して透明度30% 程度の オーバーレイを掛けたいと考えています。 CSSとJavascriptでこのような効果を与えることは可能でしょうか。 <map name="map"> <area shape="rect" coords="0,0,100,100" href="url1"> </map> <img SRC="gif" BORDER=0 usemap="#map" height=100 width=200> 本当は、画像そのものに色をつけてしまうべきなのですが、 表示するたびにオーバーレイする座標が変わってしまうため、 画像を再作成する負荷を減らすためにCSS とJavascriptで対応したいです。 よろしくお願いします

みんなの回答

  • ai10
  • ベストアンサー率27% (3/11)
回答No.3

あ…オーバーレイでしたね…。 まぁ、要は、あらかじめオーバーレイした画像を作って gazou40.gifとして保存すればOKなわけで…。

xsuzuki
質問者

お礼

画像上に、別画像をオーバレイできるとは、知りませんでした。 透過アイコンなどを重ねて、元の画像上にいろいろ情報を 付加することができそうです。現在いろいろ試行しています。 ありがとうございます。

  • ai10
  • ベストアンサー率27% (3/11)
回答No.2

ごめん、 **** css **** div.main {... } を .main { ... } のように、divをなくしたってください。

  • ai10
  • ベストアンサー率27% (3/11)
回答No.1

まず、mapタグのname属性は廃止予定なのでidも一緒に書いておくこと。 透明度は一定ならば、 だいたいのブラウザで表示できるようなものは作れるでしょう。 しかし、透明度が一定でない(表示するたびに変わるなど)場合は IEはフィルタを利用して可能、 Gekko1.8(?)以上なら可能、 その他のブラウザでは無理だと思う。 --------------------------------------------------------- 透明度が決まっている場合の案として、 まず、画像を3つ作成しておく。 透明度を40%と決めておく。 [1] 透明の1x1サイズのgif (toumei.gif) [2] 元画像 (gazou.gif) [3] 透明度40%の画像 (gazou40.gif) 申し訳ないが、動作確認は一切していないです。 **** css **** div.main {   position : relative;   width : 100px; height : 200px; } .absolute {   position : absolute;   left : 0px; top : 0px; } .hidden {   width : 0px; height : 0px;   overflow : hidden; } **** html **** <div class='main'>  <img src='gazou.gif' width='100' height='200' class='main absolute>  <div class='absolute hidden'>   <img src='gazou40.gif' width='100' height='200' class='absolute'>  </div>  <img src='toumei.gif' width='100' height='200' class='absolute' border='0' usemap='#map'>  <map id='map' name="map">   <area shape="rect" coords="0,0,0,0" href="url1">  </map> </div> **** javascript **** // 以下の関数は、firefoxなど用 function getChildNode( parentNode, idx ) {   var obj = parentNode.childNodes[idx];   while( obj.nodeType==3 ) obj.nextSibling;   return obj; } function getNextNode( node ) {   var obj = node.nextSibling;   while( obj.nodeType==3 ) obj.nextSibling;   return obj; } function getPrevNode ( node ) {   var obj = node.previousSibling;   while( obj.nodeType==3 ) obj.previousSibling;   return obj; } // エリア(x,y,width,height)の部分を透明にする。 function setTransparentArea ( x, y, width, height ) {   var map, area, div, img;   map = document.getElementById( 'map' );   area = getChildNode( map, 0 );   area.setAttribute( 'coords', ''+x+','+y+','+width+','+height );   div = getPrevNode( getPrevNode( map ) );   div.style.left = x + 'px';   div.style.top = y + 'px';   div.style.width = width + 'px';   div.style.height = height + 'px';   img = getChildNode( div, 0 );   img.style.left = (-x) + 'px';   img.style.top = (-y) + 'px';   map = area = div = img = x = y = width = height = null; } // たとえば onload 時なら window.onload = function () {   setTransparentArea( 0, 0, 100, 100 ); } とか。 できれば、window.onload じゃなく //@cc_on window./*@if (@_jscript) attachEvent( 'on'+ @else@*/ addEventListener( /*@end@*/ 'load', function () {   setTransparentArea( 0, 0, 100, 100 ); }, false ); としよう。window.onload の部分が長くなっただけだ。

xsuzuki
質問者

お礼

回答をいただいてから時間がたってしまい、すみません。 書いてもらった回答を元にいろいろ試行錯誤しました。 area タグのcoords 属性から「画像上のどこのエリアの色を変えるべきか」 判断できるため、これをプログラムで計算して、divタグのCSSインライン に書き込みしました。 最終的には、Javascriptではなくサーバサイドのプログラミングに なってしまいました。この方法はHTMLファイルを動的作成するだけなので、 画像を再作成するよりはコストが少ないかなぁ、と思いました。 ありがとうございます。

関連するQ&A

  • Javascriptのマウスオーバー

    Javascriptでのマウスオーバーで、Mapを使って画像上に範囲指定しているリンク範囲にボーダーを表示させたいと考えています。 HTMLは、 <html> <head> <title></title> </head> <body> <img src="aaa.gif" border="0" usemap="#Map"> <map name="Map"> <area shape="rect" coords="78,200,228,241" href="bbb.html"> <area shape="rect" coords="326,168,476,209" href="ccc.html"> <area shape="rect" coords="78,141,228,182" href="ddd.html"> </map> </body> </html> このようになっています。 この状態で、マウスオーバー時にリンク範囲をボーダーで囲みたいと思っています。 JavascriptやCSSとの組み合わせ等でいろいろ探してみたのですが、どうしても上手くいきませんでした。どうしたらいいのか教えて下さい。 また、JavascriptやCSSでなくとも同じ事が出来るのでしたら、それで構いません。 どうか宜しくお願い致します。

  • 吹き出しに画像とコメントを入れるプログラム

    下記のプログラムで吹き出しを作成して 画像とコメントを表示したいのですが なかなか出来ず困っております。 方法がありましたらよろしくお願いいたします。 <img src="画像名" usemap="#map" border="0"> <map name="map"> <area shape="rect" coords="305,60,390,126" href="アドレス" alt="北海道"> <area shape="rect" coords="288,151,331,181" href="アドレス" alt="青森"> <area shape="rect" coords="280,181,311,221" href="アドレス" alt="秋田"> <area shape="rect" coords="310,181,341,221" href="アドレス" alt="岩手"> <area shape="rect" coords="275,221,305,245" href="アドレス" </map>

  • map初心者です

    名前の付け方がわかりません。 なんでもいいのでしょうか?とりあえずわからないので画像名と同じ名前に設定しました。 また、下の記述が全部なのですが画像しかアップされません。 リンクすらなりません。 どこがおかしいのでしょうか。よろしくお願いします。 <img src="img/1.jpg" usemap="#1map" border="0"> <map name="1map">  <area shape="rect"   coords="220,148,179,200"   href="http://12345" alt="**" target="_blank">  <area shape="rect"   coords="358,125,181,126"   href="http://12345" alt="**" target="_blank">  <area shape="rect"   coords="167,336,178,141"   href="="http://12345" alt="**" target="_blank">  <area shape="rect"   coords="178,338,180,214"   href="="http://12345" alt="**" target="_blank"> </map> 関係あるかわかりませんが、使っているのはロリポップです。

    • ベストアンサー
    • HTML
  • 画像毎に違うクリッカブルマップを設定したい

    地図画像を表示して複数のクリッカブルマップを配置し、ユーザが選択したら、詳細地図を表示してさらにそこでもクリッカブルマップを配置して、、、 という階層的に地図を辿られるようなコンテンツをつくろうと思っています。 JavaScriptで制御できると思って以下のようなコードを書いたのですが、 初期画像において、クリッカブルマップ(alt=area1)を押せば正常に動作しますが、 もう一方のクリッカブルマップ(alt=area2)を押すと、 IE6の場合にエラーが発生してブラウザが終了してしまいます。 尚、FireFoxでは正常に動作します。 どこに原因があるかも分らず手詰まり状態です。 同じ現象にあわれた方で解決策をご存知の方がいらっしゃれば、ご教授下さいm(_ _)m <html> <head> <meta http-equiv="Content-Script-Type" content="text/javascript"/> <script type="text/javascript"> <!-- function ChangeImg(mapname,usemapname) { document.map0.src = mapname; document.map0.useMap = usemapname; } //--> </script> </head> <body> <img src="map0.jpg" width="300" height="300" name="map0" useMap="#usemap0"> <map name="usemap0"> <area href="JavaScript:ChangeImg('map1.jpg','#usemap1')" shape="rect" alt="area1" coords="10,100,140,200"> <area href="JavaScript:ChangeImg('map2.jpg','#usemap2')" shape="rect" alt="area2" coords="150,100,290,200"> </map> <map name="usemap1"> <area href="http://google.co.jp" shape="rect" alt="shop1" coords="50,50,250,250"> </map> <map name="usemap2"> <area href="http://yahoo.co.jp" shape="rect" alt="shop2" coords="50,50,250,250"> </map> </body> </html>

  • mapが機能しない

    以下のようにmapを設置しましたが、全く機能しません。何が考えられるでしょうか? <div><img src="images/head.jpg" alt="" usemap="#map" border="0"/></div> <map name="map"> <area href="kan.html#3" alt="" shape="rect" coords="0,3,105,154" /> <area href="kan.html#2" alt="" shape="rect" coords="314,3,393,154" /> <area href="kan.html#1" alt="" shape="rect" coords="106,3,211,146" /> </map>

    • ベストアンサー
    • HTML
  • 画像に複数リンクをはる方法(イメージマップ)

    画像は表示されるのですが、リンクがはれません。 どこがおかしいのでしょうか? リンクをはる画像と、リンク先は別フレームで、表示させたいフレームの名前はinです。 ついでに、リンクをクリックした瞬間に出る点線の消し方もわかる方がいたら教えてください。 よろしくお願いします。 タグ(html内)↓ <body> <img src="http:~" usemap="mn"> </body> <map name="mn"> <area shape="rect" coords="298,298,355,262" href="http:~l"target="in"> <area shape="rect" coords="298,276,319,285" href="http:~"target="in"> <area shape="rect" coords="324,273,362,288" href="~html" target="in"> <area shape="rect" coords="367,276,399,286" href="~html" target="in"> </map>

  • クリックしてリンク先に移動する地図をwebに掲載しましたが

    ホームページに地図の画像を掲載して、 その地図にいくつかのクリックできるポイントを設定し、 それぞれリンク先に移動するようにしました。 IEではキレイに地図の画像が表示できているのですが、 FireFoxとか、Netscapeでは地図に青い外枠が表示されます。 赤を基調にしたサイトなので不自然な感じがして困っています。 どのようにこれを回避したらよいのでしょうか。 具体的に下記付け加えるもの等ございましたら教えてください。 よろしくお願いします。 <MAP NAME=map1> <AREA SHAPE=rect COORDS="112,2,196,28" HREF="room1.htm"> <AREA SHAPE=rect COORDS="213,3,298,28" HREF="room2.htm"> <AREA SHAPE=rect COORDS="310,2,399,28" HREF="room3.htm"> <AREA SHAPE=rect COORDS="413,2,495,28" HREF="room4.htm"> <AREA SHAPE=rect COORDS="513,1,594,27" HREF="room5.htm"> <AREA SHAPE=rect COORDS="614,2,701,28" HREF="room6.htm"> </MAP><IMG USEMAP="#map1" SRC="worldmap.gif" WIDTH=702 HEIGHT=29 ALIGN=bottom>

    • ベストアンサー
    • CSS
  • クリッカブル・マップのリンクが効かない

    下記のコードでpngの画像上でリンクをつけましたが、カーソルをかざしても反応が有りません。どこが間違っているのでしょうか? 皆様、ご教授お願いします <table width="750" align="center"> <tbody> <tr><td> <img src="top2.png" usemap="#top2"> <map name="top2"> <area shape="rect" coords="20,197,63,206" href="http://------.html" alt="A"> <area shape="rect" coords="78,198,121,206" href="http://------.html" alt="b"> <area shape="rect" coords="137,198,181,206" href="http://------.html" alt="c"> <area shape="rect" coords="196,198,239,206" href="http://------.html" alt="d"> <area shape="rect" coords="19,163,63,272" href="http://------.html" alt="e"> <area shape="rect" coords="77,264,121,272" href="http://------.html" alt="f"> </map> </td> </tr> </tbody> </table>

    • 締切済み
    • XML
  • JavaScriptとUsemapの切り替え

    JavaScriptとイメージタグのusemapを併用して、ボタンを押すと画像とusemap両方が切り替わるというものを考えています。そこで下記のように考えてみました。しかし、画像は切り替わったのですがusemapが切り替わることは一切ありませんでした。ブラウザはFirefox3.5で想定しています。他の質問も見てみましたが改善はしませんでした・・・ (HTML側) <img name="im" src="room1.gif" alt="イメージ" usemap="#room1"> <map name="room1"> <area shape="rect" coords="1,1,150,200" onclick="ASet()" alt="1"> <area shape="rect" coords="1,201,150,400" onclick="BSet()" alt="2"> </map> <map name="room2"> <area shape="rect" coords="151,1,300,200" onclick="CSet()" alt="3"> <area shape="rect" coords="151,201,300,400" onclick="DSet()" alt="4"> </map> <form name="kirikae"> <input value="1へ" onclick="Kirikae('room1.gif','#room1')" type="button" name="A"> <input value="2へ" onclick="Kirikae('room2.gif','#room2')" type="button" name="B"> </form> (JavaScript側) function ASet(){ alert("てすと1"); } function BSet(){ (中略) function Kirikae(mapname,usename){ document.im.src = mapname; document.im.usemap = usename; }

  • HP制作。クリッカブルマップについて。

    HP制作。クリッカブルマップについて。 1つのページにクリッカブルマップを使った画像(オンマウスで画像を入れ替える)を二つ使いたいのですが(たとえばmapAとmapB)上手くいかず、mapAの位置にmapBの入れ替え画像が表示されてしまいます。自分では原因をつきとめることが出来ませんでした。 map nameは分けてあります。リンク先・画像・座標は省略しました。 <img src="画像" alt="マップ" id="map" usemap="#B" border="0"> <map name="A"> <area shape="poly" coords="(略)" nohref onmouseover="changeMapImage('画像')" onmouseout="changeMapImage('画像')" >  『省略』                  </map> <img src="画像" alt="マップ画像" id="map" usemap="#B"border="0"> <map name="B"> <area shape="rect" coords="(略)" href="●.html"onmouseover="changeMapImage('画像')" onmouseout="changeMapImage('画像')" alt="画像1"> <area shape="rect" coords="(略)" href="●.html"onmouseover="changeMapImage('画像')" onmouseout="changeMapImage('画像')" alt="画像2"> 『省略』 </map>

    • ベストアンサー
    • HTML

専門家に質問してみよう