解决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模板实现方法
Apr 27 Javascript
解析javascript 实用函数的使用详解
May 10 Javascript
改变文件域的样式实现思路同时兼容ie、firefox
Oct 23 Javascript
jquery对table中各数据的增加、保存、删除操作示例
May 14 Javascript
Javascript基础教程之if条件语句
Jan 18 Javascript
jQuery mobile转换url地址及获取url中目录部分的方法
Dec 04 Javascript
JavaScript自定义浏览器滚动条兼容IE、 火狐和chrome
Jan 05 Javascript
JavaScript实现时钟滴答声效果
Jan 29 Javascript
微信小程序 出现错误:{&quot;baseresponse&quot;:{&quot;errcode&quot;:-80002,&quot;errmsg&quot;:&quot;&quot;}}解决办法
Feb 23 Javascript
vue环境搭建简单教程
Nov 07 Javascript
基于jQuery实现无缝轮播与左右点击效果
May 13 jQuery
原生js实现移动端Touch轮播图的方法步骤
Jan 03 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 多行多列显示
2009/08/15 PHP
php调用方法mssql_fetch_row、mssql_fetch_array、mssql_fetch_assoc和mssql_fetch_objcect读取数据的区别
2012/08/08 PHP
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
2014/04/08 PHP
php操作XML、读取数据和写入数据的实现代码
2014/08/15 PHP
Laravel5.7 Eloquent ORM快速入门详解
2019/04/12 PHP
JavaScript游戏之是男人就下100层代码打包
2010/11/08 Javascript
js中prototype用法详细介绍
2013/11/14 Javascript
jquery选择器需要注意的问题
2014/11/26 Javascript
jQuery实现炫酷的鼠标轨迹特效
2015/02/01 Javascript
javascript组合使用构造函数模式和原型模式实例
2015/06/04 Javascript
jQuery实现列表内容的动态载入特效
2015/08/08 Javascript
图解Javascript——作用域、作用域链、闭包
2017/03/21 Javascript
纯html+css+javascript实现楼层跳跃式的页面布局(实例代码)
2017/10/25 Javascript
详解vue添加删除元素的方法
2018/06/30 Javascript
详解element-ui设置下拉选择切换必填和非必填
2019/06/17 Javascript
VUE动态生成word的实现
2020/07/26 Javascript
Vue中computed和watch有哪些区别
2020/12/19 Vue.js
Python单链表简单实现代码
2016/04/27 Python
apache部署python程序出现503错误的解决方法
2017/07/24 Python
python事件驱动event实现详解
2018/11/21 Python
python plotly绘制直方图实例详解
2019/07/22 Python
H5 canvas中width、height和style的宽高区别详解
2018/11/02 HTML / CSS
高山背包:High Sierra
2017/11/23 全球购物
捷克浴室和厨房设备购物网站:SIKO
2018/08/11 全球购物
工商管理专业实习大学生自我鉴定
2013/09/19 职场文书
制药工程专业毕业生推荐信
2013/12/24 职场文书
学校十一活动方案
2014/02/01 职场文书
汽车队司机先进事迹材料
2014/02/01 职场文书
材料会计岗位职责
2014/03/06 职场文书
社区志愿者活动总结
2014/06/26 职场文书
2014年党员干部四风问题自我剖析材料
2014/09/29 职场文书
自我查摆剖析材料
2014/10/11 职场文书
停发工资证明范本
2015/06/12 职场文书
检讨书格式
2019/04/25 职场文书
入党转正申请书范文
2019/05/20 职场文书
数据分析数据库ClickHouse在大数据领域应用实践
2022/04/03 MySQL