用 jQuery 实现页面滚动(Scroll)效果的完美方法

以前很多博主都写过/转载过用 jQuery 实现页面滚动(Scroll)效果的方法,但目前搜来的方法大都在 Opera 下有个小 Bug:直接用跳的而且画面闪烁。

今天,超级低调的高手 Willin 共享了一种完美方法解决 jQuery 实现滚动效果在 Opera 下的bug,我随即调试+应用到我目前的主题,目前经过测试非常完美,特意贴出代码加以说明。

因为本人不太懂 js,jQuery 也只是皮毛,原理方面我说不清楚,只能说明修改方法。

演示:点击现在的主题 zOM 底部的“Δ”/文章页面标题下面的“x comments”  “Leave a comment

假设:你的主题最上面的 id 是 header,最下面的“返回顶部”的 id 为 top

jQuery 代码如下

jQuery(document).ready(function($) {

$body = (window.opera) ? (document.compatMode == "CSS1Compat" ? $('html') : $('body')) : $('html,body');// 这行是 Opera 的补丁, 少了它 Opera 是直接用跳的而且画面闪烁 by willin

$('#top').click(function(){
	$body.animate({scrollTop: $('#header').offset().top}, 1000);
	return false;// 返回false可以避免在原链接后加上#
});

});

说明:直接看注释

$('#top').click(function(){...}); 这是滚动基本代码,可以根据自个情况变通,也就是举一反三了,如:既然可以返回顶部,那么就可以滚动到底部、滚动到某一个 id、滚动到中间……

那么我再贴出一个滚动到“评论框”的例子

例子前提假如:文章标题下面有个“添加评论”,原来的html如下

<div id="add-comment"><a href="#respond"></a></div>

(注:#respond 是评论框的 id)

那么 $('#top').click(function(){...}); 这段代码就变为如下:

$('#add-comment').click(function(){
	$body.animate({scrollTop: $('#respond').offset().top}, 1000);
	return false;
});

这样就行了,简单不?有些朋友说原理,学jQ去吧

更多的方法去 Willin 的《頁面 Scroll 的幾種方法

zww
or
oooo

“用 jQuery 实现页面滚动(Scroll)效果的完美方法”有101条评论

  1. pazz7ven says:

    哈哈 沙发

  2. 久酷 says:

    我顶

  3. bolo says:

    jQuery有个滚动插件,貌似2k,功能很完善

    1. zwwooooo says:

      @bolo 呵呵,这点就不要用插件了

  4. A.shun says:

    来晚了,赞美超级低调的高手 Willin

    1. Derek says:

      @A.shun
      好像只是加了個

      return false

      罷了… :???:

  5. Timothy says:

    Willin高手啊,偶的ajax评论就是他的代码,呵呵

    1. zwwooooo says:

      @Timothy 我这也是,呵呵

  6. Jinwen says:

    好像是好方法。不过我最近也懒得折腾JS去了,考虑的都是样式方面的改进。

    1. zwwooooo says:

      @Jinwen Jinwen对于js应该教熟悉,我真是不懂js,只能使用

  7. 图玛奇 says:

    你提交给搜索引擎的速度真快~~~ :idea: 小声告诉你,domaintools显示你的meta description没有补充好。

    1. zwwooooo says:

      @图玛奇 我从来没补充过……

  8. willin says:

    一下子就這麼多人圍觀了.. 你很受歡迎喔!

    1. zwwooooo says:

      @willin 我是来帮你宣传的 :mrgreen:

  9. Dianso says:

    你还是用的1.2.6版本的jquery啊,我用1.4.2一直搞不定ajax评论。。

    1. zwwooooo says:

      @Dianso 这些小功能不需要高版本的jQ

  10. 阿邙 says:

    先记下啦,总会有用到的时候 呵呵。

  11. 疾风 says:

    能不能自动给页面内所有的锚点链接加上这个功能呢?

    1. 万戈 says:

      @疾风 同问~

    2. zwwooooo says:

      @疾风 应该可以吧,具体没试过

    3. 疾风 says:

      @疾风 还有一点,如果“滚来滚去”图片在第一屏的时候如果不现实就更好了~

  12. luoyexia says:

    作为一个O迷,你这不是成心让我以后看不到人家博客的BUG了嘛…

    1. zwwooooo says:

      @luoyexia 作为O迷,你不希望别人的网站在你的O下正常显示么?如果是这样的话,不如去用IE6——非常多不正常 :mrgreen:

  13. 老七 says:

    五一节玩的开心哈。留完言我也要出发了。

    1. zwwooooo says:

      @老七 我五一没节目……

  14. hzlzh says:

    这个完美的 要用,下次换主题把我首页的那个换下

  15. 林木木 says:

    恩,这个补丁是非常好用!

  16. ooaixt says:

    来学习的~~~~

  17. 砼砼 says:

    很不错啊~

  18. 苏扬 says:

    再次路过 哈哈 我要开WP博了,倒是后ZWOO给我弄两皮肤玩玩哦,吼吼

    1. zwwooooo says:

      @苏扬 你会做PJ皮肤,WP应该很快上手啊,哈

  19. Vicia says:

    这个好呀,不知道shun是不是又要开始捣鼓他的主题了。 :mrgreen:

  20. Kars says:

    用在自家博客上鸟~~

    1. zwwooooo says:

      @Kars 不错吧 :cool:

    2. Kars says:

      @zwwooooo 原来还不知道,代码可以这么简洁、、、

    3. zwwooooo says:

      @Kars jQ效果的功能代码一般都不大,主要是jQ库比较大点

发表评论

昵称 *

网址

B em del U Link Code Quote