(记录自己学习资料和相关知识,如有侵权,可删除!)
1. 触屏事件
1.1 触屏事件概述
移动端浏览器兼容性较好,移动端有自己独特的地方,比如触屏事件 touchu(也称触摸事件), Android 和 IOS 都有。
touch 对象代表一个触摸点。触摸点可能是一根手指,也可能是一根触摸屏。触摸事件可响应用户手指(或触摸笔)对屏幕或者触控板操作。
常见的触屏事件如下:
touchustart : 手指触摸到一个 DOM 元素时触发
touchmove : 手指在一个 DOM 元素上滑动时触发
touchend : 手指从一个 DOM 元素上移开时触发
1.2 触摸事件对象(TouchEvent)
TouchEvent 是一类描述手指在触摸平面(触摸屏、触摸板等)的状态变化的事件。这类事件用于描述一个或多个触点,使开发者可以检测触点的移动,触点的增加和减少等等。
常见的触摸事件对象如下:
touches : 正在触摸屏幕的所有手指的一个列表
targetTouches(重点) : 正在触摸当前 DOM 元素上的手指的一个列表
changedTouches : 手指状态发生了改变的列表,从无到有,从有到无变化
2. 移动端常见特效
classList 属性
classList 属性是 HTML5 新增的一个属性,返回元素的类名。但是 ie 10 以上版本支持。
该属性用于在元素中添加,移除以及切换 CSS 类。
有如下方法:
① 添加类:(注意:追加类名,不会覆盖以前的类名,千前面不需要加 .)
element.classList.add(' 类名');
② 移除类:
element.classList.remove(' 类名');
③ 切换类:(有该类名则删除该类名,无该类名则添加该类名)
element.classList.toggle(' 类名');
click 延时解决方案
移动端 click 事件会有300ms延时,原因是移动端屏幕双击会缩放(double tap to zoom)页面。
解决方案:
① 禁止缩放。浏览器禁用默认的双击缩放行为并且去掉300ms的点击延迟。
<meta name = “viewport” content = "user-scalable = no"
② 利用touch事件自己封装这个事件解决300ms延迟(一次只能给一个元素解决这个问题)
原理:
.1 当我们手指触摸屏幕,记录当前触摸事件
.2 当我们手指离开屏幕,用离开的时间减去触摸的时间
.3 如果时间小于150ms,并且没有滑动过屏幕,那么我们就定义为点击
//封装tap,解决click 300ms 延时
function tap(obj, callback){
var isMove = false;
var startTime = 0; //记录触摸时候的时间变量
obj.addEventListener('touchstart',function(e){
startTime = Date.now(); //记录触摸时间
});
obj.addEventListener('touchmove',function(e){
isMove = true; // 看看是否有滑动,有滑动算拖拽,不算点击
});
obj.addEventListener('touchend',function(e){
if(!isMove && (Date.now() - startTime) < 150){ // 如果手指触摸和离开时间小于150ms 算点击
callback && callback(); //执行回调函数
}
isMove = false; // 取反 重置
startTime = 0;
});
}
// 调用
tap(div, function(){
// 执行代码
});
③ 使用插件。 fastclick 插件解决 300ms延迟。
3. 移动端常用开发插件
JS 插件是 js 文件,它遵循一定规范编写,方便程序展示效果,拥有特定功能且方便调用。如:轮播图和瀑布流插件。
特点:它一般是为了解决某个问题而专门存在,其功能单一,并且比较小。
fastclick 插件解决300ms延迟。
GitHub 官网地址:github.com/ftlabs/fast…
Swiper 插件的使用(移动端制作轮播图相关插件)
中文官网地址:www.swiper.com.cn/
- 引入插件相关文件
- 按照规定语法使用
插件的使用总结
- 确认插件实现的功能
- 去官网查看使用说明
- 下载插件
- 打开 demo 实例文件,查看需要引入的相关文件,并且引入
- 复制 demo 实例文件中的结构 html ,样式 css 以及 js 代码
4. 移动端常用开发框架
4.1 框架概述
框架,是一套架构,它会基于自身的特点向用户提供一套较为完整的解决方案。框架的控制权在框架本身,使用者要按照框架所规定的某种规范进行开发。
插件一般是为了解决某个问题而专门存在,其功能单一,并且比较小。
前端常用的框架有Bootstrap、Vue、Angular、React等。既能开发PC端,也能开发移动端。
前端常用的移动端插件有swiper、superslide、iscroll等。
框架:大而全,一整套解决方案。
插件:小而专一,某个功能的解决方案。
4.2 Bootstrap
Bootstrap 是一个简洁、直观、强悍的前端开发框架,它让 web 开发更迅速、简单。它能开发 PC 端,也能开发移动端。
Bootstrap JS 插件的使用步骤:
- 引入相关 js 文件
- 复制 HTML 结构
- 修改对应样式
- 修改相应 JS 参数
本地存储
本地存储特性
1、 数据存储在用户浏览器中
2、 设置、读取方便、页面刷新不丢失数据
3、 容量较大、 sessionStorage 约5M、 localStorage 约20M
4、 只能存储字符串,可以将对象JSON.stringify()编码后存储
window.sessionStorage
1、 生命周期为关闭浏览器窗口
2、 在同一个窗口(页面)下数据可以共享
3、 以键值对的形式存储使用
存储数据:
sessionStorage.setItem(key,value)
获取数据:
sessionStorage.getItem(key)
删除数据:
sessionStorage.removeItem(key)
删除所有数据:
sessionStorage.clear()
window.localStorage
1、 生命周期永久生效,除非手动删除 否则关闭页面也存在
2、 可以多窗口(页面)共享(同一浏览器可以共享)
3、 以键值对的形式存储使用
存储数据:
localStorage.setItem(key,value)
获取数据:
localStorage.getItem(key)
删除数据:
localStorage.removeItem(key)
删除所有数据:
localStorage.clear()