点击事件然后页面跳转到指定DOM元素的位置

设置一个函数,执行函数滚动条自动拖动,页面跳转到指定DOM元素的位置。

实现方式很简单,首先引入animatescroll.js文件(要先引入JQuery),然后

$(‘#id‘).animatescroll();

即可调到指定DOM元素在页面的位置。

为方便可以编写一个函数,传入DOM元素的ID

function jumpTo(id){
    $("#"+id).animatescroll();
}

附animatescroll.js

/* 使用方法: $("#id").animatescroll();  即可调到指定DOM在页面的位置*/
(function($){

    $.fn.animatescroll = function(options) {

        // fetches options
        var opts = $.extend({},$.fn.animatescroll.defaults,options);

        // Get the distance of particular id or class from top
        var offset = this.offset().top;
        // defines various easing effects
        jQuery.easing[‘jswing‘] = jQuery.easing[‘swing‘];
        jQuery.extend( jQuery.easing,
        {
                def: ‘easeOutQuad‘,
                swing: function (x, t, b, c, d) {
                        return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
                },
                easeInQuad: function (x, t, b, c, d) {
                        return c*(t/=d)*t + b;
                },
                easeOutQuad: function (x, t, b, c, d) {
                        return -c *(t/=d)*(t-2) + b;
                },
                easeInOutQuad: function (x, t, b, c, d) {
                        if ((t/=d/2) < 1) return c/2*t*t + b;
                        return -c/2 * ((--t)*(t-2) - 1) + b;
                },
                easeInCubic: function (x, t, b, c, d) {
                        return c*(t/=d)*t*t + b;
                },
                easeOutCubic: function (x, t, b, c, d) {
                        return c*((t=t/d-1)*t*t + 1) + b;
                },
                easeInOutCubic: function (x, t, b, c, d) {
                        if ((t/=d/2) < 1) return c/2*t*t*t + b;
                        return c/2*((t-=2)*t*t + 2) + b;
                },
                easeInQuart: function (x, t, b, c, d) {
                        return c*(t/=d)*t*t*t + b;
                },
                easeOutQuart: function (x, t, b, c, d) {
                        return -c * ((t=t/d-1)*t*t*t - 1) + b;
                },
                easeInOutQuart: function (x, t, b, c, d) {
                        if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
                        return -c/2 * ((t-=2)*t*t*t - 2) + b;
                },
                easeInQuint: function (x, t, b, c, d) {
                        return c*(t/=d)*t*t*t*t + b;
                },
                easeOutQuint: function (x, t, b, c, d) {
                        return c*((t=t/d-1)*t*t*t*t + 1) + b;
                },
                easeInOutQuint: function (x, t, b, c, d) {
                        if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
                        return c/2*((t-=2)*t*t*t*t + 2) + b;
                },
                easeInSine: function (x, t, b, c, d) {
                        return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
                },
                easeOutSine: function (x, t, b, c, d) {
                        return c * Math.sin(t/d * (Math.PI/2)) + b;
                },
                easeInOutSine: function (x, t, b, c, d) {
                        return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
                },
                easeInExpo: function (x, t, b, c, d) {
                        return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
                },
                easeOutExpo: function (x, t, b, c, d) {
                        return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
                },
                easeInOutExpo: function (x, t, b, c, d) {
                        if (t==0) return b;
                        if (t==d) return b+c;
                        if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
                        return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
                },
                easeInCirc: function (x, t, b, c, d) {
                        return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
                },
                easeOutCirc: function (x, t, b, c, d) {
                        return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
                },
                easeInOutCirc: function (x, t, b, c, d) {
                        if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
                        return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
                },
                easeInElastic: function (x, t, b, c, d) {
                        var s=1.70158;var p=0;var a=c;
                        if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
                        if (a < Math.abs(c)) { a=c; var s=p/4; }
                        else var s = p/(2*Math.PI) * Math.asin (c/a);
                        return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
                },
                easeOutElastic: function (x, t, b, c, d) {
                        var s=1.70158;var p=0;var a=c;
                        if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
                        if (a < Math.abs(c)) { a=c; var s=p/4; }
                        else var s = p/(2*Math.PI) * Math.asin (c/a);
                        return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
                },
                easeInOutElastic: function (x, t, b, c, d) {
                        var s=1.70158;var p=0;var a=c;
                        if (t==0) return b;  if ((t/=d/2)==2) return b+c;  if (!p) p=d*(.3*1.5);
                        if (a < Math.abs(c)) { a=c; var s=p/4; }
                        else var s = p/(2*Math.PI) * Math.asin (c/a);
                        if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
                        return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
                },
                easeInBack: function (x, t, b, c, d, s) {
                        if (s == undefined) s = 1.70158;
                        return c*(t/=d)*t*((s+1)*t - s) + b;
                },
                easeOutBack: function (x, t, b, c, d, s) {
                        if (s == undefined) s = 1.70158;
                        return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
                },
                easeInOutBack: function (x, t, b, c, d, s) {
                        if (s == undefined) s = 1.70158;
                        if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
                        return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
                },
                easeInBounce: function (x, t, b, c, d) {
                        return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
                },
                easeOutBounce: function (x, t, b, c, d) {
                        if ((t/=d) < (1/2.75)) {
                                return c*(7.5625*t*t) + b;
                        } else if (t < (2/2.75)) {
                                return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
                        } else if (t < (2.5/2.75)) {
                                return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
                        } else {
                                return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
                        }
                },
                easeInOutBounce: function (x, t, b, c, d) {
                        if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
                        return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
                }
        });

        // Scroll the page to the desired position
        $("html, body").animate({ scrollTop: offset-opts.padding }, opts.scrollSpeed, opts.easing);

    };

    // default options
    $.fn.animatescroll.defaults = {
        easing:"swing",
        scrollSpeed:800,
        padding:0
    };

}(jQuery));
时间: 2024-12-14 09:44:07

点击事件然后页面跳转到指定DOM元素的位置的相关文章

asp.net在同一页面跳转到指定位置

方案一 location.hash = "#ID" location.hash 可以在同一页面跳转到指定的位置. 页面没有缓冲,一下子就到了指定位置,很突兀 方案二 var hr = $("#ID"); var anh = $(hr).offset().top; $("html,body").stop().animate({ scrollTop: anh }, 2000); 页面平缓的滑到指定的位置,2000毫秒 #ID里面是要滑到的位置.

分析js操作动态获取屏高并触发按钮点击事件回到页面窗口的顶部

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>回到顶部</title> <style> .d1{ width:100%; height:5000px; } #btn{ width:100px; height:40px; position:fixed; right:0; bottom:0; dis

jQuery触发a标签点击事件-为什么不跳转

今天开发发现 使用jQuery触发a标签的点击事件,当前的样式发生了变化,可是没有跳转,为什么? 百度后找到的解决方案: <a onclick="hanle()" href="test.jsp" target="main" ><span id="hand">处理</span></a> 在a标签中加上span标签,触发span标签的点击事件. 直接在a标签上触发点击,当前链接onc

2.点击事件和页面切换

注意点:导包. 注意点:导包. 注意点:导包. (重要的事情说三遍,下文就不再赘述) 快捷键:Ctrl+Shift+O 2-1点击事件: 2-1-1.使用监听事件 在类中继承点击事件====implements onClickListener 然后,创建public void onClick(){}类 2-1-2.绑定按钮,再绑定事件 Button btn = (Button)findViewById(R.id.btn); //绑定事件也有匿名内部类和监听方式 btn.setonClickLis

Vue -- element-ui el-table 点击tr项页面跳转,返回后缓存回显点击项

页面跳转反显 点击table tr项后,页面跳转到下级页面,返回回显搜索条件.当前页码.并将点击项select选中.滚动条也被记录回显跳转时滚动的位置 思路: 页面临时缓存我选择使用sessionStorage,点击tr行将搜索条件和页码,点击行的id进行存储 data(){ return { } } setSessionStore (name, content) { if (!name) return if (typeof content !== 'string') { content = J

【转】移动Web开发-点击事件及页面滚动

点击事件 移动端浏览器点击事件默认有300ms的延迟 移动端实现弹性滚动 安卓局部滚动 滚动条出现bug,解决方案:Android只是用全局滚动 模拟全局滚动,加上padding-top及padding-bottom 键盘定制 自动纠错关闭

进入页面跳转到指定锚点

问题 在Vue实例完成之后,将锚点定位到指定元素. 分析: 如何实现,这是一个问题.首先生命周期函数,放在created钩子中,这个时候页面还没有渲染完成,如果进行锚点跳转,很可能就无法跳转到指定位置.因此只能放在生命周期钩子mounted中. 但是,如果直接使用location.hash也是有可能无法正常跳转,因此,要保证正常跳转,就要把跳转锚点的代码放在事件队列的最好,这个时候就要使用setTimeout(() => {}, 0)了. 解决方案: 在生命周期钩子mounted写代码 将跳转锚

移动端访问网站页面跳转到指定手机页面

#region 手机端跳转到指定手机页地址 /// <summary> /// 手机端跳转到指定手机页地址 /// </summary> /// <param name="url">手机页地址</param> public static void m_goUrl(string url) { //排除手机访问电脑端 if(BTool.getCookies("pcmod","")!="1&qu

android重写webview长按时选择文字然后点击搜索按钮的事件,默认是chrome接受点击事件,现在跳转到360搜索页面

用这个FindWebView替换默认使用的webview就可以了,重写SelectedText 类里地 show方法 string data就是获取到的选中的文字 import android.annotation.SuppressLint; import android.annotation.TargetApi; import android.content.Context; import android.content.Intent; import android.os.Build; imp