zoukankan      html  css  js  c++  java
  • 一屏滚动滚轮事件

    参考了one-page.js。为了实现头部尾部效果。我认为很有必要自己写一下,不然用原有的插件我不知道如何实现想要的效果。写的太随意了。以后再做改正吧。

    $(function() {
        $('header').css({
            marginTop: '-62px',
            transition: "all .25s linear"
        });
        $('header').removeClass('visible')
        var sections = $('.page')
        var lastAnimation=0;

        function init_scroll(event, delta) {
            var leftPos = 0,
                topPos = 0
            var settings = {
                direction: 'vertical',
            }
            $.each(sections, function(i) {
                $(this).css({
                    position: "absolute",
                    top: topPos + "%"
                }).attr("data-index", i + 1);


                $(this).css({
                    position: "absolute",
                    left: (settings.direction == 'horizontal') ? leftPos + "%" : 0,
                    top: (settings.direction == 'vertical' || settings.direction != 'horizontal') ? topPos + "%" : 0
                });

                if (settings.direction == 'horizontal')
                    leftPos = leftPos + 100;
                else
                    topPos = topPos + 100;
            });

        }
        init_scroll()
        //添加滚轮事件监听
        $(document).on('mousewheel DOMMouseScroll MozMousePixelScroll', function(event) {
            event.preventDefault();
            //处理浏览器兼容,判断滚轮方向
            var delta = event.originalEvent.wheelDelta || -event.originalEvent.detail;
            var pos,current,next;
            var timeNow = new Date().getTime();
            //滚轮事件很容易被连续触发,这里通过获得最近一次触发事件的时间与上一次触发事件
            //的时间相差的值与动画持续时间比较,若小于动画持续时间,则阻止滚轮事件
            if(timeNow - lastAnimation < 500) {
                event.preventDefault();
                return;
            }

            if (delta < 0) { //滚轮向下滚动
                if ($('header').hasClass('visible')) {
                    /*$('header').css({
                    marginTop: "-62px",
                    transition: "all .2s linear"
                });
                    setTimeout(function(){$('header').removeClass('visible')},500) */
                    $('header').animate({
                        "marginTop": "-62px",
                        },
                        250, function() {
                        $('header').removeClass('visible')
                    });
                    // return false
                }
                else if(!$('header').hasClass('visible')) {
                    var index=$(".active").data('index'),
                        current=$(".page[data-index='" + index + "']"),
                        next=$(".page[data-index='" + (index + 1) + "']"),
                        length=$('.page').length;
                    console.log(length+1)
                    if (index<=length+1) {//如果存在下一屏
                        pos=(index * 100) * -1;
                        
                        if (index<length) {
                        current.removeClass("active")
                          next.addClass("active")
                        }
                    $('.onepage-wrapper').css({
                            "-webkit-transform": "translate3d(0," + pos + "%,  0)",
                            "-moz-transform": "translate3d(0," + pos + "%,  0)",
                            "-ms-transform": "translate3d(0," + pos + "%,  0)",
                            "transform": "translate3d(0," + pos + "%,  0)",
                            "-webkit-transition": "all .5s linear",
                            "-moz-transition": "all .5s linear",
                            "-ms-transition": "all .5s linear",
                            "transition": "all .5s linear"
                            });
                    }
                    // else if (next.data('index')==length+1) {
                            
                    // }
                    
                }
            } else { //滚轮向上滚动
                if ($('header').hasClass('visible')) return;
                else if ($('.active').data("index") == 1 && !$('header').hasClass('visible')) {
                    $('header').addClass('visible')
                    /*$('header').css({
                        marginTop: "0px",
                        transition: "all .5s linear"
                    });*/  
                    $('header').animate({
                        "marginTop": "0px",
                        },
                        250);
                } else if ($('.active').data("index") > 1) {
                    /*$('header').css({
                        marginTop: "-62px",
                        transition: "all .5s linear"
                    });*/
                         index=$(".active").data('index'),
                        current=$(".page[data-index='" + index + "']"),
                        next=$(".page[data-index='" + (index - 1) + "']");
                    if (next.length>0) {//如果存在下一屏

                        pos = ((next.data("index") - 1) * 100) * -1;
                        current.removeClass("active")
                          next.addClass("active")
                    $('.onepage-wrapper').css({
                            "-webkit-transform": "translate3d(0," + pos + "%,  0)",
                            "-moz-transform": "translate3d(0," + pos + "%,  0)",
                            "-ms-transform": "translate3d(0," + pos + "%,  0)",
                            "transform": "translate3d(0," + pos + "%,  0)",
                            "-webkit-transition": "all .5s linear",
                            "-moz-transition": "all .5s linear",
                            "-ms-transition": "all .5s linear",
                            "transition": "all .5s linear"
                            });
                    }    
                }

            }
            lastAnimation = timeNow;
        });
    })

  • 相关阅读:
    【alpha】Scrum站立会议第2次....10.17
    【alpha】Scrum站立会议第1次····10.16
    【week4】技术随笔psp
    【week4】课堂Scrum站立会议
    【week3】psp (技术随笔)
    【week3】四则运算 单元测试
    【week3】词频统计 单元测试
    Oracle Split字符串

    指针函数与指针数组
  • 原文地址:https://www.cnblogs.com/rage-the-dream/p/6365584.html
Copyright © 2011-2022 走看看