如何利用锚点进行平滑滚动?

Posted Panax

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何利用锚点进行平滑滚动?相关的知识,希望对你有一定的参考价值。

1.首先封装了一个插件:

(function($) {
var Anywhere = {
DEF_DURATION: 1000,
ATTR_DURATION: "duration",
ATTR_ANYTYPE: "anytype",
$body_html: $("body, html"),
$window: $(window)
};
$.fn.extend({
toAnywhere: function(duration) {
return $(this).each(function() {
new _anyWhere(this, duration).getAnyWhere();
});
}
});

function _anyWhere(el, duration) {
    this.el = el;
    this.$el = $(el);
    this.duration = parseInt(duration) || Anywhere.DEF_DURATION;
    this.anyType = this.$el.attr(Anywhere.ATTR_ANYTYPE);
}
_anyWhere.prototype = {
    build: function() {
        if(!/MSIE 6/.test(navigator.userAgent)) {
            this.$el.css("position", "fixed");
        }
        this.$el.css("display", "none");
    },
    getAnyWhere: function() {
        if(this.anyType != "link") {
            this.build();
            this.bindWindowScroll();
        }
        this.bindClick();
    },
    bindClick: function() {
        var duration = this.duration;
        this.$el.click(function() {
            var $this = $(this);
            Anywhere.$body_html.animate({
                scrollTop: $($this.attr("href")).offset().top + "px"
            }, parseInt($this.attr("duration")) || duration);
            return false;
        });
    },
    bindWindowScroll: function() {
        var $this = this.$el;
        Anywhere.$window.bind("scroll", function() {
            $(this).scrollTop() > 50 ? $this.fadeIn("fast") : $this.hide();
        });
    }
}

})(jQuery);

只需要调用就行了$(".to_any_link").toAnywhere(500);

以上是关于如何利用锚点进行平滑滚动?的主要内容,如果未能解决你的问题,请参考以下文章

平滑滚动到 div 内的锚点

JavaScript 使用原型进行平滑的锚点滚动,并使用href属性进行简单而不引人注目的滚动

vue监听滚动事件 实现动态锚点

如何在没有插件的情况下以角度 4 平滑滚动到页面锚点?

锚点平滑滚动之scrollIntoView

JQuery 实现锚点链接之间的平滑滚动