スマートフォンでポップアップメニュー
解決済
回答 1
投稿
- 評価
- クリップ 0
- VIEW 2,572
スマートフォンのブラウザで、所謂ポップアップメニューが出来ないか? と要望を受けたので、習作に作成してみたのですが、希望通りの動作にならず、ご相談に伺いました。
<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp" />
<meta name="viewport" content="target-densitydpi=device-dpi, width=100%, initial-scale=1.0, user-scalable=no, maximum-scale=1">
<title>スマートフォントップページ201605</title>
<link href="css/top.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="sclipt/top.js"></script>
</head>
<body>
<!--看板-->
<div class="Signboard">
<div class="block">
<div class="SigE1"><img src="image/newsptop01.jpg" class="E1img" /></div>
<div class="SigE2"><img src="image/newsptop02.jpg" class="E2img" /></div>
<div class="SigE3"><a href="#" OnMouseOver="pupon()" OnMouseOut="pupoff()"><img src="image/newsptop03.jpg" class="E3img" /></a></div>
</div>
</div>
<!--ポップアップメニュー-->
<div id="popmenu" class="popUpoff">
<div class="block2">
<div><img src="image/popcate00.jpg"></div>
<div><img src="image/popcate01.jpg"></div>
<div><img src="image/popcate02.jpg"></div>
<div><img src="image/popcate03.jpg"></div>
<div><img src="image/popcate04.jpg"></div>
</div>
</div>
</body>
</html>
@charset "shift_jis";
/* CSS Document */
body {
margin: 0px;
padding: 0px;
}
div.Signboard {
margin: 0px;
margin-left: 0px;
margin-right: 0px;
position: fixed;
z-index: 100;
width: 100%
}
div.block {
background: #5B4A40;
display: table;
margin: 0;
width: 100%;
}
div.SigE1 {
display: table-cell;
width: 70.313%;
border: 0px;
}
div.SigE2 {
display: table-cell;
width: 14.844%;
border: 0px;
}
div.SigE3 {
display: table-cell;
width: 14.844%;
border: 0px;
}
img.E1img {
width: 100%;
}
img.E2img {
width: 100%;
}
img.E3img {
width: 100%;
}
div.popUpoff {
position: fixed;
z-index: 99;
width:1px;
height:1px;
overflow:hidden
}
div.popUpon {
position: fixed;
z-index: 101;
margin: 10px;
margin-left: 10px;
margin-right: 10px;
}
div.pageBoby {
background: #00FF00;
margin: 0;
margin-left: 0px;
margin-right: 0px;
width: 100px;
height: 1000px;
}
div.block2 {
background: #FFFFFF;
display: table;
margin: 0;
width: 100%;
}
// JavaScript Document
function pupon(){
document.getElementById('popmenu').className = 'popUpon';
}
function pupoff(){
document.getElementById('popmenu').className = 'popUpoff';
}
メニュー画面の画像3コをDIVタグで並べ、うち一番右の画像にマウスが載るとJavascriptが動作して、隠れているサブメニュー用のDIVタグのクラスを表示用に書き換えるというものです。
実は、パソコンのブラウザではほぼ希望通りなのですがAndoroido、iPhoneともに以下のようにうまくいきません。
1.指定のボタンを押してもサブメニューが表示されません。
2.Andoroidoに限り、長く触るとメニューが表示されますが、今度はどこを触ってもサブメニューが表示されっぱなしになります。
希望としては、指定の場所を触るとサブメニューが表示され、他の何処かを触ると非表示に戻るようにしたいです。
何かヒントがありましたら教えていただければ幸いです。
よろしくお願いいたします
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+1
スマホにマウスは無いのでonmouseoverやonmouseoutは使えません。
代わりにtouchstart、touchendといったイベントがあります。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.34%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2016/05/16 12:12
HTMLを
<div id="SigE1"><img src="image/newsptop01.jpg" class="E1img" /></div>
<div id="SigE2"><img src="image/newsptop02.jpg" class="E2img" /></div>
<div id="SigE3"><img src="image/newsptop03.jpg" class="E3img" /></div>
に書き換え、
Javascriptを
window.onload = function(){
document.getElementById("SigE3").ontouchstart = function(){
document.getElementById('popmenu').className = 'popUpon';
}
}
に書き換えたところ、SigE3に含まれる画像、image/newsptop03.jpgをスマホ上でタッチすると、CSSがpopUponに書き換わり、メニューが出現しました。
しかし、別なところをタッチすると消える という動作には至っていないので、これは、全ての要素を指定して、それをタッチすると消えるように記述するしかないでしょうか?
※指が離れた瞬間、メニューが消えてしまっては意味が無いですから……