モーダルウィンドウにてMP3の再生ページを構築したいです。
フェードインにてMP3再生バーを表示させて、フェードアウトにて元のページに戻るように作っているのですが、firefoxで表示させた場合、再生バーをクリックすると、元に戻るフェードアウトが効いてしまい、再生バーを上手く操作できません。
他、主要なブラウザでは、再生バーを触っても、元に戻るフェードアウト処理が効かないので問題ないのですが、一応、どのブラウザでも問題が起きないよう、再生バーを触っている時点では、元のページに戻らないようにするにはどうすればいいか、ご教授願えれば有り難いです。
宜しくお願いします。
■HTML
<td id="music"><img src="m1.jpg"></td>
<div class="overlay" id="overlay1">
<p><audio src="music1.mp3" controls id="audio"></audio></p>
</div>
■JS
$("#music").click(function() {
$("#overlay1").fadeIn();
});
$("#overlay1").click(function() {
document.getElementById("audio").pause();
document.getElementById("audio").currentTime = 0;
$("#overlay1").fadeOut();
});
■CSS
div.overlay{
display: none;
width: 100%;
height:100%;
padding-top: 10%;
text-align: center;
position: fixed;
top: 0;
z-index: 100;
background: rgba(0,0,0,0.7);
}
No.1ベストアンサー
- 回答日時:
こんにちは
どのようなUIを考えていらっしゃるのか明示してありませんが、スクリプトを見る限りは「オーディオ要素に触ると(クリックすると)フェードアウトする」ように記述されているので、その通りの処理になっているとも言えます。
>主要なブラウザでは、~~問題ないのですが
たまたまコントロールに触ってもイベントが発生しないというのは、あくまでもブラウザ依存の仕様ではないでしょうか?
明示されていないのでよくわかりませんが、「オーディオ要素のコントローラ以外の部分をクリックしたら閉じる」ということをなさろうとしているのでしょうか?
ユーザにとっての認識のし易さや誤操作の可能性を考えると、個人的にはあまり良いUIとは思えませんが、どうしてもそれで実現なさりたいのであれば、上記の通りにことを行えば良さそうです。
クリックの位置を取得して『コントローラ以外の部分だったら閉じる』というスクリプトにしておけばよろしいでしょう。
(イベントが発生しないブラウザの場合でも問題は起きないでしょう。)
audio要素にはcontroller属性が存在するようですが、残念ながら、そこからサイズや位置は取得できないようです。
https://developer.mozilla.org/ja/docs/Web/API/HT …
コントローラのサイズ・位置などはブラウザ(及びバージョン)依存と思いますので、事前に調べておいて切り分けることになりそうですね。
以下はあくまでも個人的な感想ですが・・・
(ご質問文の本文には記載がありませんが)タイトルに「モーダルウィンドウ」とありますので、もしもオーディ要素を(疑似)モーダルで表示しているのであれば、多くのlightBox系のUIと同じように
・閉じるアイコンをクリック
・ウィンドウ外(マスクレイヤ)をクリック
・ESCキーの押下げ
などで閉じるようにしておくのが、ユーザには理解しやすいものとなるのではないかと想像します。
ご教授、ありがとうございます。
UIは特にデザインを指定しておらず、「audioのcontrols」にまんま依存しています。
各ブラウザに動作が依存しているのも、言われる通り、そのままですね。
やりたいことも、言われる通り「オーディオ要素のコントローラ以外の部分をクリックしたら閉じる」これをやりたかったのですが、どう処理すれば良いのかが分かりませんでした。
ただ、ご指摘頂いた文書から検索の幅が広がったので、もう少し自力で頑張ってみようと思います。
感謝です^^/
ありがとうございましたm(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript vertical sliderをautoplayしたい 2 2022/08/25 14:47
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript jQueryで同じクラス名のものを別物として扱いたい 1 2022/06/17 14:14
- HTML・CSS img と p を縦中央に配置したいのですがうまくいきません。 2 2023/01/12 14:38
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- ASP・SaaS FC2 BLOG <AUDIO TAGを入れプレビューはOk テーンプレートを更新すると ✖ 1 2023/08/14 11:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【VB.NET】HTML要素を取得しよ...
-
PL/Iについて、教えてください。
-
ajax
-
マイページはどこを開くの
-
ウインドウを毎回同じ位置、大...
-
デジタル時計の時刻合わせの方...
-
エクセルのシート上に別のシー...
-
Javascript_submit()完了後に処...
-
Outlookでこのような表示がされ...
-
スクリプトって、何ですか?ど...
-
VBAで任意のウインドウのサイズ...
-
一定時間おきにアラームやポッ...
-
[Java] Edgeでのアドレスバー非...
-
Yahoo地図でマーカーを表示した...
-
エクセルVBAでフォームのListbo...
-
別フォームから戻ったときのイ...
-
ポップアップウィンドウがブロ...
-
同じページをブラウザで複数開...
-
Excel VBAでの右クリックのポッ...
-
小さな表示窓の呼び方は
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ajax
-
VC++のデバッガでvectorの要素...
-
(VBS) テキストファイル読込で...
-
PL/Iについて、教えてください。
-
WebサイトのHTMLオブジェクトの...
-
JQuery、セレクトボックスをル...
-
VBA HTTPを用いたWEB画面の取...
-
【VB.NET】HTML要素を取得しよ...
-
モーダルウィンドウにおける処...
-
AJAXでのinputもしくはoptionな...
-
どこまでを動的に、どこまでを...
-
[C++] vector<string> の各要素...
-
MFCを使って、ひとつのkey(CStr...
-
JavaScriptでクリップボードの...
-
【VBA/HTML】特定のタグ要素に...
-
スプレッドシートのチェックボ...
-
ファンクションキーの既存の機...
-
bxSliderで動画をスライドごと...
-
エクセルでタグの内容が取得で...
-
マイページはどこを開くの
おすすめ情報