详解小程序输入框闪烁及重影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 相关文章推荐
网页中可关闭的漂浮窗口实现可自行调节
Aug 20 Javascript
javascript运行机制之this详细介绍
Feb 07 Javascript
用javascript读取xml文件读取节点数据
Aug 12 Javascript
jQuery ui autocomplete选择列表被Bootstrap模态窗遮挡的完美解决方法
Sep 23 Javascript
使用vue框架 Ajax获取数据列表并用BootStrap显示出来
Apr 24 Javascript
关于vue-router的beforeEach无限循环的问题解决
Sep 09 Javascript
JavaScript面向对象的程序设计(犯迷糊的小羊)
May 27 Javascript
记录一篇关于redux-saga的基本使用过程
Aug 18 Javascript
浅谈Vue 性能优化之深挖数组
Dec 11 Javascript
vue2.x 通过后端接口代理,获取qq音乐api的数据示例
Oct 30 Javascript
vue-父子组件和ref实例详解
Nov 10 Javascript
react项目从新建到部署的实现示例
Feb 19 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 注册时输入信息验证器的实现详解
2013/07/05 PHP
PHP读取RSS(Feed)简单实例
2014/06/12 PHP
PHP实用函数分享之去除多余的0
2015/02/06 PHP
PHP中for循环与foreach的区别
2017/03/06 PHP
使用Post提交时须将空格转换成加号的解释
2013/01/14 Javascript
JavaScript字符串对象charAt方法入门实例(用于取得指定位置的字符)
2014/10/17 Javascript
javascript实现网站加入收藏功能
2015/12/16 Javascript
javascript实现随机生成DIV背景色
2016/06/20 Javascript
js编写一个简单的产品放大效果代码
2016/06/27 Javascript
解决ztree搜索中多级菜单展示不全问题
2017/07/05 Javascript
jQuery 利用ztree实现树形表格的实例代码
2017/09/27 jQuery
javascript中UMD规范的代码推演
2018/08/29 Javascript
JavaScript递归函数定义与用法实例分析
2019/01/24 Javascript
vue单应用在ios系统中实现微信分享功能操作
2020/09/07 Javascript
Python简单格式化时间的方法【strftime函数】
2016/09/18 Python
基于Django filter中用contains和icontains的区别(详解)
2017/12/12 Python
python使用Apriori算法进行关联性解析
2017/12/21 Python
python爬取基于m3u8协议的ts文件并合并
2019/04/26 Python
浅谈python输出列表元素的所有排列形式
2020/02/26 Python
Python Opencv 通过轨迹(跟踪)栏实现更改整张图像的背景颜色
2020/03/09 Python
使用HTML5原生对话框元素并轻松创建模态框组件
2019/03/06 HTML / CSS
在canvas上实现元素图片镜像翻转动画效果的方法
2018/03/20 HTML / CSS
国际鲜花速递专家:Floraqueen
2016/11/24 全球购物
WEB控件及HTML服务端控件能否调用客户端方法?如果能,请解释如何调用?
2015/08/25 面试题
Linux开机引导的步骤是什么
2014/02/26 面试题
计算机大学生的自我评价
2013/10/15 职场文书
小小的船教学反思
2014/02/21 职场文书
报关专员求职信范文
2014/02/22 职场文书
招标授权委托书样本
2014/09/23 职场文书
募捐感谢信
2015/01/22 职场文书
2015年行政助理工作总结
2015/04/30 职场文书
活动经费申请报告
2015/05/15 职场文书
2016年圣诞节寄语(一句话)
2015/12/07 职场文书
Python使用OpenCV实现虚拟缩放效果
2022/02/28 Python
《吸血鬼:避世 血猎》官宣4.27发售 系列首款大逃杀
2022/04/03 其他游戏
纯CSS打字动画的实现示例
2022/08/05 HTML / CSS