1.div模拟input、textarea,特点是div的高度可以根据输入内容自动伸缩,而input和textarea输入内容较多时,高度固定,内容会显示不全。
2.div实现可输入加属性
<div contenteditable="true"></div>
3.坑1(IOS端无法输入)
在取消全局默认样式的时候,由于代码加了-webkit-user-select: none(设置或检索是否允许用户选中文本),只要在当前div上设置-webkit-user-select: text就可以输入了。
4.坑2(IOS端无法获取焦点或者只有双击后才可以获取焦点)
在移动端,为了解决300s延迟的问题,我的代码引入了fastclick库,导致点击时会执行preventDefault防止向上冒泡,具体原因看https://blog.csdn.net/soft_z1302/article/details/83104461,所以只要在div上加class="needsclick"就可以了。
5.坑3(提示文字)
div不像input那样,有placeholder属性,要实现这样的效果,得这么写:
<div class="editdiv needsclick" contenteditable="true" placeholder="请输入未进店备注"></div> <style> .editdiv { -webkit-user-select:text; } .editdiv:empty::before { content: attr(placeholder); color: #999; } .editdiv:focus::before { content: none; }
</style>