ホームページ作成ソフトウェアで旅行記を載せる方法は?

このQ&Aのポイント
  • 旅行記を載せるためのホームページを作成中。
  • 建物のイラストを地図上に配置し、クリックするとボタンが矢印でつながる仕組みを考えています。
  • 同じ結果を繰り返すことができるか、JavaScriptを修正して実現したい。
回答を見る
  • ベストアンサー

(ホームページ作成ソフトウェアのカテゴリで質問していましたが、回答が得

(ホームページ作成ソフトウェアのカテゴリで質問していましたが、回答が得られませんでしたのでカテゴリを変更して再度質問させていただいています。) 旅行記を載せるためのホームページを作成しています。 地図にいくつかの建物のイラストを置き、その下にいくつかボタンを並べます。 (建物のイラストを置く方法も悩んでいます。レイアウト枠にするのか、テーブルにするのか、またはクリッカブルマップにしたほうがいいのか、、、) いずれかの建物をクリックすると、下に並んだボタンのうち左端のボタンが選択され右方向に2番目のボタンにつながるように矢印が出て、次に別の(または同じ)建物をクリックすると左端のボタンはそのままに左から2番目のボタンから右方向に矢印がでる。また3回目に建物をクリックすると左から3番目のボタンが選ばれて同様に矢印が出るようにしたいのですが・・・こんなことできるのでしょうか? リンク先を同じものにするのは簡単ですが、「いずれかのボタンを押して」同じ結果を出すことを繰り返すことは可能でしょうか? 1からは作れませんが、JavaScriptはソースを見て修正ぐらいならできそうです。 何か案がございましたらお教えください。 よろしくお願いいたします。

  • emico
  • お礼率42% (139/326)

質問者が選んだベストアンサー

  • ベストアンサー
  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.9

最初の回答者です。  +(window.pageXOffset||document.documentElement.scrollLeft)  +(window.pageYOffset||document.documentElement.scrollTop) は余計でした。スクロールした時、かえってダメになります。 取り去ってください。 ボタンの内容も変更したいとの事ですが、何に変更したいのかが わかりませんね。

emico
質問者

お礼

いろいろと教えてくださいましてありがとうございます。 自分自身の理解力が低く、質問も的確にできておりませんが、ご丁寧な回答に感謝しております。 今後、もっと勉強してまいります。 本当にありがとうございました!

その他の回答 (8)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.8

No4、No5です。 No5の例では、  e.innerHTML="Change !"; // 表示テキストを「Change !」に変える  e.style.color = "#f00"; // テキストの表示色を赤に変更  e.focus(); // 当該ボタンを選択(フォーカスを移動) のようにしています。 >「ここをこんな風に直したらこういうところが変えられる」とかまで >言ってもらわないと理解できません。 逆ではないですか? できることはいろいろあるので、その質問だと回答は非常に長くなってしまい、結局は、仕様書を読みなさいという回答になります。 このようにしたいと具体的に質問することで、それに対応した回答が可能です。 スクリプトは無くても、マークアップのの構成や使用要素などを例示することによって、実際のものに近い回答が得られるはずです。 (もちろん処理内容についても的確に説明しておく必要があります) 「何をどうしたいのか」「何をどう変えたいのか」を具体的に示して言ってもらわないと、より的確なサジェスチョンはできませんということ。 抽象的な質問には抽象的な回答が通常ですが、回答をよりわかりやすくするために具体例を提示しているのにすぎません。 No2様を初め、とても具体的な回答をなさっていますが、質問者様からは具体例が一切提示されていないのが実態です。 (No4でもNo5でも、具体的なマークアップを示せばよいのに、と間接的に書いておいたつもりですが…)

emico
質問者

補足

ご回答ありがとうございます。 まだイメージしかなく、実際に作ってもいないためあの説明が精一杯で、私の中では最大限に質問内容を記載したつもりでした。 質問として的確でない、ということでしたら大変申し訳ございません。 どのように質問すればいいかもわかっていなかったんですね。 ネット上でフリーで配布しているJavaScriptと同じような、「この数字を変えるとスピードが変わります」とか、「このメッセージを変えると表示を変えることができます」くらいの変更をすればいいくらいの回答を期待して質問していました。 今後質問するときには、もっと具体的に表現できるよう努力いたします。 みなさまには、苦労して作っていただいておりますのに、本当に申し訳ございませんでした。

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.7

一応、IEでも動くようになりました。 <script type="text/javascript"> /* 最初の部分は省略 */ //Canvasコントローラー生成  var canvas = document.getElementById("map");  canvas.width=map.w;  canvas.height=map.h;  if (typeof(G_vmlCanvasManager) != 'undefined')   canvas = G_vmlCanvasManager.initElement(canvas);  var ctx = canvas.getContext('2d');  ctx.clearRect(0,0,canvas.width,canvas.height);  var mapimage= new Image();  mapimage.src = map.src + "?" + new Date().getTime();  mapimage.onload=function(){   ctx.drawImage(mapimage,0,0,map.w,map.h);  };  for(var i=0;i<tatemono.length;i++){   var img= new Image();   img.src = tatemono[i].src + "?" + new Date().getTime();   img.onload=(function(obj){    return function(event){    ctx.drawImage(this,obj.x,obj.y,obj.w,obj.h);    }   })(tatemono[i]);  }  canvas.onclick=function(e){   var target = e?e.target:event.srcElement;   var rect = target.getBoundingClientRect();   var x = (e?e.clientX:event.clientX) + (window.pageXOffset||document.documentElement.scrollLeft);   var y = (e?e.clientY:event.clientY) + (window.pageYOffset||document.documentElement.scrollTop);   var mouseX = x - rect.left;   var mouseY = y - rect.top;   for(var i=0;i<tatemono.length;i++){    if((tatemono[i].x < mouseX &&     mouseX < (tatemono[i].x + tatemono[i].w))    && (tatemono[i].y < mouseY &&     mouseY < (tatemono[i].y + tatemono[i].h))    ){    //alert(i);    count += 1;    (function(){     var allow = [];     var span = document.getElementById("button_area").getElementsByTagName("span");     for(var i=0;i<span.length;i++){     if(span[i].className=="allow") allow.push(span[i]);     }     for(var i=0;i<allow.length;i++){     allow[i].style.visibility = "hidden";     }     if(count > 4) count = 1;     allow[count-1].style.visibility = "visible";    })(count);    }   }  } </script>

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.6

最初の回答者です。 すみません。またやっちゃいました。onloadのイベントはバブル しませんでした。 img.onload=(function(obj){ return function(event){ var target = event.target || event.srcElement; はだめだめでした。window.eventはnullですから、 event.srcElementなんて取得できてませんでした。 とりあえず、そのばしのぎで、 img.onload=(function(obj){ return function(event){ var target = this; ctx.drawImage(target,obj.x,obj.y,obj.w,obj.h); } })(tatemono[i]); ですが、なんかIEは他にもまずいところがあるみたいで、 まじめにやらないとだめっすね。 昨日は暇が無かったんで、IEの検証がおざなりでした。 直しときます。 直しときます。

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.5

No4です。 No4にも書きましたように、多分、マークアップが実際とはまったく異なるでしょうから、あくまで「考え方の参考」として回答しました。 >名前(表示)の書き換え(or 他の画像にチェンジ?)は可能でしょうか? 要素が特定できているので、CSSの変更やテキストの変更、あるいは要素そのものの変更も不可能ではありません。 でも、上にも書いたように、このコードが実際の使い物になるとは思えませんが? 例えば、 if (e = btn.getElementsByTagName("button")[this.count-1]) e.focus();                ↓ if (e = btn.getElementsByTagName("button")[this.count-1]) { e.innerHTML="Change !"; e.style.color = "#f00"; e.focus(); } とか?

emico
質問者

補足

再度のご回答ありがとうございます。 「1からは作れませんが、JavaScriptはソースを見て修正ぐらいならできそうです。」と書いてしまったので、内容を理解できると誤解されたのかもしれませんが・・・まったくの素人ですので、「ここをこんな風に直したらこういうところが変えられる」とかまで言ってもらわないと理解できません。 素人すぎて・・・すみませ~ん。(;0;) でも、教えていただいた内容を工夫してみます。 いろいろと考えてくださって、ありがとうございます!!

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.4

どのようなマークアップをしたいのか不明なので、かなりいい加減ですが、考え方のヒントとして・・・ (多分、建物などに画像を使うのだろうけれど、とりあえずdiv等で代用) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html lang="ja"> <head><title>test</title> <meta http-equiv="Content-Style-Type" content="text/css"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <style type="text/css"> div#map { width:640px; height:400px; border:1px solid #ddd; background-color:#eef; } div#map .building { width:100px; height:100px; margin:40px; padding:10px; float:left; background-color:#ccc; } div#buttons { margin-top:30px; } div#buttons .arrow { display:inline-block; width:2.5em; text-align:center; visibility:hidden; } </style> <script type="text/javascript"> <!-- var sample = function(evt) { var e, btn, t = evt.target || evt.srcElement; if (t.className != "building") return; this.count = this.count?++this.count:1; btn = document.getElementById("buttons"); if (e = btn.getElementsByTagName("button")[this.count-1]) e.focus(); if (e = btn.getElementsByTagName("span")[this.count-1]) e.style.visibility = "visible"; } //--> </script> </head> <body> <div id="map" onclick="sample(event)"> <div class="building">building 1</div> <div class="building">building 2</div> <div class="building">building 3</div> <div class="building">building 4</div> <div class="building">building 5</div> <div class="building">building 6</div> </div> <div id="buttons"> <button type="button">button 1</button><span class="arrow">→</span> <button type="button">button 2</button><span class="arrow">→</span> <button type="button">button 3</button><span class="arrow">→</span> <button type="button">button 4</button><span class="arrow">→</span> <button type="button">button 5</button><span class="arrow">→</span> <button type="button">button 6</button> </div> </body> </html>

emico
質問者

補足

ご回答ありがとうざいます! 全体的にはこんな感じのものを目指しています。 1つだけ違う点は、建物をクリックしたときに矢印が出ると同時に、下(表示された矢印の左側)にあるボタンの名前(表示)も変わってほしいんです。 名前(表示)の書き換え(or 他の画像にチェンジ?)は可能でしょうか? 申し訳ございませんが、再度お教えいただけますでしょうか? よろしくお願いいたします。

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.3

続き <script type="text/javascript">  var map = {src:"map.jpg",w:640,h:480};  var tatemono = [   {src:"tate1.jpg",w:50,h:50,x:10,y:10},   {src:"tate2.jpg",w:50,h:50,x:20,y:200},   {src:"tate3.jpg",w:50,h:50,x:20,y:100},   {src:"tate4.jpg",w:50,h:50,x:100,y:10},   {src:"tate5.jpg",w:50,h:50,x:200,y:100}  ]  var count = 0; //Canvasコントローラー生成  var canvas = document.getElementById("map");  if (typeof(G_vmlCanvasManager) != 'undefined')   canvas = G_vmlCanvasManager.initElement(canvas);  canvas.width=map.w;  canvas.height=map.h;  var ctx = canvas.getContext('2d');  ctx.clearRect(0,0,canvas.width,canvas.height);    var mapimage= new Image();  mapimage.src = map.src + "?" + new Date().getTime();  mapimage.onload=function(){   ctx.drawImage(mapimage,0,0,map.w,map.h);  }  for(var i=0;i<tatemono.length;i++){   var img= new Image();   img.src = tatemono[i].src + "?" + new Date().getTime();   img.onload=(function(obj){    return function(event){    var target = event.target || event.srcElement;    ctx.drawImage(target,obj.x,obj.y,obj.w,obj.h);    }   })(tatemono[i]);  }  canvas.onclick=function(event){   var target = event.target || event.srcElement;   var rect = target.getBoundingClientRect();   var mouseX = event.clientX - rect.left;   var mouseY = event.clientY - rect.top;   for(var i=0;i<tatemono.length;i++){    if((tatemono[i].x < mouseX &&     mouseX < (tatemono[i].x + tatemono[i].w))    && (tatemono[i].y < mouseY &&     mouseY < (tatemono[i].y + tatemono[i].h))    ){    //alert(i);    count += 1;    (function(){     var allow = [];     var span = document.getElementById("button_area").getElementsByTagName("span");     for(var i=0;i<span.length;i++){     if(span[i].className=="allow") allow.push(span[i]);     }     for(var i=0;i<allow.length;i++){     allow[i].style.visibility = "hidden";     }     if(count > 4) count = 1;     allow[count-1].style.visibility = "visible";    })(count);    }   }  } </script> <canvas>要素については http://www.html5.jp/canvas/index.html をご参照下さい

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.2

HTML5の<canvas>要素を使って実現してみました。IE8以下は<canvas>要素 がサポートされてないので、「Explorercanvas」を替わりに使います。 まず、↓からexcanvas.jsをダウンロードして下さい。 http://code.google.com/p/explorercanvas/ <canvas>に地図画像と建物画像を表示し、建物画像がクリックされた時、 ボタンエリアの"=>"の表示位置を変えています。 HTMLは↓です。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>Button Canvas By HTML5</title> <style type="text/css"></style> <!--[if IE]><script type="text/javascript" src="/jslib/excanvas.js"></script><![endif]--> </head> <body> <h2 style="text-align:center">Button Canvas By HTML5 or IE(excanvas.js)</h2> <div style="text-align:center;margin 5px auto 5px;">  <canvas id="map" style="border:solid 1px gray;"></canvas>  <div id="button_area" style="margin-top:10px;">   <a href="ボタン1のリンク先"><button>ボタン1</button></a>  <span class="allow" style="visibility:hidden;"> => </span>   <a href="ボタン2のリンク先"><button>ボタン2</button></a>  <span class="allow" style="visibility:hidden;"> => </span>   <a href="ボタン3のリンク先"><button>ボタン3</button></a>  <span class="allow" style="visibility:hidden;"> => </span>   <a href="ボタン4のリンク先"><button>ボタン4</button></a>  <span class="allow" style="visibility:hidden;"> => </span>   <a href="ボタン5のリンク先"><button>ボタン5</button></a>  </div> </div> </body> </html> </body>の上に、以下の<script>を書きます。(続く) ※見やすくするため、全角空白文字でインデントしてあるので、 半角空白文字に直してください

emico
質問者

補足

早速考えてくださいましてありがとうございます! 2つにわけてご指示いただいたものを1つのhtmlファイルにまとめました。 ダウンロードしたものは解凍したのち、excanvas.jsをhtmlファイルと同じフォルダ内に入れました。 readmeファイルを見て、「<!--[if IE]><script type="text/javascript" src="excanvas.js"></script><![endif]-->」をhead内に入れました。 「続き」の内容は</body>の上に入れています。 また空白に見えているところは、それぞれが元通りに見えるところまで、半角空白を複数個入れています。 ・・・とやってみた(つもり)なんですが、canvasの部分のところが真っ白で大きな四角のままで、何も表示されず、またその四角のなかをクリックすると「ページでエラーが発生しました」となり、下のボタンは何も変わりません。 この手順のどこかに間違いはありますか? 何度も申し訳ございません。ご示唆いただければうれしく思います。

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

要件を誤解して解釈しそうなので整理してみます。 1.建物のイラスト画像が建物1~建物nまでn個あります。 2.ボタンはボタン1~mまでm個あります。 3.建物nとボタンmの相関関係は動作の関連性は無しです。 2.どれかの建物画像をクリックした時、クリックしたのがX回目だとすると、   ボタン(1+(X-1))からボタン(x+1)へ → を書きます。 であってますか... ※地図に建物イラストを置く方法は、私なら、地図書くのが面倒なので、  GoogleMapsAPI Ver2.0を使って、建物をオーバーレー表示かマーカーで表示し  クリックしたら吹き出しでボタンを出力します。

emico
質問者

補足

早速のご提案ありがとうございます。 おっしゃるとおりのことがしたいのですが、知識がなくできずにいます。 よろしくお願いいたします。

関連するQ&A

  • FC2ホームページ作成で。。。

    FC2ホームページ作成で『ファイルが見つかりませんでした』となってしまいます。 イラスト公開をしたくて ファイルをつくりました。 TOPページはフレームでつくって 右で見たいものをえらんでクリックして 左でそれが見れる という風にしたのですが 右で選んでも左に 404Error - Page not found ご指定のファイルが見つかりませんでした と出てしまいます 左ででるのでリンクの問題ではないとおもいますが 初心者なのでまったくわからないので質問しました。 回答おねがいいたします

  • 初めまして。 ?ホームページ作成時のmaqeeについて質問します。

    初めまして。 ?ホームページ作成時のmaqeeについて質問します。 (1) maqeeを使えば文字が左、右に流れるようになるのですが、流れている文字をマウスでドラックして掴むことは出来ないのでしょうか? (2)maqeeは左、右方向にしか流れないのですが、方向を切り替えることは出来ないのでしょうか? よろしくお願いします。

  • ホームページ作成中です。

    要領のつかめない質問になるかも知れませんが、頑張って書いてみます。 現在、Frontpage2002でホームページを作成中です。ありきたりですが、フレームページを作り、左のフレームにメニューボタンを配置し右フレームに全体的なホームページの趣旨を書いたんですが、なんと使っている?ブラウザがフレームに対応していないとのことでフレームは断念しました。そこで、左側の各メニューボタンの体裁を整えるため表の中に収め、また右の「趣旨」も見栄えを考え一行の表の中に書きました。 もちろん、背景色を変え枠も付けて。ところが、左右が「表」のため、左のメニューボタンを納めた表がずれてしまいます。 考えた挙句、右の「趣旨」がはじめから書かれている画像として作りそれを背景にして、そこにメニューボタンを納めた表を設置しようと思っていますが、そのような「背景」画像をどのソフトでどうのように作ったらいいのか見当がつきません。 ちなみに、photoshopは持っています。 こんな質問でお答えにくいかと思いますが、よろしくお願いします。

  • ホームページ作成についての質問です。

    ホームページ作成についての質問です。 ホームページビルダー14でホームページ作成、運営をしています。 今回、このホームページを使用し、写真アルバム作成の依頼を受けようと思います。 そこで質問なんですが・・・ (1)閲覧者がホームページの注文アイコンをクリック (2)画像送信画面に飛ぶ(画像をドラッグアンドドロップで簡単にできる感じ) (3)画像添付、必要事項記入後に送信ボタンをクリック (4)こちらに画像が送信されてくる みたいなよくあるシステムはどのように作成するのでしょうか? また、それはホームページビルダー14でできるのでしょうか?

  • ホームページ作成にあたって

    現在ホームページを作成しています。 ホームページビルダー等は使用していません。 私は2フレームのホームページを作っているのですが、左のフレームをメニューとして右に表示させたいのです。 (例:gooの簡単ホームページのような) ですが、HTMLをどうしても左がページが変わったり、新しいウィンドウで開いたりしてしまいます。 調べてみましたが分かりませんでした。 どのようなHTMLならgooの簡単ホームページのようなメニューにできるのでしょうか? 回答よろしくお願いします。 なお、ホームページ作成ソフトや簡単ホームページのような物以外で宜しくお願いします。

    • ベストアンサー
    • HTML
  • ホームページビルダー7のフレームページ作成

     ホームページ作成初心者です。左が目次となるフ レームページを作成しています。目次のアイコンを クリックすると右に内容が表れるようにしたいのです が、アイコンをクリックすると左の目次に表示されて しまいます。どうしたらよいのでしょうか。ご存知の 方ご教授よろしくお願いします。

  • ホームページ作成の技について教えて下さい。

    先だって、ここで質問させていただき、クリッカブルマップと言う技があるのを教えていただきました。 今回またわからないことが出てきたもので質問させていただきました。 よく同一ページで情報にあるボタンを押すと、そのページ内のあるところにとんでいき、またそこにあるページトップに戻ると言うボタンを押すと再度ページのトップにもどると言うような技はなんというのでしょうか? また、コードの書き方など出ているサイト、または本などご存じでしょうか? 現在、作成用のソフトはホームページビルダーVr9とアドビーgoliveCSを所有しています。 そこにその機能はあるのでしょうか? よろしくお願い致します。

    • ベストアンサー
    • HTML
  • ホームページ 作成

    こんにちわ。今ホームページを作っているのですが、 占いのサイトなどで 『必要事項を入力の上、下の検索ボタンをクリックして下さい』 と言った様に、様々な項目を記入して【検索ボタン】をクリックしたら、その答えが出る様なページが作りたいのですが、専門用語が分からず探しても見つかりません。 やり方などが分かるサイト知りませんか?

  • ホームページ作成を簡単に。。?

    今メモ帳だけを使って携帯用待ち受けホームページを作っています。 そして思ったのですが、何かホームページ作成ソフト等を使った方が楽で早かったりするのでしょうか? あと、画像をUPするとき画像一枚につき一ページ作成しなければならないのでその作業が大変です; 右クリック→新規作成→テキスト ドキュメント→名前と拡張子を変える この作業を大量にするとき簡単にできる方法はないでしょうか?

  • ホームページ作成で困っています。

    ホームページ作成で困っています。 ホームページビルダー14(試用版)やタグ直打ちしつつホームページを作っていて フラッシュやonmouseoverを見よう見まねで設置する程度です。 HPビルダー等のソフトだと あいうえお | はひふへほ かきくけこ | まみむめも ↑のようにページ左と右で別の文章を打ちたくても どうしても横1列に1行しか入れらなかったり 3行分の大きさの画像を左に設置すると その画像の右側に文字を打とうとしても 1行分しか入れられず困っています。 あああ あああ あああ  いいいいい あ=画像  い=文字 最近のHPは皆、画像を左に入れても 右側に自由に文字が入っていたり、 右と左で別々の内容を表示しているものを多くみます。 私もそのように作りたいのですが 方法がわかりません。 どなたかご存じな方おられましたら 教えて頂けますようお願いします。 参考HPでも構いません。 宜しくお願いします。

専門家に質問してみよう