解决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 05 Javascript
JavaScript 放大镜 放大倍率和视窗尺寸
May 09 Javascript
22点关于jquery性能优化的建议
May 28 Javascript
jQuery学习笔记之Ajax用法实例详解
Dec 01 Javascript
jqGrid用法汇总(全经典)
Jun 28 Javascript
JS实现控制图片显示大小的方法【图片等比例缩放功能】
Feb 18 Javascript
写jQuery插件时的注意点
Feb 20 Javascript
详解Vue中状态管理Vuex
May 11 Javascript
Cordova(ionic)项目实现双击返回键退出应用
Sep 17 Javascript
微信小程序实现吸顶特效
Jan 08 Javascript
jQuery操作动画完整实例分析
Jan 10 jQuery
vue 使用post/get 下载导出文件操作
Aug 07 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实现ODBC数据分页显示一例
2006/10/09 PHP
php常用Stream函数集介绍
2013/06/24 PHP
PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法
2014/05/04 PHP
PHP模板引擎Smarty内建函数section,sectionelse用法详解
2016/04/11 PHP
php微信公众平台开发之微信群发信息
2016/09/13 PHP
php实现博客,论坛图片防盗链的方法
2016/10/15 PHP
Zend Framework入门教程之Zend_View组件用法示例
2016/12/09 PHP
javascript:void(0)的真正含义实例分析
2008/08/20 Javascript
javascript基于prototype实现类似OOP继承的方法
2015/12/16 Javascript
vue mintui-Loadmore结合实现下拉刷新和上拉加载示例
2017/10/12 Javascript
JS实现百度搜索接口及链接功能实例代码
2018/02/02 Javascript
Vue Prop属性功能与用法实例详解
2019/02/23 Javascript
ES6基础之字符串和函数的拓展详解
2019/08/22 Javascript
python 查找字符串是否存在实例详解
2017/01/20 Python
python数据结构链表之单向链表(实例讲解)
2017/07/25 Python
Python3.6 Schedule模块定时任务(实例讲解)
2017/11/09 Python
python模拟表单提交登录图书馆
2018/04/27 Python
python实现Windows电脑定时关机
2018/06/20 Python
flask框架实现连接sqlite3数据库的方法分析
2018/07/16 Python
Python使用sqlalchemy模块连接数据库操作示例
2019/03/13 Python
Python空间数据处理之GDAL读写遥感图像
2019/08/01 Python
Python 共享变量加锁、释放详解
2019/08/28 Python
wxPython+Matplotlib绘制折线图表
2019/11/19 Python
python将logging模块封装成单独模块并实现动态切换Level方式
2020/05/12 Python
VSCode中autopep8无法运行问题解决方案(提示Error: Command failed,usage)
2021/03/02 Python
L’AGENCE官网:加州女装品牌
2018/06/03 全球购物
台湾旅游网站:灿星旅游
2018/10/11 全球购物
物业保安员岗位职责制度
2014/01/30 职场文书
万年牢教学反思
2014/02/15 职场文书
对祖国的寄语大全
2014/04/11 职场文书
民警个人对照检查剖析材料
2014/09/17 职场文书
2015重阳节座谈会主持词
2015/07/30 职场文书
部门主管竞聘书
2015/09/15 职场文书
如何用六步教会你使用python爬虫爬取数据
2022/04/06 Python
Redis如何实现验证码发送 以及限制每日发送次数
2022/04/18 Redis
SQL Server数据库的三种创建方法汇总
2023/05/08 MySQL