jquery插件开发学习笔记(六)——页面平滑滚动

写在前面

看教科书案例。代码抄的。但原代码未实现需求功能。改动之。
现分析之。

关键代码

<div class="scrollnav" id="scrollnav">
    <a href="#" page-scroll="#scrolltoTop" id="scrolltoTop">滑动到顶端</a><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
    <a href="#" page-scroll="#scrolltoMid" id="scrolltoMid">滑动到中部</a><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
    <a href="#" page-scroll="#scrolltoEnd" id="scrolltoEnd">滑动到底端</a><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</div>

在原文代码中,每个a标签是没有id的。所以功能未实现。我对每个a标签加上了和page-scroll属性相同的id(去掉了id符号#),功能完美实现。

jQuery.scrollTo=function (scrolldom, scrolltime) {
            $(scrolldom).click(function () {
                var scrollToDom=$(this).attr("page-scroll");                            $('html,body').animate({scrollTop:$(scrollToDom).offset().top},scrolltime);
                return false;
            });
        };
        $.scrollTo("#scrollnav a",1000);

这里定义jquery插件的方式应该是最简单的。对于功能单一的插件,这是最合适的方法。直接将函数添加到jquery库里。
jQuery.plugin_name=function(){ };
定义完,直接调用即可。
$.plugin_name();

代码分析

在定义插件时,即传入两个参数:scrolldom用来指定需要滑动的目标位置,而scrolltime用来指定动画时长。当scrolldom被点击时,定义scrollTopDom来获取a标签的page-scroll属性,这是为了存储当前的对象。然后对body(整个页面)进行动画(animate)。
scrollTop属性为对象的滑动条距离顶端的距离。思路是将body滑动到指定对象,即将该对象的滑动条的上偏移量传给body的scrollTop属性。
有点像绕口令。前提是正确理解scrollTop属性和offset属性。
好吧,我承认,我也是刚刚在十几分钟前才见到这二位仁兄。
但我爱你们!

代码全文

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="../../lib/jquery/jquery.js"></script>
</head>
<body>
<div class="scrollnav" id="scrollnav">
    <a href="#" page-scroll="#scrolltoTop" id="scrolltoTop">滑动到顶端</a><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
    <a href="#" page-scroll="#scrolltoMid" id="scrolltoMid">滑动到中部</a><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
    <a href="#" page-scroll="#scrolltoEnd" id="scrolltoEnd">滑动到底端</a><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</div>

<script>
    $(document).ready(function () {
        jQuery.scrollTo=function (scrolldom, scrolltime) {
            $(scrolldom).click(function () {
                var scrollToDom=$(this).attr("page-scroll");
                //$(this).addClass("thisscroll").siblings().removeClass("thisscroll");
                $('html,body').animate({scrollTop:$(scrollToDom).offset().top},scrolltime);
                return false;
            });
        };
        $.scrollTo("#scrollnav a",1000);

    });
</script>


</body>
</html>

后面还有

慢慢消化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值