热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

分享一个利用H5实现下拉顶部放大的实例代码-

本文只提供设计思路,即js代码.完整代码,请下载demo设计思路:1.监听整个下拉区域的touchstart事件,并记录下pageY和clientY值2.监听整个区域的touchmove事件,并判断是上移还是下移,以及滚动开始时,clientY和pageY是否相等,最后实现动画3.当滑动停止的时候,头部视图变为原来的,图片恢复原样
height="484"/>

仿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(&#39;headers&#39;);
    //图片底部的容器高度+拖动的高度
    header.style.height = 300  + touchs.pageY - startY +&#39;px&#39;;
    //图片放大比例 
    var scale = (touchs.pageY - startY ) / 300 + 1.0;
    //图片放大
    imag.style.transform = "scale("+ scale +","+ scale +")";

});

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

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

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

});


推荐阅读
  • Django 学习笔记(三)
    在模板文件中,还能嵌套入模板标签,做一些特殊处理,例如流程控制,下面将简单介绍下模板标签,主要介绍if和for ... [详细]
  • Hashtable和HashMap之间的区别Hashtable是继承了Dictionary,是线程安全的。HashMap实现了Map接口,不是线程安全的 ... [详细]
  • netty中的UDP
     UDP提供了向多个接收者发送消息的额外传输模式:多播——传输到一个预定义的主机组;广播——传输到网络(或者子网)上的所有主机。本示例应用程序将通过发送能够被同一个网络中的所有主机 ... [详细]
  • 58SpringAOP异步操作
    目录SpringAOP异步操作实现异步场景分析Spring业务的异步实现启动异步配置Spring中@Async注解应用spring框架连接池简易配置ThreadPoolExecut ... [详细]
  • 无论你是刚毕业的大学生,还是想在职业中寻求进步的经验丰富的IT专家,这些提示都可以帮你成为DevOps工程师。DevOps工程是一个备受称赞的热门职业。不管你是刚毕业正在找第一份工 ... [详细]
  •    DHTML小脚本容器对象参考手册,包含DHTML小脚本(Scriptlet)基准文档。在这里可以了解如下内容:1、窗口对象扩展:这些扩展内容是在编写小脚本时可以使用的属性与方 ... [详细]
  • web项目启动流程
    web项目启动经过如下步骤。1.项目启动,加载依赖的jar包。2.web容器(tomcat)先提供一个全局上下文ServletCont ... [详细]
  • 11月24日-26日,由ACMSIGOPSChinaSys主办的第十三届ChinaSys会议在清华三亚国际数学论坛举行。在24日上午的报告环节,阿里巴巴 ... [详细]
  • spring,三大, ... [详细]
  • 今天我看了一点看起来比较片面的东西,java常用基本床架,并且在网上搜了相关的知识和概括总结,用来继续后期的学习:1.struts2框架,这是最经典的框架(可以说没有“之一”)。可 ... [详细]
  • 标准库Vector类型使用需要的头文件:#includeVector:Vector是一个类模板。不是一种数据类型。Vector ... [详细]
  • react组件的分类大全,以及受控组件和非受控组件
    组件的分类方式有哪些?1.分是否有状态:有状态组件,无状态组件2.按定义方式不同:函数组件(构造函数组件),类组件(class组件)3.按默认是否受state控制:受控组件,非受控 ... [详细]
  • Spring Boot 永远滴神!10分钟快速入门
    为什么是SpringBoot因为目前开发WEB应用,SpringBoot是启动Spring项目最快最流行的方式了。无论我们要构建一个什么样的应用,它都可 ... [详细]
  • CSTL中用vector改进内存的再分配作者:winter本文说明了vector容器使用时应该注意的内存分配问题,原理说的比较详细,对于初 ... [详细]
  • 准备官方Docker安装方法https:docs.docker.cominstalllinuxdocker-eeubuntu假设已安装docker和docker-compos ... [详细]
author-avatar
mobiledu2502856483
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有