html用什么代替input,html中输入框input的替代方案

以前开发中涉及到用户输入,一般使用input,textarea等html元素,当然这是最方便,最快捷的,偶然的一次项目中发现这两者不太好用,查了很多资料,结果还是不尽如人意,直到某次在度娘查到了一个html属性contenteditable

contenteditable 属性指定元素内容是否可编辑。

注意: 当元素中没有设置 contenteditable 属性时,元素将从父元素继承。

也就是说当元素设置 contenteditable 为true 那么当前元素可编辑

这是一个段落。是可编辑的。尝试修改文本。

注意:此时该元素获取焦点时,该元素就可以进行编辑,和输入框一样的效果,但是它的值不是value而是innerText/innerHtml

说一下使用场景

在canvas上绘制文字时,我们需要实时绘制当前输入内容,刚开始使用场景是利用动态创建input元素,input获取焦点输入文字,当input失去焦点时绘制当前input的内容,功能可以实现,唯一不足就是我们需要输入框的大小按照输入内容的长度改变,使用input明显不太方便,可以使用动态改变size属性,如果输入的字母,数字,符合可以实现,当时如输入汉字的就会有问题,我们知道span等行内元素可以根据文字长度改变元素大小,所以,我们使用动态创建span标签,设置contenteditable="true",然后设置相应的样式,就可以模仿input输入框的效果

let span = document.createElement('span')

span.contenteditable=true

// 如果要创建完成后获取焦点需要使用setTimeout

setTimeout(function(){

span.focus()

},0)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值