スマートフォン向けサイトを優先的に制作・公開する現場では横スクロールでレイアウトを組むことも多くなってきました。そこで今回は横スクロールを促すモーダルウィンドウの実装方法を解説します。
基本的には前回のモーダルウィンドウにスクロールイベントを追加しただけです。
詳しくはデモページも用意しましたので参考にしてみてください。
また、GitHubにも実際のソースコードをアップしているのでクローンできます。
骨組みは以下の3つです。
ではコードを見ていきます。
最初に横スクロールエリアの1番上のレイヤーになるようにモーダルウィンドウを表示させます。
HTML
<section>
<div class="c-modal-scroll">
<div id="ji-modalScroll" class="c-modal-scroll__container">
︙
</div>
</div>
</section>
SCSS
.c-modal-scroll {
padding: 0;
margin: 0 auto 40px;
width: 720px;
overflow: hidden;
overflow-x: scroll;
position: relative;
@media screen and (max-width: 560px) {
width: 360px;
}
/* モーダル部分のCSS */
&__container {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
background-color: rgba(0, 0, 0, 0.6);
z-index: 100;
}
}
横スクロールを促すアイコンをCSSの@keyframesを用いてアニメーションを付けていきます。
また、CSSのcalc()関数でどのデバイスでもモーダルウィンドウ上で同じ配置になるように調整しておきます。
SCSS
.c-modal-scroll {
︙
/* モーダル部分のCSS */
&__container {
︙
&:after {
content: "";
position: absolute;
top: calc(25% - 98px / 2);
left: calc(50% - 100px / 2);
width: 98px;
height: 100px;
background: url(https://buff-design.com/sample/img/icon_scroll.png) center no-repeat;
background-size: contain;
z-index: 2;
animation: 2s ease-in-out slide infinite;
}
}
@keyframes slide {
0% {
transform: translateX(30px);
opacity: 0;
}
30% {
transform: translateX(30px);
opacity: 0;
}
40% {
opacity: 1;
}
90% {
transform: translateX(-20px);
opacity: 1;
}
100% {
transform: translateX(-20px);
opacity: 0;
}
}
}
HTML
要素やウィンドウを横スクロールした時に、スクロールイベントでモーダルウィンドウをfadeOut()関数で非表示にさせます。
<div id="ji-modalScroll" class="c-modal-scroll__container"></div>
jQuery
$(function() {
// 横スクロールイベント
$('.c-modal-scroll').on('scroll', function () {
$('#ji-modalScroll').fadeOut();
});
});
今回は以上になります。
モーダルウィンドウについてクリックイベントとスクロールイベントの実装方法について解説しました。まずはコピペして使ってみてください。
作成方法が不安な方は是非参考にしていただけると嬉しいです。