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

触屏事件

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

触摸事件对象(TouchEvent )

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

移动端拖动元素

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

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

拖动元素三步曲:

  1. 触摸元素touchstart:获取手指初始坐标,同时获得盒子原来的位置
  2. 移动手指touchmove :计算手指的滑动距离,并且移动盒子
  3. 离开手指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规范提出了相关解决方案。
本地存储特性

  1. 数据存储在用户浏览器中
  2. 设置、读取方便、甚至页面刷新不丢失数据
  3. 容量较大,sessionStorage 约5M、localStorage 约20M
  4. 只能存储字符串,可以将对象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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值