详解小程序输入框闪烁及重影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 相关文章推荐
jQuery学习5 jQuery事件模型
Feb 07 Javascript
jQuery代码优化 遍历篇
Nov 01 Javascript
js捕获鼠标滚轮事件代码
Dec 16 Javascript
js和css写一个可以自动隐藏的悬浮框
Mar 05 Javascript
javascript:void(0)的问题使用探讨
Apr 10 Javascript
基于jquery实现放大镜效果
Aug 17 Javascript
JS实现不规则TAB选项卡效果代码
Sep 16 Javascript
JavaScript 中有关数组对象的方法(详解)
Aug 15 Javascript
关于验证码在IE中不刷新的快速解决方法
Sep 23 Javascript
微信小程序 教程之wxapp 视图容器 view
Oct 19 Javascript
动态加载css方法实现和深入解析
Jan 18 Javascript
angularjs实现table表格td单元格单击变输入框/可编辑状态示例
Feb 21 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
PHP4 与 MySQL 交互使用
2006/10/09 PHP
html静态页面调用php文件的方法
2014/11/13 PHP
微信支付开发维权通知实例
2016/07/12 PHP
PHP PDO操作MySQL基础教程
2017/06/05 PHP
JavaScript replace(rgExp,fn)正则替换的用法
2010/03/04 Javascript
JS 如何获取radio选中后的值及不选择取radio的值
2013/10/28 Javascript
javascript判断css3动画结束 css3动画结束的回调函数
2015/03/10 Javascript
浅谈JavaScript中面向对象的的深拷贝和浅拷贝
2016/08/01 Javascript
解决Extjs下拉框不显示的问题
2017/06/21 Javascript
JS实现合并json对象的方法
2017/10/10 Javascript
基于JavaScript中字符串的match与replace方法(详解)
2017/12/04 Javascript
基于zTree树形菜单的使用实例
2017/12/25 Javascript
Angular 数据请求的实现方法
2018/05/07 Javascript
微信小程序wx:for循环的实例详解
2018/10/07 Javascript
react 中父组件与子组件双向绑定问题
2019/05/20 Javascript
layui多iframe页面控制定时器运行的方法
2019/09/05 Javascript
如何在sae中设置django,让sae的工作环境跟本地python环境一致
2017/11/21 Python
PyQt5每天必学之像素图控件QPixmap
2018/04/19 Python
python使用thrift教程的方法示例
2019/03/21 Python
Python3之不使用第三方变量,实现交换两个变量的值
2019/06/26 Python
Python坐标线性插值应用实现
2019/11/13 Python
利用python中的matplotlib打印混淆矩阵实例
2020/06/16 Python
Html5 new XMLHttpRequest()监听附件上传进度
2021/01/14 HTML / CSS
百丽国际旗下购物网站:优购
2017/02/28 全球购物
学生个人求职自荐信格式
2013/09/23 职场文书
护士演讲稿优秀范文
2014/04/30 职场文书
省级青年文明号申报材料
2014/05/23 职场文书
计生工作先进事迹
2014/08/15 职场文书
2015年仓管员工作总结
2015/04/21 职场文书
闪闪红星观后感
2015/06/08 职场文书
休学证明范本
2015/06/19 职场文书
2016年庆“七一”主题党日活动总结
2016/04/05 职场文书
浅谈redis五大数据结构和使用场景
2021/04/12 Redis
教你如何使用Python开发一个钉钉群应答机器人
2021/06/21 Python
深入讲解数据库中Decimal类型的使用以及实现方法
2022/02/15 MySQL
MongoDB支持的索引类型
2022/04/11 MongoDB