触屏事件
移动端浏览器兼容性较好,我们不需要考虑以前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()