zoukankan      html  css  js  c++  java
  • fullpage.js配合bootstrap制作响应式网站

    一、需求:在PC端使用全屏滚动效果,移动端使用浏览器自带滚动条取消全屏滚动。

    二、难点:

      1、fullpage只能初始化一次,

      2、在移动端,当取消全屏滚动,每一屏高度自动;浏览器滚动条上下滚动时页面会自动向上或者向下滚动一点点

      3、在手机自带浏览器(除微信浏览器和QQ浏览器外)滑动时会自动回到顶部,有时是向上滑动时回到顶部。

    三、解决办法

         1)在页面加载完的时候初始化一次,使用setAllowScrolling()设置属性,在移动端取消全屏滚动====》导致难点2

    $(function(){
      $('#fullpage').fullpage({
                    navigation: true, //不显示项目导航
                    resize: true, //字体随着窗口缩放而缩放
                    scrollBar: true,
                    // anchors: ['section1', 'section2', 'section3', 'section4', 'section5', 'section6', 'section7'],
                    afterRender: function () {
                        wow = new WOW({
                            animateClass: 'animated',
                            mobile: false
                        });
                        wow.init();
                    }
    
               });
    });
        var $win = $(window).width();
        /*屏幕可见区域小于1024时,关闭全屏滚动,使用自带的滚动条*/
        if ($win < 1024) {
           $.fn.fullpage.setAllowScrolling(false);
        } else {
           $.fn.fullpage.setAllowScrolling(true);
        }

    2)为了解决移动端页面会自动上滚或者下滚一点点的问题,发现设置属性不能解决问题,就想到了destroy();pc端才初始化fullpage

     var $win = $(window).width();
            /*屏幕可见区域小于1024时,关闭全屏滚动,使用自带的滚动条*/if ($win < 1024) {
                    $.fn.fullpage.destroy('all'); //移动端销毁全屏滚动(可以得到效果,但是窗口由pc端变为移动端时控制台会报错)
            } else {
                $('#fullpage').fullpage({ // pc端才初始化fullpage
                    navigation: true, //不显示项目导航
                    resize: true, //字体随着窗口缩放而缩放
                    scrollBar: true,
                    // anchors: ['section1', 'section2', 'section3', 'section4', 'section5', 'section6', 'section7'],
                    afterRender: function () {
                        wow = new WOW({
                            animateClass: 'animated',
                            mobile: false
                        });
                        wow.init();
                    }
    
                });
            }

    报错:

     

    3)最终解决办法

    var timeout;
    $(window).resize(function () {
    autoScrolling();//必须放在这里,否则autoScrolling会在setAutoScrolling之前执行,拿不到setAutoScrolling
    // caseScroll();
    // carouselTop();
    clearTimeout(timeout);
    // timeout = setTimeout(function () { window.location.reload(); }, 100); // 若是不使用下面的根据尺寸变化来决定是否初始化fullpage,使用刷新方式也能解决;但是只要窗口变化就会刷新页面,不太友好。
    });
    function autoScrolling() {
    var $win = $(window).width();
            /*屏幕可见区域小于1024时,关闭全屏滚动,使用自带的滚动条*/
            if ($win < 1024) {
            try{
               $.fn.fullpage.destroy('all'); //移动端销毁全屏滚动(有点投机,但是可以得到效果,不报错)
            }catche(e){}      
            } else {
                $('#fullpage').fullpage({ // pc端才初始化fullpage
                    navigation: true, //不显示项目导航
                    resize: true, //字体随着窗口缩放而缩放
                    scrollBar: true,
                    // anchors: ['section1', 'section2', 'section3', 'section4', 'section5', 'section6', 'section7'],
                    afterRender: function () {
                        wow = new WOW({
                            animateClass: 'animated',
                            mobile: false
                        });
                        wow.init();
                    }
    
                });
            }
    }

    总结:以上就是我得到的解决方案,有点投机取巧;但是效果是达到了。。各位还有其他好的解决办法可以评论给我哦,一起分享,共同进步呀!

  • 相关阅读:
    管道命令'|' 和xargs find命令找到后把所有找到的删除
    UVa
    【手势交互】9. PS Move
    jquery时间格式化插件
    Android学习路线(十三)Activity生命周期——暂停和恢复(Pausing and Resuming )一个Activity
    hdu 2604 Queuing (矩阵高速幂)
    【Linux驱动】TQ2440 DM9000E网卡驱动移植(Linux-2.6.30.4)
    bzoj2648 SJY摆棋子
    Hive编程指南_学习笔记01
    通信协议中的转义符
  • 原文地址:https://www.cnblogs.com/LindaBlog/p/13850474.html
Copyright © 2011-2022 走看看