首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >$.browser.typekit的问题

$.browser.typekit的问题
EN

Stack Overflow用户
提问于 2014-05-07 08:27:22
回答 2查看 50关注 0票数 0

经过一天的研究,我发现了这个漂亮的小代码,它可以产生一个超级流畅的滚动页面。

代码语言:javascript
复制
$(document).ready(function() {
jQuery.extend(jQuery.easing, {
    easeOutQuint: function(x, t, b, c, d) {
        return c * ((t = t / d - 1) * t * t * t * t + 1) + b;
    }
});

var wheel = false,
    $docH = $(document).height() - $(window).height(),
    $scrollTop = $(window).scrollTop();

$(window).bind('scroll', function() {
    if (wheel === false) {
        $scrollTop = $(this).scrollTop();
    }
});
$(document).bind('DOMMouseScroll mousewheel', function(e, delta) {
    delta = delta || -e.originalEvent.detail / 3 || e.originalEvent.wheelDelta / 120;
    wheel = true;

    $scrollTop = Math.min($docH, Math.max(0, parseInt($scrollTop - delta * 30)));
    $($.browser.webkit ? 'body' : 'html').stop().animate({
        scrollTop: $scrollTop + 'px'
    }, 2000, 'easeOutQuint', function() {
        wheel = false;
    });
    return false;
});
});

我面临的问题是,从jQuery 1.9开始,$.browser已经被删除了。我试图找到一种变通方法,让它在更新版本的情况下工作,但没有任何结果。提前感谢您的帮助。

EN

回答 2

Stack Overflow用户

发布于 2014-05-07 08:37:40

使用jQuery Migrate。https://github.com/jquery/jquery-migrate/

它拥有从jQuery核心中移除的所有API和功能。

JQuery浏览器就在里面。请看这里:

https://github.com/jquery/jquery-migrate/blob/master/src/core.js#L83

这是来自JQuery的另一个链接,它告诉您可以使用JQuery Migrate,但是如果您使用像这样的东西会更好。

http://jquery.com/upgrade-guide/1.9/#jquery-browser-removed

要使用它,只需将它包含在您的代码中,如下所示:

代码语言:javascript
复制
<script src="http://code.jquery.com/jquery-migrate-1.1.0.js"></script>
票数 0
EN

Stack Overflow用户

发布于 2014-05-07 22:26:06

在继续研究之后,我找到了成功创建平滑滚动的代码,而不需要迁移jquery。它似乎在所有浏览器上都能完美地工作。The code was found here

我已经用1.11和2.1版本对其进行了测试。

代码:

代码语言:javascript
复制
if (window.addEventListener) window.addEventListener('DOMMouseScroll', wheel, false);
window.onmousewheel = document.onmousewheel = wheel;

function wheel(event) {
    var delta = 0;
    if (event.wheelDelta) delta = event.wheelDelta / 120;
    else if (event.detail) delta = -event.detail / 3;

    handle(delta);
    if (event.preventDefault) event.preventDefault();
    event.returnValue = false;
}

function handle(delta) {
    var time = 1000;
    var distance = 200;
    // Dom where it will apply 
    $('html, body').stop().animate({
        scrollTop: $(window).scrollTop() - (distance * delta)
    }, time );
}

希望这对任何想要解决同样问题的人有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23506727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档