質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.58%

モーダルウィンドウでスマホの際に背景のスクロールを固定したいです。

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 1,058

tom1645

score 10

モーダルウィンドウを設置したのですが、
iphoneで確認した際に背景も一緒にスクロールされてしまい、モーダルウィンドウ箇所がスクロールできません。

背景固定してモーダルウィンドウ内をスクロールしたいのですが、ご教授いただけませんでしょうか?

モーダル用のプラグインは、fullPage.jsになります。

<div id="section05" class="section fp-auto-height-responsive">
                        <div class="sectionInner">
                            <p class="imageText01"><img src="img/home/txt_about.png" alt=""></p>
                        </div>
                        <div class="block">
                            <div class="inner inner05">
                                <h2 class="headline1"><em>ABOUT 〇〇〇</em><span>〇〇〇について</span></h2>
                                <div class="section05Textarea">
                                    <p>テキスト</p>
                                    <p>テキスト</p>
                                    <p>テキスト</p>

                                </div>
                                <p class="button"><a href="××××" target="_blank"><span>テキスト</span></a></p>
                            </div>
                        </div>
                    </div>
#main #section05 .section05Textarea {
  font-size: 16px;
  line-height: 2.35;
  text-align: left;
  max-width: 750px;
  margin: auto; }
  #main #section05 .section05Textarea p {
    margin-bottom: 1em; }
  #main #section05 .section05Textarea .text-small {
    margin-top: 40px;
    font-size: 11px;
    line-height: 1.5; }

#main #section05 .inner05 {
      padding-bottom: 20px; }
    #main #section05 .section05Textarea p {
      line-height: 25px;
      font-size: 12px; }
      #main #section05 .section05Textarea p.text-small {
        margin-top: 20px;
        font-size: 10px; }
/* ------------------------------------------------------------------
    section05
    -------------------------------------------------------------------*/
  #main .section p.iconArrow:before {
    width: 36px;
    height: 36px; }
  @-webkit-keyframes sdb03 {
    0% {
      opacity: 0; }
    30% {
      opacity: 1; }
    60% {
      -webkit-box-shadow: 0 0 0 20px rgba(255, 255, 255, 0.1);
      box-shadow: 0 0 0 20px rgba(255, 255, 255, 0.1);
      opacity: 0; }
    100% {
      opacity: 0; } }
  @keyframes sdb03 {
    0% {
      opacity: 0; }
    30% {
      opacity: 1; }
    60% {
      -webkit-box-shadow: 0 0 0 20px rgba(255, 255, 255, 0.1);
      box-shadow: 0 0 0 20px rgba(255, 255, 255, 0.1);
      opacity: 0; }
    100% {
      opacity: 0; } }
  .modalCloseBtn {
    display: inline-block;
    width: 100%;
    max-width: 202px;
    padding: 15px 10px;
    text-decoration: none;
    font-size: 123.1%;
    background: #FFF;
    border: 1px solid #333;
    color: #333;
    -webkit-transition: 0.5s;
    -o-transition: 0.5s;
    transition: 0.5s;
    position: relative;
    font-size: 12px;
    background-color: transparent; } }
// fullpage



        var $main = $('#main');
        if($main.find('.section').length > 1) {
            $main.fullpage({
                scrollOverflow: true,
                //scrollOverflow: false,
                autoScrolling: false,
                scrollOverflowOptions: {
                    click:false,
                    preventDefaultException: {tagName: /.*/}
                },
                afterRender: function() {
                    if (window.innerWidth > 736) {
                        $('.section .block').css('min-height', (window.innerHeight - 250) + 'px');
                    }
                    else {
                        $('.section .block').css('min-height', (window.innerHeight - 120) + 'px');
                    }
                    $('.section .sectionInner').css({
                        height: (window.innerHeight - $('header').outerHeight()) + 'px',
                        top: $('header').outerHeight() + 'px'
                    });
                    $('#section01 .sectionInner').css({
                        height: window.innerHeight + 'px',
                        top: '0'
                    });
                    $('#section06 .sectionInner').css({
                        height: (window.innerHeight - $('header').outerHeight()) + 'px',

                        top: '500'
                    });
                },
                afterLoad: function(anchorLink, index) {
                    var $curSection = $('#section0' + index);
                    if ($curSection.find('.block .inner').css('opacity') == 0) {
                        $curSection.find('.sectionInner').animate({ opacity: 1 }, 1000, function() {
                            setTimeout(function() {
                                $curSection.find('.block').css('top', '0').delay(1000).queue(function() {
                                    $(this).children('.inner').animate({opacity: 1}, 700, function() {
                                        // re-active scroll
                                        $main.fullpage.setAllowScrolling(true);
                                        $main.fullpage.setKeyboardScrolling(true);
                                    });
                                });
                                $curSection.find('.sectionInner').animate({opacity: 0}, 1000);
                            }, 1000);
                        });
                    }
                    else {
                        if ($curSection.find('.block .inner').length == 0) {
                            $curSection.find('.sectionInner').animate({ opacity: 1 }, 1000);
                        }
                        // re-active scroll
                        $main.fullpage.setAllowScrolling(true);
                        $main.fullpage.setKeyboardScrolling(true);
                    }
                },
                onLeave: function(index, nextIndex, direction) {
                    // prepare next animation
                    if($('#section0' + nextIndex + ' .block .inner').css('opacity') == 0) {
                        $('#section0' + nextIndex + ' .block').css({
                            position: 'relative',
                            top: window.innerHeight + 'px'
                        });

                    }
                    // header fixed
                    if(nextIndex != 1) {
                        $('header').addClass('bgWhite');
                    }
                    else {
                        $('header').removeClass('bgWhite');
                        $('.naviSP').outerHeight(window.innerHeight);
                        $('.naviSP .naviInner').outerHeight(window.innerHeight);
                    }
                    // navi active
                    $('#navi').children().removeClass('active');
                    $('#navi').children('li[data-section="' + nextIndex + '"]').addClass('active');
                    // stop scroll
                    $main.fullpage.setAllowScrolling(false);
                    $main.fullpage.setKeyboardScrolling(false);
                }
            });
            $('.iconArrow').on('click touch', function(event) {
                $main.fullpage.moveSectionDown();
            });
            $('#navi li a, .naviSP li a').on('click touch', function(event) {
                $main.fullpage.moveTo($(this).parent().data('section'));
                $('#overlay').trigger('click');
            });
        }
    });
})(jQuery);


