H5 实现下拉顶部放大

仿app下拉放大.gif

本文只提供设计思路,即js代码.完整代码,请下载demo
设计思路:

1.监听整个下拉区域的touchstart事件,并记录下pageY和clientY值

content.addEventListener('touchstart',function (event) {
    var touch = event.touches[0];
    startY = touch.pageY;
    clientY = touch.clientY;    
});

2.监听整个区域的touchmove 事件,并判断是上移还是下移,以及滚动开始时,clientY和pageY是否相等,最后实现动画

content.addEventListener('touchmove',function  (event) {

    var touchs = event.touches[0];
      //向上滚动,直接返回
    if (touchs.pageY - startY <= 0 ) {
        return ;
    }
    //不相等,说明屏幕已经向上翻动,image不需要放大效果
    if(startY != clientY){
        return ;
    }

    var header = document.getElementById('headers');
    //图片底部的容器高度+拖动的高度
    header.style.height = 300  + touchs.pageY - startY +'px';
    //图片放大比例 
    var scale = (touchs.pageY - startY ) / 300 + 1.0;
    //图片放大
    imag.style.transform = "scale("+ scale +","+ scale +")";

});

3.当滑动停止的时候,头部视图变为原来的,图片恢复原样

content.addEventListener('touchend',function  (event) {
    event.preventDefault();
    var touch = event.changedTouches[0];    
    var header = document.getElementById('headers');

    header.style.height = 300 +'px';        
    imag.style.transform = "none";
    console.log("滑动结束");

});
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 以前听到前辈们说移动端尽量不要使用click,click会比较迟钝,能用touchstart还是用touchsta...
    极乐君阅读 703评论 0 2
  • 之前写过一篇浏览器事件的相关操作和事件运行的原理——JavaScript浏览器事件解析。这一篇主要写一些常用的事件...
    faremax阅读 1,663评论 0 0
  • 基于html5的移动web页面搭建技术总结 1.技术要点 1.1面向不同尺寸的手机屏幕,页面布局适配问题。 网页的...
    敲代码的张阅读 1,543评论 0 3
  • 大概是三月初,我在胖虎的时光密室逃脱见到了鸡排博士,遥姐在我身边轻声地告诉我:“那个就是张龙彪,很有意思的一个人。...
    彭慕西阅读 371评论 0 0
  • 夜色如悬崖 黑白琴键惶恐吞咽 所有自由的歌 都在一边极力欢呼 一边逃向死亡 你抚慰没有纹路的手掌 像默念封锁的冥咒...
    安遇琪阅读 237评论 0 0