解决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应用于login页面的问题及解决
Oct 17 Javascript
JQuery 图片延迟加载并等比缩放插件
Nov 09 Javascript
jQuery实现的类flash菜单效果代码
May 17 Javascript
jquery提取元素里的纯文本不包含span等里的内容
Sep 30 Javascript
js判断上传文件的类型和大小示例代码
Oct 18 Javascript
jQuery实现切换字体大小的方法
Mar 10 Javascript
简述AngularJS的控制器的使用
Jun 16 Javascript
常用的javascript设计模式
Jan 11 Javascript
vue项目持久化存储数据的实现代码
Oct 01 Javascript
Angular6 用户自定义标签开发的实现方法
Jan 08 Javascript
[jQuery] 事件和动画详解
Mar 05 jQuery
微信小程序搜索框样式并实现跳转到搜索页面(小程序搜索功能)
Mar 10 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实现图片简单上传
2006/10/09 PHP
一个自定义位数的php多用户计数器代码
2007/03/11 PHP
PHP中魔术变量__METHOD__与__FUNCTION__的区别
2014/09/29 PHP
php中get_object_vars()方法用法实例
2015/02/08 PHP
PHP生成短网址方法汇总
2016/07/12 PHP
jQuery的实现原理的模拟代码 -2 数据部分
2010/08/01 Javascript
js实现图片从左往右渐变切换效果的方法
2015/02/06 Javascript
javascript实现拖动元素交换位置
2015/11/29 Javascript
关于JavaScript作用域你想知道的一切
2016/02/04 Javascript
Angular2 环境配置详细介绍
2016/09/21 Javascript
DOM事件探秘篇
2017/02/15 Javascript
微信小程序页面间通信的5种方式
2017/03/31 Javascript
JavaScript之underscore_动力节点Java学院整理
2017/07/03 Javascript
node.js+express+mySQL+ejs+bootstrop实现网站登录注册功能
2018/01/12 Javascript
在layui.use 中自定义 function 的正确方法
2019/09/16 Javascript
JS如何实现网站中PC端和手机端自动识别并跳转对应的代码
2020/01/08 Javascript
js实现微信聊天界面
2020/08/09 Javascript
[08:17]Ti9 现场cosplay
2019/09/10 DOTA
Python的Tornado框架的异步任务与AsyncHTTPClient
2016/06/27 Python
python 查找文件名包含指定字符串的方法
2018/06/05 Python
Python中的 sort 和 sorted的用法与区别
2019/08/10 Python
Python 获取命令行参数内容及参数个数的实例
2019/12/20 Python
总结python 三种常见的内存泄漏场景
2020/11/20 Python
Zooplus葡萄牙:欧洲领先的网上宠物商店
2018/07/01 全球购物
美国高级音响品牌:Master&Dynamic
2018/07/05 全球购物
丝芙兰新加坡官网:Sephora新加坡
2018/12/04 全球购物
什么是属性访问器
2015/10/26 面试题
工商技校毕业生自荐信
2013/11/15 职场文书
安全事故检讨书
2014/01/18 职场文书
教师档案管理制度
2014/01/23 职场文书
《灯光》教学反思
2014/02/08 职场文书
纪委立案决定书
2015/06/24 职场文书
css3实现背景图片颜色修改的多种方式
2021/04/13 HTML / CSS
如何在C++中调用Python
2021/05/21 Python
MySQL命令无法输入中文问题的解决方式
2021/08/30 MySQL
PHP 时间处理类Carbon
2022/05/20 PHP