都说一个问题不想永远重复的回答下去的最好办法是写在博客里。
那我就遵从下呗
其实这个仿QQ右下角的广告框没什么特色。不过还是说说实现原理吧。
如果你是个新手,那么请顺序看下去,如果你是个熟练的js使用者,那么仅仅看加重段就可以了。高手嘛。。。是不会来的。
1、定位使用了fixed定位,但是弱点是ie6下不支持这个定位,所以需要采取一些hack手段。这里使用了比较流行的IE6下绝对定位取代fixed定位的方法。通过window.XMLHttpRequest来判断是否是IE6(因为IE下没有这个对象嘛)。
2、在滚动条移动的时候用到了reflow的技巧。该技巧网络上使用的人众多,但是推广的不够,所以我也就传下道咯 。具体的方法有:
dom.className=dom.className 其实方法很多,这只是其中一个,有兴趣的可以去 google下。
3、动画方面我借用了arguments属性调整的一个方法,该方法是是参考Andrew Tetlaw 的arguments arugments:a javascript oddity 一文的 。具体的原理是通过arguments.callee属性来调用传入函数的。以达到重复执行某一函数的作用。但不知道大家看到没有,这个方法重复多少次都是没问题的,问题在于setTimeout上面。如果你希望间隔要求的话这种方法并不合适,当然可以通过变形的方式来做到。这里我对此要求不高。另外一个关于arguments的常用应用是格式化字符串。 具体的方法如下
当你调用format("Hello %1,Welcome to %2 world","Jee","JavaScript")的话,自动返回了你想要的格式化字符串了。 不错吧,再次推荐看下上面那篇文章,如果觉得英文的看的费劲,这里有中文的译本,来自明城的译作
4、这个里面还有一个值得大家注意的问题,如果你把doctype去掉,那么在IE7、ie8下将无法得到你要的效果,因为他会默认为怪异模式显示。 所以请大家以后写html的时候务必加上doctype。
PS:最近一直在试着封装一些效果。但如果完全剥离css效率太低,不剥离的话需要至少2个文件。头疼的很,不知道大家有什么好的办法解决的没有~~另外我不想把多个功能的css或js写到一个文件里,你们明白的,实际应用中这样做并不好