googleマップでタブメニューdisplay:none;で座標がずれたらこれで一発解決【超簡単な方法】
Googleマップをタブメニューに入れると座標がずれてしまった人へ・・・、これならバッチリ!
実際に上手くいった実例がこちら↓
http://www.k-sansui.net/access/
Googleマップをタブメニューの中に入れなければならない案件があったのですが、
以前からの知る人はしっている問題のようですね。
問題点は、
Googleマップの座標が左上にずれてしまうというもので、
まあ~はまりにはまりました。。
1日?2日?わかりませんが超はまりました。。
ネットで調べても、
部分的な情報だったり、
Jqueryかけるような技術が高い人向けだったりするので、
散々、試してみても何をやってもダメでした。
そんな、中
まぐれ当たりと言うか、
じーーーーーーーーーーーっと
script部分を眺めていたら見えてきた!!!
まぐれ?
どっちかわかりませんが。
とにかくタブメニュー内にgoogleマップを入れても座標がズレない方法を編み出しました!!
すみません、大げさですね。。反省。。
という訳で、
CSS側でdisplay:none;を使う方法ではなく
js(スクリプト)の方でやる方法で見事解決しました!!!!!!!
以下がその解決方法です。
まず、scriptがこちら↓ (tab_menu.jsなど適当に新規で作ってそこに入れてください。)
function seltab(bpref, hpref, id_max, selected) {
if (! document.getElementById) return;
for (i = 0; i <= id_max; i++) {
if (! document.getElementById(bpref + i)) continue;
if (i == selected) {
//document.getElementById(bpref + i).style.visibility = "visible";
document.getElementById(bpref + i).style.display = "block";
document.getElementById(bpref + i).style.position = "";
document.getElementById(hpref + i).className = "open";
} else {
//document.getElementById(bpref + i).style.visibility = "hidden";
document.getElementById(bpref + i).style.display = "none";
document.getElementById(bpref + i).style.position = "absolute";
document.getElementById(hpref + i).className = "close";
}
}
}
↑のscriptに関しての説明ですが、
実はこのscript↓あえてこれをコメントで残してあるんですが、
//document.getElementById(bpref + i).style.visibility = "visible"; //document.getElementById(bpref + i).style.visibility = "hidden";
↑この部分を、それぞれ
document.getElementById(bpref + i).style.display = "block"; document.getElementById(bpref + i).style.display = "none";
に変更したら上手くいきました。
(※visibility = “visible”のままだと、その場所にあるけど見えないだけなので
このタブメニューをフッターのすぐ手前とかにおいてあると、
フッターの下に大きな白い空白が出来たりするんです。
次に、さっき作ったtab_menu.jsをヘッダーなどで読み込みます。
●ワードプレスのオリジナルテーマのjsフォルダなどに入れてある場合は、こんな感じ
<?php wp_enqueue_script('tab_menu', get_bloginfo('template_url').'/js/tab_menu.js'); ?>
●普通のHTMLならこんな感じ
<script src="/js/tab_menu.js" type="text/javascript"></script>
スタイルシートCSSはこんな感じ
.tabheader .close {
background-color: #f0f0f0;
margin:0;
white-space: nowrap;
display:block;
border-radius:10px 10px 0 0;
}
.tabheader .close a{
color:#333;
padding: 0.5em;
display:block;
border-radius:10px 10px 0 0;
border:1px solid #ccc;
}
.tabheader .close a:hover{
background:#e0e0e0;
border-radius:10px 10px 0 0;
}
.tabheader .open {
background-color: #555;
margin:0;
white-space: nowrap;
display:block;
border-radius:10px 10px 0 0;
}
.tabheader .open a{
color:#fff;
padding: 0.5em;
display:block;
border-radius:10px 10px 0 0;
border:1px solid #ccc;
}
.tabheader .open a:hover{
background:#777;
border-radius:10px 10px 0 0;
}
.tabheader{
overflow:hidden;
width:100%;
margin-top:20px;
}
.tabheader #head1{
width:50%;
float:left;
text-align:center;
}
.tabheader #head2{
width:50%;
float:left;
text-align:center;
}
#box1{
padding:10px;
border-left:1px solid #ccc;
border-right:1px solid #ccc;
border-bottom:1px solid #ccc;
}
#box2{
padding:10px;
border-left:1px solid #ccc;
border-right:1px solid #ccc;
border-bottom:1px solid #ccc;
}
#box1 p img{
width:100%;
}
#box2 p iframe{
width:100%;
}
※ちなみにこのCSSはリキッドでスマホ対応も考慮したレスポンシブなCSSで、マウスオーバーも設定しています。
いらない人は、余計な部分は外してください。
HTMLソースはこんな感じ
<div class="tabheader">
<div id="head1"><a href="javascript:seltab('box', 'head', 10, 1)">略地図</a></div>
<div id="head2"><a href="javascript:seltab('box', 'head', 10, 2)">グーグルマップ表示</a></div>
</div>
<div class="tabbody">
<div id="box1">
<p><img src="<?php bloginfo('template_directory');?>/images/42.gif" alt="地図" /></p>
</div>
<div id="box2">
<p><iframe height="500" marginheight="0" src="http://maps.google.co.jp/maps?hl=ja&lr=lang_ja&ie=UTF8&q=%E5%B1%B1%E7%BF%A0&fb=1&gl=jp&hq=%E5%B1%B1%E7%BF%A0&hnear=0x353f24235e12dcbd:0xb7f518f62efec126,%E5%AE%AE%E5%B4%8E%E7%9C%8C%E9%83%BD%E5%9F%8E%E5%B8%82&cid=0,0,11237685556500689074&t=m&vpsrc=6&brcurrent=3,0x353efce4b5240103:0xb374753e2e8f74f0,0&ll=31.785676,130.758591&spn=0.145916,0.238266&z=12&output=embed&iwloc=B" frameborder="0" width="695" marginwidth="0" scrolling="no"></iframe><br />
<small><a style="text-align: left; color: #0000ff" href="http://maps.google.co.jp/maps?hl=ja&lr=lang_ja&ie=UTF8&q=%E5%B1%B1%E7%BF%A0&fb=1&gl=jp&hq=%E5%B1%B1%E7%BF%A0&hnear=0x353f24235e12dcbd:0xb7f518f62efec126,%E5%AE%AE%E5%B4%8E%E7%9C%8C%E9%83%BD%E5%9F%8E%E5%B8%82&cid=0,0,11237685556500689074&t=m&vpsrc=6&brcurrent=3,0x353efce4b5240103:0xb374753e2e8f74f0,0&ll=31.785676,130.758591&spn=0.145916,0.238266&z=12&source=embed&iwloc=B">大きな地図で見る</a></small></p>
</div>
</div>
※↓この部分は、WPなのでこんなURLですが、もちろん普通にフルパスでも、相対パスでも大丈夫!
<p><img src="<?php bloginfo('template_directory');?>/images/42.gif" alt="地図" /></p>
こんなでもOK→
<p><img src="http;//○○○/img/○○○.jpg" alt="地図" /></p>
みたいな・・・。
実際に成功した、完成例はこちら!
こんな感じで、タブメニューにGoogleマップを入れても、
座標がずれることもなく実際に上手くいきました!!!!!!
http://www.k-sansui.net/access/
めでたしめでたし!!(^^)/
関連記事はこちら!
スポンサーリンク






