求个指导,想知道移动设备上面怎么实现元素在滑动时出现的效果?

2013-07-23 12:26:33 +08:00
 scarlex
一个很常见的效果,页面内有一个元素,通常都是fixed在顶部的。
然后向上滑动时那个元素会自动向上消失,向下滑动的时候元素会出现。
不是滑动完才出现的,是滑动过程中随着滑动距离出现的。。

如果你手上有安卓设备,就用自带的搜索搜点东西,然后向上/向下滑动一下屏幕,就会看到顶部的搜索栏是这种效果的。
如果是手上有ios设备,就打开chrome,随便打开个网页,向上/向下滑动,就会看到窗体顶部也是这种效果的。

有人知道这种效果是怎么实现的吗?
3393 次点击
所在节点    JavaScript
5 条回复
emric
2013-08-02 05:03:36 +08:00
http://gist.github.com/fcbb946c6d9aa8624771
>n< 忘记加注释了!
"就是利用滚动事件对比上一次滚动位置."
scarlex
2013-08-02 21:54:11 +08:00
@emric 我试过不断通过element.css('top', value + 'px')的方法来不断改变位置,不过各个手机浏览器表现起来都不一样。效果很不好。
不知道你这种方法表现起来怎么样?
emric
2013-08-03 12:22:49 +08:00
@scarlex
>///< 好吧,我只做了一半..
var mh = 0; // menu height
var st = $(this).scrollTop();
element.css({position : absolute, top : st - mh});
:P 这样拉下来就是这个效果了
slixurd
2013-08-03 15:48:29 +08:00
小心UC把CSS吃掉。
scarlex
2013-08-03 16:04:21 +08:00
@emric
PC端怎么做都没问题,因为PC的性能很高。
但到了性能相对较差的移动设备,实现起来很麻烦,各个手机浏览器的兼容性有差异。

另外那个效果不仅仅是随着浏览器滚动而出现/消失这么简单,还有是当你放手(触摸结束)的时候会自动判断是出现还是消失。

我在实现这个效果的时候还遇到一个问题,是chrome for android的一个bug。这个bug表现起来就是当触发touchmove事件之后,它就不会触发touchend事件。

具体可以看下这里
https://code.google.com/p/chromium/issues/detail?id=152913

最后我得出的结论是....要这个效果表现好点的话就直接做成app吧///

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/76694

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX