保安日记:JavaScript学习第十四篇之移动端特效触屏事件

it2025-02-28  23

触屏事件

移动端浏览器兼容性较好,我们不需要考虑以前S的兼容性问题,可以放心的使用原生JS书写效果,但是移动端也有自己独特的地方。比如触屏事件touch(也称触摸事件),Android和IOS都有。 ==touch对象代表一个触摸点。==触摸点可能是一根手指,也可能是一根触摸笔。触屏事件可响应用户手指(或触控笔)对屏幕或者触控板操作。 常见的触屏事件如下:

触摸事件对象(TouchEvent )

TouchEvent是一类描述手指在触摸平面(触摸屏、触摸板等)的状态变化的事件。这类事件用于描述一个或多个触点,使开发者可以检测触点的移动,触点的增加和减少,等等。touchstart、touchmove、touchend三个事件都会各自有事件对象。 触摸事件对象重点我们看三个常见对象列表: 如果侦听的是一个DOM元素,touches和 targetTouches是一样的 一般都是给元素注册触摸事件,因此 targetTouches 是最常用的

移动端拖动元素

touchstart、touchmove、touchend可以实现拖动元素

但是拖动元素需要当前手指的坐标值我们可以使用targetTouches[0]里面的pageX和pageY移动端拖动的原理:手指移动中,计算出手指移动的距离。然后用盒子原来的位置+手指移动的距离手指移动的距离︰手指滑动中的位置减去手指刚开始触摸的位置

拖动元素三步曲:

触摸元素touchstart:获取手指初始坐标,同时获得盒子原来的位置移动手指touchmove :计算手指的滑动距离,并且移动盒子离开手指touchend: 注意︰手指移动也会触发滚动屏幕所以这里要阻止默认的屏幕滚动e.preventDefault();

classList 属性 classList属性是HTML5新增的一个属性,返回元素的类名。但是ie10以上版本支持。该属性用于在元素中添加,移除及切换CSS类。 切换类∶ element.classList.toggle(’类名’) ;

<script> // classList 返回元素的类名 var div = document.querySelector('div'); // console.log(div.classList[1]); // 1. 添加类名 是在后面追加类名不会覆盖以前的类名 注意前面不需要加. div.classList.add('three'); // 2. 删除类名 div.classList.remove('one'); // 3. 切换类 var btn = document.querySelector('button'); btn.addEventListener('click', function() { document.body.classList.toggle('bg'); }) </script>

插件

JS插件是js文件,它遵循一定规范编写,方便程序展示效果,拥有特定功能且方便调用。如轮播图和瀑布流插件。 特点∶它一般是为了解决某个问题而专门存在,其功能单一,并且比较小。

fastclick 插件

fastclick插件解决300ms延迟。使用延时 GitHub官网地址:https://github.com/ftlabs/fastclick

<script src="fastclick.js"></script> </head> <body> <div></div> <script> if ('addEventListener' in document) { document.addEventListener('DOMContentLoaded', function() { FastClick.attach(document.body); }, false); } var div = document.querySelector('div'); div.addEventListener('click', function() { alert(11); }) </script> </body>

Swiper 插件

可以快速开发移动端轮播图 使用教程:https://www.swiper.com.cn/usage/index.html

SuperSlide插件

网站上常用的“焦点图/幻灯片”“Tab标签切换”“图片滚动”“无缝滚动”等只需要一个SuperSlide即可解决! superslide : http://www.superslide2.com/

iscroll 插件

iscroll : https://github.com/cubiq/iscroll http://caibaojian.com/iscroll-5/versions.html

本地存储

随着互联网的快速发展,基于网页的应用越来越普遍,同时也变的越来越复杂,为了满足各种各样的需求,会经常性在本地存储大量的数据,HTMIL5规范提出了相关解决方案。 本地存储特性

数据存储在用户浏览器中设置、读取方便、甚至页面刷新不丢失数据容量较大,sessionStorage 约5M、localStorage 约20M只能存储字符串,可以将对象JSON.stringify()编码后存储

window.sessionStorage 1.生命周期为关闭浏览器窗口 2.在同一个窗口(页面)下数据可以共享 3.以键值对的形式存储使用

存储数据∶ sessionStorage.setltem(key, value) 获取数据∶ sessionStorage.getltem(key) 删除数据∶ sessionStorage.removeltem(key) 删除所有数据∶ sessionStorage.clear() <body> <input type="text"> <button class="set">存储数据</button> <button class="get">获取数据</button> <button class="remove">删除数据</button> <button class="del">清空所有数据</button> <script> console.log(localStorage.getItem('username')); var ipt = document.querySelector('input'); var set = document.querySelector('.set'); var get = document.querySelector('.get'); var remove = document.querySelector('.remove'); var del = document.querySelector('.del'); set.addEventListener('click', function() { // 当我们点击了之后,就可以把表单里面的值存储起来 var val = ipt.value; sessionStorage.setItem('uname', val); sessionStorage.setItem('pwd', val); }); get.addEventListener('click', function() { // 当我们点击了之后,就可以把表单里面的值获取过来 console.log(sessionStorage.getItem('uname')); }); remove.addEventListener('click', function() { // sessionStorage.removeItem('uname'); }); del.addEventListener('click', function() { // 当我们点击了之后,清除所有的 sessionStorage.clear(); }); </script> </body>

window.localStorage 1.生命周期永久生效,除非手动删除 否则关闭页面也会存在 2.可以多窗口(页面)共享(同一浏览器可以共享) 3.以键值对形式存储使用

存储数据∶ localStorage.setltem(key, value) 获取数据∶ localStorage.getltem(key) 删除数据∶ localStorage.removeltem(key) 删除所有数据∶ localStorage.clear()
最新回复(0)