详解小程序输入框闪烁及重影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 相关文章推荐
基于mootools插件实现遮罩层新手引导
May 24 Javascript
基于js里调用函数时,函数名带括号和不带括号的区别
Jul 28 Javascript
纯JS焦点图特效实例(可一个页面多用)
Dec 07 Javascript
vue2.0实战之使用vue-cli搭建项目(2)
Mar 27 Javascript
node.js实现登录注册页面
Apr 08 Javascript
浅谈箭头函数写法在ReactJs中的使用
Aug 22 Javascript
angular第三方包开发整理(小结)
Apr 19 Javascript
vue slots 组件的组合/分发实例
Sep 06 Javascript
微信小程序功能之全屏滚动效果的实现代码
Nov 22 Javascript
vue.js+elementUI实现点击左右箭头切换头像功能(类似轮播图效果)
Sep 05 Javascript
微信小程序获取复选框全选反选选中的值(实例代码)
Dec 17 Javascript
动态规划之使用备忘录来改进Javascript函数
Apr 07 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
IIS下配置Php+Mysql+zend的图文教程
2006/12/08 PHP
PHP基于GD库的缩略图生成代码(支持jpg,gif,png格式)
2014/06/19 PHP
WordPres对前端页面调试时的两个PHP函数使用小技巧
2015/12/22 PHP
php 生成Tab键或逗号分隔的CSV
2016/09/24 PHP
PHP用户管理中常用接口调用实例及解析(含源码)
2017/03/09 PHP
thinkPHP5.0框架配置格式、加载解析与读取方法
2017/03/17 PHP
php+redis消息队列实现抢购功能
2018/02/08 PHP
php记录搜索引擎爬行记录的实现代码
2018/03/02 PHP
PHP精确到毫秒秒杀倒计时实例详解
2019/03/14 PHP
Laravel Eloquent ORM 实现查询表中指定的字段
2019/10/17 PHP
select组合框option的捕捉实例代码
2008/09/30 Javascript
javascript 清空form表单中某种元素的值
2009/12/26 Javascript
使用jquery的ajax需要注意的地方dataType的设置
2013/08/12 Javascript
简单漂亮的js弹窗可自由拖拽且兼容大部分浏览器
2013/10/22 Javascript
js 动态为textbox添加下拉框数据源的方法
2014/04/24 Javascript
通过JS动态创建一个html DOM元素并显示
2014/10/15 Javascript
JavaScript基本语法学习教程
2016/01/14 Javascript
APP中javascript+css3实现下拉刷新效果
2016/01/27 Javascript
使用 Vue.js 仿百度搜索框的实例代码
2017/05/09 Javascript
AngularJS ionic手势事件的使用总结
2017/08/09 Javascript
JS中关于正则的巧妙操作
2017/08/31 Javascript
angular基于ng-alain定义自己的select组件示例
2018/02/23 Javascript
vue的过滤器filter实例详解
2018/09/17 Javascript
vue实现购物车选择功能
2020/01/10 Javascript
超简单使用Python换脸实例
2019/03/27 Python
PyQt5多线程刷新界面防假死示例
2019/12/13 Python
使用Pycharm分段执行代码
2020/04/15 Python
移动端HTML5 input常见问题(小结)
2020/09/28 HTML / CSS
香港网上花店:FlowerAdvisor香港
2019/05/30 全球购物
党旗在我心中演讲稿
2014/09/15 职场文书
党员教师四风问题整改措施思想汇报
2014/10/08 职场文书
小班下学期个人总结
2015/02/12 职场文书
搞笑婚庆主持词
2015/06/29 职场文书
青少年法制教育心得体会
2016/01/14 职场文书
外出培训学习心得体会
2016/01/18 职场文书
MySQL8.0无法启动3534的解决方法
2021/06/03 MySQL