最近遇到了之前没有碰到过的一个问题:编辑器输入内容时,最好让内容一直保持在可视区域,比如如果区域超出的话,就在键盘抬起时向上滚动一定距离。

这个和聊天发消息还有一定的区别,聊天的话是只要点开输入框,就将内容定位到最下面: 即 dom.scrolltop = dom.scrollheight即可,但是这个需要移动的是一部分距离,经过讨论最好是让当前光标的位置在键盘抬起时达到可视区域的最上面

那么这个距离肯定是根据光标的距离顶部位置决定的,但是光标距离顶部的距离我并没有度到如何获取,于是就自己瞎摸索,就有了接下来的解决办法

原理是利用的是光标属性可以拿到当前基于该属性的dom结构,就可以通过当前dom距离顶部的offsettop值判断内容本身在键盘抬起时到底向上滚多少

废话不多说,上代码

let sel = window.getselection();获取光标的所有属性

通过打印它的一些属性我们可以拿到一些我们所需要的东西(当前dom)

console.log(sel.getrangeat(0).commonancestorcontainer.parentelement)

这个拿到的就是你当前的dom元素,只需要拿到它的offsettop即可判断界面到底向上滚动多少

但是有的时候可能当前的属性是个行标签,拿不到offsettop,那么我们可以找到基于它的父级块标签,我这里的上一级就是块标签,所以只需执行

sel.getrangeat(0).commonancestorcontainer.parentelement.parentnode.offsettop

就可以拿到想要的值

再通过

this.$nexttick(() => {

dom.scrolltop = ket;

});

这里声明必须在nexttick里进行操作才能更改成功,否则是没有效果的

完整demo

let sel = window.getselection();

let ket = sel.getrangeat(0).commonancestorcontainer.parentelement.offsettop;

if(ket==0){//行标签

ket = sel.getrangeat(0).commonancestorcontainer.parentelement.parentnode.offsettop

}

this.$nexttick(() => {

dom.scrolltop = ket;

});

或者通过三元拿值

let ket = sel.getrangeat(0).commonancestorcontainer.parentelement.offsettop==0?sel.getrangeat(0).commonancestorcontainer.parentelement.parentnode.offsettop:sel.getrangeat(0).commonancestorcontainer.parentelement.offsettop;

this.$nexttick(() => {

dom.scrolltop = ket;

});

这样试反正我是成功了,这里说一下键盘抬起不抬起不是我判断是,是由app端调用我的方法告知我的,希望小伙伴们不要走弯路....

总结

到此这篇关于vue实现编辑器键盘抬起时内容跟随光标距顶位置向上滚动效果的文章就介绍到这了,更多相关vue编辑器键盘抬起内容请搜索萬仟网以前的文章或继续浏览下面的相关文章希望大家以后多多支持萬仟网!

希望与广大网友互动??

点此进行留言吧!

