解决vue 界面在苹果手机上滑动点击事件等卡顿问题


Posted in Javascript onNovember 27, 2018

用vue编写项目接近尾声,需要集成到移动端中,在webstorm上界面,运行效果都很完美,但是在苹果手机上各种问题都出现了,原生项目一向滑动流畅,事件响应迅速,可是苹果手机打开这个项目有两个问题,

(1).滑动页面卡顿,

(2).点击事件响应缓慢,百度才发现在苹果手机上有300ms的延迟。

一.滑动页面卡顿

//页面布局
<template>
 <div class='content'>
  页面内容
 </div>
</template>

在对应的组件的最外层div上加上这样的样式:

.content{
  -webkit-overflow-scrolling: touch;
  }

-webkit-overflow-scrolling: touch;这句代码最好可在公共的样式中添加,防止很多页面都需要写的麻烦。这句代码虽然可以解决滑动不流畅的问题,但是可能会引起几个小问题:

(1).在滑动界面之中使用的position:fixed 无法固定下来,会随着界面进行一起滚动

解决方法:将使用的position:fixed(头部导航)写在滑动部位外部,在使用绝对定位进行布局,以此解决问题

(2).vue中使用v-if导致的界面第一次无法滑动

解决方法:将v-if改成v-show进行展示,解决界面进入之后不能滑动的问题

二.点击事件响应缓慢

(1).安装fastclick (npm install fastclick -S)

(2).在main.js中设置方法

import FastClick from 'fastclick'
FastClick.attach(document.body);

在引入fastclick之后,虽然页面事件快了很多,但是会有一个副作用:input输入框需要连续点击两次或者长按才能获取焦点,真是到处是坑啊!

解决方法:在main.js中添加下面的代码

FastClick.prototype.focus = function(targetElement) {
 var length;
// Issue #160: on iOS 7, some input elements (e.g. date datetime month) throw a vague TypeError on setSelectionRange. These elements don't have an integer value for the selectionStart and selectionEnd properties, but unfortunately that can't be used for detection because accessing the properties also throws a TypeError. Just check the type instead. Filed as Apple bug #15122724.
 if (deviceIsIOS&& targetElement.setSelectionRange && targetElement.type.indexOf('date') !== 0 && targetElement.type !== 'time' && targetElement.type !== 'month') {
  length = targetElement.value.length;
  targetElement.focus();
  targetElement.setSelectionRange(length, length);
 } else {
  targetElement.focus();
}
};

总结

以上所述是小编给大家介绍的解决vue 界面在苹果手机上滑动点击事件等卡顿问题,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
JS 容错处理代码, 屏蔽错误信息
Mar 09 Javascript
兼容IE与firefox火狐的回车事件(js与jquery)
Oct 20 Javascript
基于jquery的无刷新分页技术
Jun 11 Javascript
基于jQuery实现复选框的全选 全不选 反选功能
Nov 24 Javascript
JavaScript函数详解
Feb 27 Javascript
jquery模拟进度条实现方法
Aug 03 Javascript
js实现二级菜单渐隐显示
Nov 03 Javascript
javascript中Date对象应用之简易日历实现
Jul 12 Javascript
jQuery Validate验证框架详解(推荐)
Dec 17 Javascript
使用jquery Ajax实现上传附件功能
Oct 23 jQuery
Nuxt.js开启SSR渲染的教程详解
Nov 30 Javascript
javascript实现弹幕墙效果
Nov 28 Javascript
Node+OCR实现图像文字识别功能
Nov 26 #Javascript
图片文字识别(OCR)插件Ocrad.js教程
Nov 26 #Javascript
JS 验证码功能的三种实现方式
Nov 26 #Javascript
trackingjs+websocket+百度人脸识别API实现人脸签到
Nov 26 #Javascript
tracking.js页面人脸识别插件使用方法
Apr 16 #Javascript
详解Node.js 中使用 ECDSA 签名遇到的坑
Nov 26 #Javascript
Vue.js的动态组件模板的实现
Nov 26 #Javascript
You might like
dedecms 制作模板中使用的全局标记图文教程
2007/03/11 PHP
php结合js实现点击超链接执行删除确认操作
2014/10/31 PHP
thinkphp3.2点击刷新生成验证码
2016/02/16 PHP
浅谈php和js中json的编码和解码
2016/10/24 PHP
php实现支持中文的文件下载功能示例
2017/08/30 PHP
Seajs是什么及sea.js 由来,特点以及优势
2016/10/13 Javascript
Vue.js第一天学习笔记(数据的双向绑定、常用指令)
2016/12/01 Javascript
HTML5 js实现拖拉上传文件功能
2020/11/20 Javascript
JavaScript实现二叉树的先序、中序及后序遍历方法详解
2017/10/26 Javascript
vue中实现移动端的scroll滚动方法
2018/03/03 Javascript
Vue 中使用vue2-highcharts实现曲线数据展示的方法
2018/03/05 Javascript
vue中关闭eslint的方法分析
2018/08/04 Javascript
详解vue如何使用rules对表单字段进行校验
2018/10/17 Javascript
使用nvm和nrm优化node.js工作流的方法
2019/01/17 Javascript
彻底搞懂并解决vue-cli4中图片显示的问题实现
2020/08/31 Javascript
vue打开新窗口并实现传参的图文实例
2021/03/04 Vue.js
用python结合jieba和wordcloud实现词云效果
2017/09/05 Python
Python基于datetime或time模块分别获取当前时间戳的方法实例
2019/02/19 Python
python爬虫中多线程的使用详解
2019/09/23 Python
python 五子棋如何获得鼠标点击坐标
2019/11/04 Python
Spring Boot中使用IntelliJ IDEA插件EasyCode一键生成代码详细方法
2020/03/20 Python
Python实现简单的猜单词小游戏
2020/10/28 Python
Numpy中的数组搜索中np.where方法详细介绍
2021/01/08 Python
深入浅析HTML5中的SVG
2015/11/27 HTML / CSS
爱尔兰家电数码商城:Currys PC World爱尔兰
2016/07/23 全球购物
Bravofly德国:预订廉价航班和酒店
2019/09/22 全球购物
KEEN美国官网:美国人气户外休闲鞋品牌
2021/03/09 全球购物
什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?
2016/08/13 面试题
英语教师岗位职责
2014/03/16 职场文书
就业协议书怎么填
2014/04/11 职场文书
交通事故协议书
2014/04/15 职场文书
创先争优标语
2014/06/27 职场文书
公务员处分决定书
2015/06/25 职场文书
一年之计:2019年下半年的计划
2019/05/07 职场文书
SQLServer之常用函数总结详解
2021/08/30 SQL Server
如何通过简单的代码描述Angular父组件、子组件传值
2022/04/07 Javascript