解决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 相关文章推荐
JavaScript具有类似Lambda表达式编程能力的代码(改进版)
Sep 14 Javascript
浅析js中的浮点型运算问题
Jan 06 Javascript
jquery easyui 结合jsp简单展现table数据示例
Apr 18 Javascript
javascript几个易错点记录
Nov 26 Javascript
JavaScript实现动态添加,删除行的方法实例详解
Jul 02 Javascript
Js获取图片原始宽高的实现代码
May 17 Javascript
jQuery实现下拉框多选 jquery-multiselect 的实例代码
Jul 14 Javascript
小程序二次贝塞尔曲线实现购物车商品曲线飞入效果
Jan 07 Javascript
Vue防止白屏添加首屏动画的实例
Oct 31 Javascript
Vue filter 过滤器、以及在table中的使用介绍
Sep 07 Javascript
微信小程序自定义modal弹窗组件的方法详解
Dec 20 Javascript
浅谈 JavaScript 沙箱Sandbox
Nov 02 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
使用sockets:从新闻组中获取文章(一)
2006/10/09 PHP
PHP获取当前文件所在目录 getcwd()函数
2009/05/13 PHP
PHP CURL CURLOPT参数说明(curl_setopt)
2013/09/30 PHP
PHP chop()函数讲解
2019/02/11 PHP
PHP根据key删除数组中指定的元素
2019/02/28 PHP
如何将网页表格内容导入excel
2014/02/18 Javascript
解决ueditor jquery javascript 取值问题
2014/12/30 Javascript
jquery中的工具使用方法$.isFunction, $.isArray(), $.isWindow()
2015/08/09 Javascript
nodejs的压缩文件模块archiver用法示例
2017/01/18 NodeJs
React-Native实现ListView组件之上拉刷新实例(iOS和Android通用)
2017/07/11 Javascript
vue2.0的虚拟DOM渲染思路分析
2018/08/09 Javascript
vue+vue-router转场动画的实例代码
2018/09/01 Javascript
React 实现拖拽功能的示例代码
2019/01/06 Javascript
如何优雅的在一台vps(云主机)上面部署vue+mongodb+express项目
2019/01/20 Javascript
Vue请求java服务端并返回数据代码实例
2019/11/28 Javascript
[49:41]NB vs NAVI Supermajor小组赛A组 BO3 第一场 6.2
2018/06/03 DOTA
解决python3爬虫无法显示中文的问题
2018/04/12 Python
python3+dlib实现人脸识别和情绪分析
2018/04/21 Python
Python中的枚举类型示例介绍
2019/01/09 Python
Django之form组件自动校验数据实现
2020/01/14 Python
Python基于yield遍历多个可迭代对象
2020/03/12 Python
python随机模块random的22种函数(小结)
2020/05/15 Python
Python操作dict时避免出现KeyError的几种解决方法
2020/09/20 Python
Python模拟登录和登录跳转的参考示例
2020/10/30 Python
html5 制作地图当前定位箭头的方法示例
2020/01/10 HTML / CSS
Bally澳大利亚官网:瑞士奢侈品牌
2018/11/01 全球购物
Java面试题汇总
2015/12/06 面试题
学生励志演讲稿
2014/01/06 职场文书
军训自我鉴定100字
2014/02/13 职场文书
新春寄语大全
2014/04/09 职场文书
材料员岗位职责
2015/02/10 职场文书
获奖感言范文
2015/07/31 职场文书
《金钱的魔力》教学反思
2016/02/20 职场文书
七年级作文之游记
2019/12/11 职场文书
python编写五子棋游戏
2021/05/25 Python
MySQL单表千万级数据处理的思路分享
2021/06/05 MySQL