vue键盘抬起_vue实现编辑器键盘抬起时内容跟随光标距顶位置向上滚动效果相关推荐

  1. vue与elementUI中给el-input绑定键盘按键--按键修饰符

    vue怎么写键盘事件 vue允许将按键值作为修饰符来使用,如监听回车事件,有两种写法,如下代码: <input type="text" @keyup.13="con ...

  2. vue实现自定义身份证,数字键盘(光标,输入框,键盘)

    vue实现自定义身份证,数字键盘(光标,输入框,键盘) 组件介绍 组件代码 效果图 组件使用 引用 使用 参数介绍 方法 插槽 组件介绍 vue实现自定义身份证键盘(光标,输入框,键盘全手写) 组件代 ...

  3. ubuntu中vi编辑器键盘错乱的问题

    Ubuntu安装完成后vi编辑器键盘不能正常使用,使用下面方法解决: 编辑文件/etc/vim/vimrc.tiny,将"compatible"改成"nocompatib ...

  4. 嵌入式linux矩阵键盘,基于嵌入式Linux的矩阵键盘驱动程序开发

    O 引 言 随着以计算机技术.通信技术和软件技术为核心的信息技术的发展,嵌入式系统在各个行业中得到了广泛的应用.嵌入式系统已成为当今IT行业的焦点之一.而在嵌入式系统中,键盘是重要的人机交互设备之一. ...

  5. 计算机键盘控制器损坏的原因,计算机键盘故障的原因和解决方法

    如果计算机键盘出现故障该怎么办?然后让编辑器帮助您解决问题. 1.如果所有键都是矢量,请首先检查键盘上的每个键.可能是按下了键盘,但在按下其他键时没有响应.如果键盘损坏,则可能是由于键盘老化或键盘内部 ...

  6. 键盘是计算机必不可少,如果台式计算机键盘不响应怎么办?如果按下键盘时无响应怎么办...

    计算机键盘是台式计算机中必不可少的设备之一,也是人们在生活和办公室中经常使用的设备. 同时,由于使用键盘的频率很高,因此在使用键盘时也会出现计算机键盘. 反应的问题,如果台式计算机键盘不响应以及按下时 ...

  7. oracle键盘不出来,告诉你笔记本键盘没反应怎么解决

    笔记本键盘失灵怎么回事?这里的笔记本键盘失灵有2种情况,其中一种是比较常见的按字母键会显示成数字的情况发生,另一种情况是,出现笔记本键盘失灵,按下去没任何反应,那么该怎么去解决笔记本键盘没反应呢?下面 ...

  8. 计算机键盘的设计原理图,人体工程学键盘的设计原理

    人体工程学键盘的推出是为了适应人手的角度,有效的减少腕部疲劳,那么,人体工程学键盘的设计原理是什么呢?让学习啦小编带着大家来了解吧 使用计算机和打字机都需要进行键盘操作,长时间从事键盘操作往往产生手腕 ...

  9. 用键盘全局钩子[Hook]监视多进程键盘操作

    用键盘全局钩子[Hook]监视多进程键盘操作 闲来无事,在WIN2K下用BCB5做了个键盘挂钩小程序,监视全局按键情况.Hook安放和回调函数放在一个单独DLL中,DLL原码如下: //------- ...

最新文章

  1. 胡想——对机器人控制体系的一些想法
  2. 人机融合智能与深度态势感知
  3. python 分词包_NLP相关python包
  4. [记忆碎片的磁盘整理]老妈
  5. [css] 写例子说明如何强制(自动)中、英文换行与不换行
  6. 推荐系统从0到1_1
  7. 小组站立会议之冲次会议2
  8. html5(八) IndexedDB
  9. Java harddisk pc cpu,java获得cpu使用率
  10. redis 集群_Redis集群部署
  11. FileZilla 使用技巧
  12. 华为路由器配置NAT
  13. use after free double free利用
  14. 基于SSM+VUE的交通事故案例库系统(前后端分离)
  15. Matlab是常见的高级语,高级语言具有哪些特点 试述低级语言与高级语言的特点...
  16. 初级程序员需要掌握的知识
  17. 建模新手入门,来看安装ZBrush对电脑有什么特别的要求?
  18. c4d怎么做成html,厉害了!擅长C4D制作可瞬间提升你的设计逼格
  19. 港科夜闻|香港科大(广州)系统枢纽署理院长李世玮教授成为首位获电子封装领域最重要荣誉大奖的中国科学家...
  20. 读半小时漫画史-中国史记录 第一章

热门文章

  1. __name__ == '__main__'
  2. C#入门,基本的整型输入
  3. Python网络爬虫和正则表达式学习总结
  4. 这42个Python小例子,太走心~
  5. python爬虫之路--准备环境
  6. SQL Server链接服务器(一台机器SQL Server登陆,同时映射登陆到另外一台远程服务器的数据库)
  7. 机器学习(2)之正规方程组
  8. 关于Jquery中animate可以操作css样式属性总结
  9. 深度学习-为什么用激活函数
  10. 数据库设计方法学概述