实现思路
利用 e.target.selectionStart 可以知道光标的 位置, 但是面对enter换行 与 空格的时候, 就不起作用了。
而且 e.target.selectionStart 只能知道在文本字符串的位置,我们需要的是距离边框的位置, 这样才能给提示框的 left 和 top 赋值。
所以 思路是 用一个 一模一样的 div 在 textarea 的同样的位置, 进行visibility hidden。
光标的位置插入一个span 标签, 获取span 的offsetTop 和 offsetLeft 就可以;
实现代码
html部分:
<div class="textarea-div">
<!--隐藏在背后的div用来获取位置-->
<div style="position: absolute; visibility:hidden;width: 100%; height: 100%" v-html="hiddenText"></div>
<!--真正的输入输入框-->
<textarea ref="textArea" class="textarea" v-model="text"