作者:随之爱_629 | 来源:互联网 | 2022-10-13 12:59
手机图片滑动切换,网上有很多这样的例子,但都借助于其他组件,让代码混乱的不行;还有就是用到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 ,从网上搜了一下,感觉做的不做,就直接抄过来了
推荐阅读
-
Isthereanywaytostylethislistusingpurecsssoallelementsabovemycursorwillbehighlight ...
[详细]
蜡笔小新 2023-10-12 12:00:48
-
一款清新的jQuery日历插件带日期的Tooltip提示543人浏览发表回复这是一款非常简单清新的jQuery日历插件,它并没有特别的日期或者时间选择功能,仅仅是展示一个简单的日历控件。这款jQu ...
[详细]
蜡笔小新 2023-10-11 16:29:28
-
-
这篇文章将为大家详细讲解有关如何使用JavaScript动态设置CSS3属性值,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读 ...
[详细]
蜡笔小新 2023-10-11 05:24:06
-
Iamtryingtoachievethearrowpointingupwards..iamtryingtoachieveitinmycssiamnotabl ...
[详细]
蜡笔小新 2023-10-09 19:41:30
-
CSS:body{font-size:62.5%;}为什么???在网页设计中我们经常看见body{font-size:62.5%;}这样的设置,为什么偏偏是62.5%呢?这主要是为了方便em与p ...
[详细]
蜡笔小新 2023-09-25 20:24:32
-
本文小编为大家详细介绍“前端实用的CSS3技巧有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“前端实用的CSS3技巧有哪些”文章能帮助大家 ...
[详细]
蜡笔小新 2023-09-25 13:50:50
-
1.CSS3透明度渐变(从左到右)#grad{background:-webkit-linear-gradient(left,rgba(198,226,255,1),rgba(19 ...
[详细]
蜡笔小新 2023-09-17 20:26:32
-
1、给边框加上圆角及阴影,如下代码:<!DOCTYPEhtmlPUBLIC"-W3CDTDHTML4.01TransitionalEN"" ...
[详细]
蜡笔小新 2023-09-17 19:38:46
-
vue组件支持预处理语言的关键点:<stylerelstylesheetscss>.mint-swipe{hei ...
[详细]
蜡笔小新 2023-09-17 15:50:09
-
http:js.alixixi.coma2014021292298.shtmlhttp:w3cshare.comexample?pid134http:w3cshare.comc ...
[详细]
蜡笔小新 2023-09-17 13:26:50
-
iamtryingtomakeanavigationmenuinsidea200pxx200pxsquare,thisnavigationlist(UL)chang ...
[详细]
蜡笔小新 2023-09-16 19:05:52
-
很有意思的全景动画:(直接上代码)html部分:<div><div>css部分:.panorama{width:300px;hei ...
[详细]
蜡笔小新 2023-09-16 12:37:52
-
小编给大家分享一下CSS3如何实现loading预加载动画特效,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章 ...
[详细]
蜡笔小新 2023-09-16 12:05:33
-
这篇文章主要为大家展示了“html5+css3网站菜单的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习 ...
[详细]
蜡笔小新 2023-09-16 11:05:47
-
CSS3filter(滤镜)属性-原文链接:CSS3filter(滤镜)属性效果预览这里仅展示黑白效果。filter:grayscale(100%);定义和使用filter 属性定 ...
[详细]
蜡笔小新 2023-09-15 20:40:41
-