详解小程序输入框闪烁及重影BUG解决方案


Posted in Javascript onAugust 31, 2018

前言

本人所说的小程序,都是基于mpvue框架而上的,因此BUG可能是原生小程序的,也有可能是mpvue的。

问题描述

在小程序input组件中,如果使用v-model进行双向绑定,在输入时会出现光标闪烁的BUG。

原因

造成这个BUG的原因,是因为在原生小程序input组件上,进行了封装。才导致光标闪烁的问题。

解决方案

这里提供了两种解决方案。各有各的优势,请选取合适的方案:

一、弃用v-model,使用@input

适用于input组件单纯是用户手动输入的,而没有像授权获取手机号,然后自动填入input组件中。这种需要赋予初始value的情况。即适用于单向绑定,而不是双向绑定。

/** 
* 父组件
*/

// html
<childInput @input="onInput"/> <-- 注意这里不能使用:value=value赋予初始值,否则又会出现闪烁的BUG,因为此时就等同于v-model了

// js
import ChildInput from './ChildInput'
export default {
 components:{ ChildInput },
 data(){
 return {
  value:''
 }
 },
 methods(){
 onInput(e){
  this.value = e 
 }
 }
}

/** 
* 子组件 ChildInput
*/

// html

<input @input="$emit('input',$event)"/>

二、不封装input组件,直接使用v-model

这种情况就是可以直接双向绑定的了。具体原因还不清楚,可能是本身原生小程序的BUG。

/**
* 父组件,不使用封装的子组件,直接使用原生组件。
*/

// html
<input v-model="value"/>

// js
export default {
 data(){
 return {
  value:''
 }
 }
}

问题描述:输入框文字出现重影,如下

详解小程序输入框闪烁及重影BUG解决方案

输入框 在失去焦点和获得焦点的切换过程中,能清晰的看到输入框的问题的重影现象,如上图,经过一番折腾,我找到bug的出错原因即初步解决方案,仅供参考

1、微信官方设计文档给出了字体大小的规范,最小11pt,我自己设的是10pt,将其改成11pt之后,部分输入框不再出现重影,而是微信官方渲染的加粗效果

微信官方字体规范如下:

详解小程序输入框闪烁及重影BUG解决方案

修改后的加粗效果如下:

详解小程序输入框闪烁及重影BUG解决方案

3、还有的输入框扔会出现重影,细看,再继续研究,发现是因为,flex布局,使得,输入框的长度不一致,我把输入框调成一样宽度就可以,不过我也不知道具体为什么,你们可以试试

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 常用函数
Dec 30 Javascript
JQuery使用$.ajax和checkbox实现下次不在通知功能
Apr 16 Javascript
快速学习JavaScript的6个思维技巧
Oct 13 Javascript
javascript中return,return true,return false三者的用法及区别
Nov 17 Javascript
详解JavaScript设计模式开发中的桥接模式使用
May 18 Javascript
AngularJS 单元测试(二)详解
Sep 21 Javascript
JavaScript数组去重的几种方法效率测试
Oct 23 Javascript
Angular 4依赖注入学习教程之FactoryProvider配置依赖对象(五)
Jun 04 Javascript
Angularjs实现上传图片预览功能
Sep 01 Javascript
JavaScript捕捉事件和阻止冒泡事件实例分析
Aug 03 Javascript
你应该了解的JavaScript Array.map()五种用途小结
Nov 14 Javascript
vue+vant-UI框架实现购物车的复选框全选和反选功能
Nov 05 Javascript
javascript闭包的使用之按钮切换功能
Aug 30 #Javascript
Vue.set() this.$set()引发的视图更新思考及注意事项
Aug 30 #Javascript
基于Angularjs-router动态改变Title值的问题
Aug 30 #Javascript
从vue源码解析Vue.set()和this.$set()
Aug 30 #Javascript
vue-router动态设置页面title的实例讲解
Aug 30 #Javascript
解决vue select当前value没有更新到vue对象属性的问题
Aug 30 #Javascript
微信小程序使用wxParse解析html的实现示例
Aug 30 #Javascript
You might like
关于PHP中Object对象的笔记分享
2011/06/28 PHP
初识Laravel
2014/10/30 PHP
php中get_magic_quotes_gpc()函数说明
2017/02/06 PHP
基于JQuery的asp.net树实现代码
2010/11/30 Javascript
jquery操作select详解(取值,设置选中)
2014/02/07 Javascript
JavaScript获取网页中第一个链接ID的方法
2015/04/03 Javascript
Jquery轮播效果实现过程解析
2016/03/30 Javascript
JavaScript编写检测用户所使用的浏览器的代码示例
2016/05/05 Javascript
基于jQuery实现表格内容的筛选功能
2016/08/21 Javascript
Javascript 实现放大镜效果实例详解
2016/12/03 Javascript
canvas实现探照灯效果
2017/02/07 Javascript
JavaScript根据json生成html表格的示例代码
2018/10/24 Javascript
[00:27]DOTA2战队VP、Secret贺新春
2018/02/11 DOTA
Python2.7简单连接与操作MySQL的方法
2016/04/27 Python
Python 调用 Outlook 发送邮件过程解析
2019/08/08 Python
python读写Excel表格的实例代码(简单实用)
2019/12/19 Python
Python matplotlib画曲线例题解析
2020/02/07 Python
浅谈sklearn中predict与predict_proba区别
2020/06/28 Python
selenium+python实现基本自动化测试的示例代码
2021/01/27 Python
详解Python调用系统命令的六种方法
2021/01/28 Python
HTML5触摸事件实现移动端简易进度条的实现方法
2018/05/04 HTML / CSS
机械电子工程专业推荐信范文
2013/11/20 职场文书
汽车技术服务英文求职信范文
2014/01/02 职场文书
展会邀请函范文
2014/01/26 职场文书
期末学生评语大全
2014/04/24 职场文书
教师节感恩老师演讲稿
2014/08/28 职场文书
大四优秀党员个人民主评议
2014/09/19 职场文书
2015大学生实训报告
2014/11/05 职场文书
会计师事务所实习证明
2014/11/16 职场文书
中学生自我评价范文
2015/03/03 职场文书
2015年酒店工作总结范文
2015/04/07 职场文书
2015民办小学年度工作总结
2015/05/26 职场文书
党支部评议意见
2015/06/02 职场文书
《比尾巴》教学反思
2016/02/24 职场文书
生鲜超市—未来中国最具有潜力零售业态
2019/08/02 职场文书
详解JavaScript中Arguments对象用途
2021/08/30 Javascript