很多博主都写过/转发过使用jQuery实现滚动(Scroll)效果的方法jquery滚动效果,但是目前发现的大多数方法在Opera中都有一个小bug:直接使用跳转导致屏幕闪烁。
明天超高颜值的资深Willin分享了完美解决jQuery在Opera下滚动效果bug的方法。 然后我调试+将其应用到我当前的主题。 目前测试很完美,特意贴出代码来说明。
由于我对js了解不多,而且jQuery也只是肤浅,所以无法解释原理,只能解释一下改变的方式。
演示:点击当前主题zOM顶部/文章页面标题下的“xcomments”“Leaveacomment”
假设:你的主题顶部的id是header,底部的“back to Bottom”的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;
});
就是这样jquery滚动效果,是不是很简单?有同学说了原理,学jQ
更多方法可前往威林的《滚动页面的几种方法》