こんにちは。
こちらで一度質問し、一度は解決したのですが、追加要件の為問題が置きました。
・前回の質問。・前回の回答。・今回の追加の問題。・解決したいこと。・試したこと。・コード。
の順番で記述したいと思います。
ーー前回の質問ーー
スマホ対応のフルスクリーンでのスライド(横)をすることになり、javascriptのスライダー Swiperを入れてみました(フルスクリーン対応でしたので)。
無事にフルスクリーンでのスライドはできたのですが、画面をドラッグしたり、スマホでフリック、スワイプしたりするとスライドしてしまいます。
要件として前後にスライドさせるボタンでのみスライドさせなければならず、
とりあえずPC側は、SwiperのオプションのsimulateTouch: falseで対処できましたが、スマホ画面がうまくいきません。
フリック、スワイプを無効にする、もしくは前後にスライドさせるボタン以外ではスライドを無効にする等はできるでしょうか?
ーー前回の回答ーー
スライダー画像の上にposition: absolute;などでdivをスライダーの上に重ね、
スライドボタンには、position: relative;を付与しz-indexでdivよりも上に重ねる。これでスライドボタン機能は正常に動き、スライダーの上にはdivがあるのでタッチでスライドができなくなる。
ーー今回の追加の問題ーー
フルスクリーンでスライドする中に更にスマホでフリック操作できる箇所や、GoogleMap、クリックで開くモーダル等のユーザーが動かすところがある。
前回の回答のやり方ですと前後にスライドさせるボタン以外スライダー画像の上のdivがあるので操作できなくなってしまっているという問題。
ーー解決したいことーー
スライダー画像の上にdivをおいてもフルスクリーンでスライドする部分以外は操作できるようにするやり方はあるでしょうか?
もしくは、フリック、スワイプを無効にする、前後にスライドさせるボタン以外ではスライドを無効にする等はできるでしょうか?
ーー試したことーー
GoogleMapの<div id="map"></div>等,イベントが発生するものにz-indexでスライダー画像の上にdivより大きい数字をつけてみましたが、うまく行きませんでした。
ーーコードーー
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <link rel="stylesheet" href="swiper.css"> <script type="text/javascript" charset="UTF-8" src="https://maps.googleapis.com/maps/api/js?sensor=false・・・・・"></script> <script src="/asb/sp/js/lib/jquery-2.1.1.min.js"></script> <style> html, body { position: relative; height: 100%; } body { background: #eee; font-family: Helvetica Neue, Helvetica, Arial, sans-serif; font-size: 14px; color:#000; margin: 0; padding: 0; } .swiper-container { width: 100%; height: 100%; } .swiper-slide { text-align: center; font-size: 18px; background: #fff; /* Center slide text vertically */ display: -webkit-box; display: -ms-flexbox; display: -webkit-flex; display: flex; -webkit-box-pack: center; -ms-flex-pack: center; -webkit-justify-content: center; justify-content: center; -webkit-box-align: center; -ms-flex-align: center; -webkit-align-items: center; align-items: center; } .test { position: absolute; top: 0; width: 414px; height: 1000px; z-index: 3; } </style> </head> <body> //前回回答をもらったやり方 //<div class="swiper-button-next"></div>//前回回答の場合前後ボタンをコチラに移動 //<div class="swiper-button-prev"></div>//前回回答の場合前後ボタンをコチラに移動 //<div class="test"></div>//スライダー画像の上のdiv //前回回答をもらったやり方 <!-- Swiper --> <div class="swiper-container"> <div class="swiper-wrapper"> <div class="swiper-slide"> <div id="map"></div> </div>//GoogleMap以外にもありますが(長いので省略致します) <div class="swiper-slide"><div onClick="modal()">モーダルの処理(長いので省略致します)</div></div>//クリックしたらモーダルが出る </div> <!-- Add Arrows --> <div class="swiper-button-next"></div>//この前後ボタンでのみスライドさせたい <div class="swiper-button-prev"></div>//この前後ボタンでのみスライドさせたい </div> <!-- Swiper JS --> <script src="swiper.js"></script> <!-- Initialize Swiper --> <script> var swiper = new Swiper('.swiper-container', { simulateTouch: false, noSwiping: true, noSwipingClass: 'stop-swiping', navigation: { nextEl: '.swiper-button-next', prevEl: '.swiper-button-prev', }, }); </script> </body> </html>
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。