没有合适的资源?快使用搜索试试~ 我知道了~
首页自定义wap手机图片滑动切换:无CSS3与难题解决方案
自定义wap手机图片滑动切换:无CSS3与难题解决方案
0 下载量 152 浏览量
更新于2024-08-30
收藏 84KB PDF 举报
本文主要探讨了在wap手机上实现无css3元素的图片滑动切换特效的js脚本编写过程中遇到的问题及其解决方案。首先,作者注意到许多现成的例子通常依赖于外部组件,导致代码复杂难以管理,而且在css3不被支持的设备上无法正常工作。因此,作者决定自定义实现,但过程中遇到了两个关键挑战。 问题一:给图片添加链接后,拖动时页面跳转。在触屏设备上,事件流程通常遵循touchstart、touchmove、touchend、click的顺序。由于click事件会在touch系列事件处理结束后触发,如果在处理过程中没有正确判断是拖动而非点击,图片拖动会误触发页面跳转。为了解决这个问题,作者建议记录touchstart和touchmove时的坐标,通过比较它们来判断是否发生移动。同时,需要注意的是touchend事件可能无法获取触点坐标,这可能与设备特性有关。为防止意外跳转,需在touchstart阶段使用event.preventDefault()取消默认行为。 问题二:在拖动图片时,网页的上下滚动条无法跟随。这是因为在移动过程中取消了默认事件,导致滚动功能失效。为解决滚动问题,需要在移动触点时判断触点位置是否发生了变化,如果确实有移动,则应恢复滚动功能。具体做法是在touchmove或mousemove事件中,检查当前触点的位置与初始位置是否一致,如果不一致则允许滚动,否则保持默认行为。 实现wap手机图片滑动切换特效的js脚本编写不仅需要理解基本的触摸事件流,还要注意事件处理的细节,如取消默认行为和处理触点位置的变化。通过解决这些问题,开发者能够创建出更流畅且兼容性更好的移动端图片切换效果。
资源详情
资源推荐
wap手机图片滑动切换特效无手机图片滑动切换特效无css3元素元素js脚本编写脚本编写
手机图片滑动切换,网上有很多这样的例子,但都借助于其他组件,让代码混乱的不行;还有就是用到css3里的 transform:
translate(x,y);移动元素,不过发现在不支持css3的设备上马上完蛋了,所 有下定决心自己做一个,谁知出现了很多的问题,
其中最重要的是给图片加链接,网页中的上下滚动条不能在拖动图片的时候滚动,并且不能兼容pc机器上的拖动;在这里就
简单介绍一下遇到的问题和解决的方法;
问题一:给图片加上链接后,在拖动的时候总是跳到其他页面;
问题根源主要是不能判断是点击还是拖动,手机事件一般顺序是
touchstart-》mousedown-》mousemove-》touchmove-》mouseup-》touchend-》click,根据不同手机可能会有不同。触屏
手机的事件一般都用 touchstart -》 touchmove -》 touchend -》 click,click事件是最后执行的,当我们有
touchstart,touchmove,touchend处理完后,如果不进行return或取消默认就会触发click事件,这样网页就跳走了,解决办法
是记录touchstart的坐标点和touchmove的坐标点,根据两个坐标点算出触点是否移动过,其中值得关注的是事件的Event参
数,触屏一般是 event.touches,event.targetTouches,event.changedTouches。我在测试当中发现者三个参数的值时一样
的,不过值得注意的是touchend事件不会得到触点坐标(也或许是设备问题),在移动的时候touchmove会不断出发,有时候
touchmove会不触发,其中就是浏览器自带一下功能把触点(或鼠标)脱离了选中的元素,比如上时间按住会出现菜单,(pc
上图片就会生成一个可以拖动的缩略图),这样就要在touchstart(mousedown)的时候先 event.preventDefault();取消默
认。
问题二:网页中的上下滚动条不能在拖动图片的时候滚动;
相信这个问题只要制作过得都会遇到,其实主要是在移动(touchmove,mousemove)的时候取消了默认事件
event.preventDefault(),在这里我们需要做的是,是否移动获得触点和开始的触点是否一致,如果一致就直接返回,还要算出
是移动的x轴多一点还是y轴移动的多一点,这样我们就可以做左右滑动的时候取消默认,在上学的时候不取消;
问题三: 并且不能兼容pc机器上的拖动
这是因为在绑定事件的时候不能完全考虑事件名称是touchstart还是mousedown ,从网上搜了一下,感觉做的不做,就直接抄
过来了
this.eventName={
touchstart:'touchstart',
touchmove:'touchmove',
touchend:'touchend',
}
在做判断
if(!device){
this.eventName.touchstart='mousedown';
this.eventName.touchmove='mousemove';
this.eventName.touchend='mouseup';
}
dom.addEventListener(this.eventName.touchstart,handleEvent,false);
大概是这个意思,根据设备不同绑定不同的事件
其实还碰到了很多的问题,就不一一说明了
不多说了,直接把代码贴出来了,如果有什么不太好的地方,还请多多包含和提出意见
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" name="viewport" />
<meta content="yes" name="apple-mobile-web-app-capable" />
<meta content="black" name="apple-mobile-web-app-status-bar-style" />
<meta content="telephone=no" name="format-detection" />
<title></title>
<style type="text/css">
html,body,*{ margin: 0; padding: 0; border: 0;}
#wapListImage1, #wapListImage{width: 100%; overflow: hidden; height: auto; cursor: move; zoom:1; position: relative;}
#wapListImage1 ul,
#wapListImage1 ul li,
#wapListImage1 ul,
#wapListImage ul li{ list-style: none;}
#wapListImage1 ul, #wapListImage ul{width: 99999px;}
下载后可阅读完整内容,剩余9页未读,立即下载
weixin_38730977
- 粉丝: 5
- 资源: 874
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++多态实现机制详解:虚函数与早期绑定
- Java多线程与异常处理详解
- 校园导游系统:无向图实现最短路径探索
- SQL2005彻底删除指南:避免重装失败
- GTD时间管理法:提升效率与组织生活的关键
- Python进制转换全攻略:从10进制到16进制
- 商丘物流业区位优势探究:发展战略与机遇
- C语言实训:简单计算器程序设计
- Oracle SQL命令大全:用户管理、权限操作与查询
- Struts2配置详解与示例
- C#编程规范与最佳实践
- C语言面试常见问题解析
- 超声波测距技术详解:电路与程序设计
- 反激开关电源设计:UC3844与TL431优化稳压
- Cisco路由器配置全攻略
- SQLServer 2005 CTE递归教程:创建员工层级结构
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功