//section02
$(function(){
    var slider = $('.modalContent_list').slick();
    $('.js-modal').click(function(){
        slider.css('opacity',0);
        slider.animate({'z-index':1},300,function(){
            slider.slick('setPosition');
            slider.animate({'opacity':1});
        });
    });
});


$(function(){
    $(".js-modalConcept").hide();
        $(".js-modal").click(function(){
            $( this ).blur() ;
            if( $( ".modal-overlay" )[0] ) return false ;
            $( ".js-modalConcept" ).after( '<div class="modal-overlay"></div>' ) ;
            $( ".modal-overlay" ).fadeIn( "slow" ) ;
            $( ".js-modalConcept" ).fadeIn( "slow" ) ;
            $( ".modalCloseBtn" ).unbind().click( function(){
                $( ".modalContent,.modal-overlay" ).fadeOut( "slow" , function(){
                    $('.modal-overlay').remove() ;
                } ) ;
            });
        });
});


//menu
$(function(){
    $(".js-modalMenu").hide();
    $(".js-modalMenuBtn").click(function(){
        $( this ).blur() ;
        if( $( ".modal-overlay" )[0] ) return false ;
        $( ".js-modalMenu" ).after( '<div class="modal-overlay"></div>' ) ;
        $( ".modal-overlay" ).fadeIn( "slow" ) ;
        $( ".js-modalMenu" ).fadeIn( "slow" ) ;
        $( ".modalCloseBtn,.modal-overlay" ).unbind().click( function(){
            $( ".modalContent,.modal-overlay" ).fadeOut( "slow" , function(){
                $('.modal-overlay').remove() ;
            } ) ;
        });
    });
});

//list


$(function(){
    var slider = $('.modalContent_listMenu').slick();
    $('.js-modalMenuBtn').click(function(){
        slider.css('opacity',0);
        slider.animate({'z-index':1},300,function(){
            slider.slick('setPosition');
            slider.animate({'opacity':1});
        });
    });
});

//section03


$(function(){
$(".section03Modal").hide();
$(".js-modal03").click(function(){
    $( this ).blur() ;
    if( $( ".modal-overlay" )[0] ) return false ;
    $( ".section03Modal" ).after( '<div class="modal-overlay"></div>' ) ;
    $( ".modal-overlay" ).fadeIn( "slow" ) ;
    $( ".section03Modal" ).fadeIn( "slow" ) ;
    $( ".modal-overlay,.modalCloseBtn" ).unbind().click( function(){
        $( ".section03Modal,.modal-overlay" ).fadeOut( "slow" , function(){
            $('.modal-overlay').remove() ;
        } ) ;
    });
});
});




$(function(){
    var slider = $('.section03ModalList').slick();
    $('.js-modal03').click(function(){
        slider.css('opacity',0);
        slider.animate({'z-index':1},300,function(){
            slider.slick('setPosition');
            slider.animate({'opacity':1});
        });
    });
});
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • colling

    2018/11/05 10:42

    モーダル用のjqueryプラグインは何を使っているのか書いた方が回答を得られると思います。

    キャンセル

  • tom1645

    2018/11/05 13:34

    アドバイスありがとうございます。プラグインは、fullPage.jsになります。

    キャンセル

  • colling

    2018/11/06 08:06

    提示されているソースでは、モーダルウインドウも、スクロールも現れません。問題が再現できるソースを提示できますか?

    キャンセル

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.58%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る