看了下Google Map和百度地图,放大缩小都不算是很平滑,如果说每次触发scroll事件然后改变大小的话,这样的效果貌似也不是很好,并且,在MAC下,滚动会有一个惯性,scroll事件在滚动结束后是慢慢停止,而非一下子就停止了,所以用CSS3也不是很好解决,各位有什么好办法没有,多谢了哈。

解决方案 »

  1.   

    在scroll事件里用settimeout(function(),0)的方式启动一个动画。根据鼠标滚动的方向计算放大还是缩小。如果这个动画已经执行则忽略这次scroll事件。动画执行时间控制在0.3秒以内,能感受到渐进渐出的效果就行,不要搞的太慢。
      

  2.   

    惯性的计算会比较麻烦一点。在鼠标拖拽事件中记录最后两次事件被触发时的坐标。当鼠标抬起时,已最后两个坐标的差值作为因子,执行一个0.2秒左右的动画,减速停止下来就行了。在我发布的datatable中有这个功能,把鼠标拖拽属性设置成true就可以了。有兴趣可以参考一下。