解决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 相关文章推荐
Jquery $.getJSON 在IE下的缓存问题解决方法
Oct 10 Javascript
director.js实现前端路由使用实例
Feb 03 Javascript
javascript数组去重的方法汇总
Apr 14 Javascript
浅谈JavaScript中的Math.atan()方法的使用
Jun 14 Javascript
JavaScript组件开发完整示例
Dec 15 Javascript
用JS中split方法实现彩色文字背景效果实例
Aug 24 Javascript
AngularJs Injecting Services Into Controllers详解
Sep 02 Javascript
JS中this上下文对象使用方式
Oct 09 Javascript
使用Bootstrap + Vue.js实现表格的动态展示、新增和删除功能
Nov 27 Javascript
深入浅析vue中cross-env的使用
Sep 12 Javascript
vue 手机物理监听键+退出提示代码
Sep 09 Javascript
JavaScript实现弹出窗口效果
Dec 09 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
php仿ZOL分页类代码
2008/10/02 PHP
PHP $_FILES函数详解
2011/03/09 PHP
php中XMLHttpRequest(Ajax)不能设置自定义的Referer的解决方法
2011/11/26 PHP
APACHE的AcceptPathInfo指令使用介绍
2013/01/18 PHP
jquery操作select option 的代码小结
2011/06/21 Javascript
js通过classname来获取元素的方法
2016/11/24 Javascript
jQuery无刷新上传之uploadify简单代码
2017/01/17 Javascript
分享一道关于闭包、bind和this的面试题
2017/02/20 Javascript
angularjs+bootstrap实现自定义分页的实例代码
2017/06/19 Javascript
vue-cli3.0+element-ui上传组件el-upload的使用
2018/12/03 Javascript
11个教程中不常被提及的JavaScript小技巧(推荐)
2019/04/17 Javascript
js canvas实现5张图片合成一张图片
2019/07/15 Javascript
Vue Router的手写实现方法实现
2020/03/02 Javascript
Webpack中SplitChunksPlugin 配置参数详解
2020/03/24 Javascript
vuex中store存储store.commit和store.dispatch的用法
2020/07/24 Javascript
python实现指定字符串补全空格的方法
2015/04/30 Python
浅谈flask中的before_request与after_request
2018/01/20 Python
python 使用socket传输图片视频等文件的实现方式
2019/08/07 Python
django实现后台显示媒体文件
2020/04/07 Python
使用css3制作登录表单的步骤
2014/04/07 HTML / CSS
韩国11街:11STREET
2018/03/27 全球购物
为娇小女性量身打造:Petite Studio
2018/11/01 全球购物
澳大利亚最便宜的网上药房:Chemist Warehouse
2020/01/30 全球购物
Linux面试题LINUX系统类
2014/11/19 面试题
党校培训思想汇报
2014/01/03 职场文书
编辑找工作求职信分享
2014/01/03 职场文书
英语道歉信范文
2014/01/09 职场文书
幼儿园消防安全制度
2014/01/26 职场文书
小学德育工作经验交流材料
2014/05/22 职场文书
美术第二课堂活动总结
2014/07/08 职场文书
2014年中班下学期工作总结
2014/12/11 职场文书
银行资信证明
2015/06/17 职场文书
公司酒会致辞
2015/07/30 职场文书
公司劳动纪律管理制度
2015/08/04 职场文书
PyQt5爬取12306车票信息程序的实现
2021/05/14 Python
React实现动效弹窗组件
2021/06/21 Javascript