详解小程序输入框闪烁及重影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 相关文章推荐
encode脚本和normal脚本混用的问题与解决方法
Mar 08 Javascript
javascript日期转换 时间戳转日期格式
Nov 05 Javascript
基于javascript的JSON格式页面展示美化方法
Jul 02 Javascript
第一次接触神奇的Bootstrap菜单和导航
Aug 01 Javascript
JavaScrip数组删除特定元素的几种方法总结
Sep 06 Javascript
React中常见的动画实现的几种方式
Jan 10 Javascript
vue this.reload 方法 配置
Sep 12 Javascript
利用JavaScript缓存远程窃取Wi-Fi密码的思路详解
Nov 05 Javascript
vue列表单项展开收缩功能之this.$refs的详解
May 05 Javascript
echarts统计x轴区间的数值实例代码详解
Jul 07 Javascript
vue实现短信验证码登录功能(流程详解)
Dec 10 Javascript
微信小程序实现时间戳格式转换
Jul 20 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获得当前的脚本网址
2007/12/10 PHP
初学PHP的朋友 经常问的一些问题。不断更新
2011/08/11 PHP
php中生成随机密码的自定义函数代码
2013/10/21 PHP
详解WordPress中用于合成数组的wp_parse_args()函数
2015/12/18 PHP
解决Extjs上传图片无法预览的解决方法
2012/03/22 Javascript
JS子父窗口互相操作取值赋值的方法介绍
2013/05/11 Javascript
jquery实现智能感知连接外网搜索
2013/05/21 Javascript
JS 毫秒转时间示例代码
2013/09/22 Javascript
3分钟写出来的Jquery版checkbox全选反选功能
2013/10/23 Javascript
JavaScript中的console.group()函数详细介绍
2014/12/29 Javascript
JavaScript编写页面半透明遮罩效果的简单示例
2016/05/09 Javascript
jquery PrintArea 实现票据的套打功能(代码)
2017/03/17 Javascript
详解webpack和webpack-simple中如何引入css文件
2017/06/28 Javascript
JS实现的走迷宫小游戏完整实例
2017/07/19 Javascript
探索webpack模块及webpack3新特性
2017/09/18 Javascript
Django中使用jquery的ajax进行数据交互的实例代码
2017/10/15 jQuery
jquery实现回车键触发事件(实例讲解)
2017/11/21 jQuery
Angular 向组件传递模板的两种方法
2018/02/23 Javascript
Vue表单绑定的实例代码(单选按钮,选择框(单选时,多选时,用 v-for 渲染的动态选项)
2019/05/13 Javascript
Python中的特殊语法:filter、map、reduce、lambda介绍
2015/04/14 Python
python实现爬虫统计学校BBS男女比例(一)
2015/12/31 Python
浅谈numpy库的常用基本操作方法
2018/01/09 Python
Python连接Mssql基础教程之Python库pymssql
2018/09/16 Python
python opencv对图像进行旋转且不裁剪图片的实现方法
2019/07/09 Python
使用python画社交网络图实例代码
2019/07/10 Python
css3绘制百度的小度熊
2018/10/29 HTML / CSS
美国网上鞋城:Shoeline.com
2016/11/17 全球购物
古驰英国官网:GUCCI英国
2020/03/07 全球购物
static关键字的用法
2013/10/07 面试题
旷课检讨书大全
2014/01/21 职场文书
捐款倡议书
2014/04/14 职场文书
离婚财产分隔协议书
2014/10/23 职场文书
实习单位推荐信
2015/03/27 职场文书
教师读书笔记
2015/06/29 职场文书
爱护环境建议书
2015/09/14 职场文书
PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库
2021/04/16 PHP