htmlElement = document.getElementById('icon-option-list') as HTMLElement (是绝对定位 ,不确定 top 与 left 位置)
let x = htmlElement.getBoundingClientRect().top - e.clientY // 点击位置 与 htmlElement 元素的 x相差距离,这样算对吗?
let y = htmlElement.getBoundingClientRect().left - e.clientX // 点击位置 与 htmlElement 元素的 y相差距离
在不知道 htmlElement 相对 定位元素 的位置时,不
现在我要把 htmlElement 元素 移动到点击位置, 怎么移动?
这样好象不对:
htmlElement.style.top = htmlElement.offsetTop + y +'px'
htmlElement.style.left = htmlElement.offsetLeft + x+'px'
关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率

已结题
vue 移动dom元素 至click的位置方法?
收起
- 写回答
- 好问题 0 提建议
- 关注问题
微信扫一扫
点击复制链接分享
- 邀请回答
- 编辑 收藏 删除
- 收藏 举报
5条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
CSDN专家-showbo 2022-11-14 01:38关注直接设置htmlElement 的left/top为事件对象e.clientX和e.clientY就可了。e.clientX和e.clientY就是点击的位置,移动到这个位置不需要再计算,不过是居于htmlElement 的左上角,如果htmlElement 的中心点在点击的位置需要计算过
<div id="icon-option-list" style="position:absolute;left:0;top:0;border:solid 1px #ccc;padding:10px">icon-option-list</div> <script> document.onclick = function (e) { htmlElement = document.getElementById('icon-option-list')// as HTMLElement //居于htmlElement左上角 //htmlElement.style.left = e.clientX + 'px' //htmlElement.style.top = e.clientY + 'px' //下面居于htmlElement中心点 let info = htmlElement.getBoundingClientRect() htmlElement.style.left = e.clientX-info.width/2 + 'px' htmlElement.style.top = e.clientY - info.height / 2 + 'px' } </script>
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
编辑预览轻敲空格完成输入- 显示为
- 卡片
- 标题
- 链接
评论按下Enter换行,Ctrl+Enter发表内容
编辑
预览

轻敲空格完成输入
- 显示为
- 卡片
- 标题
- 链接
报告相同问题?
提交
- 2020-10-17 22:21Vue实现按钮旋转和移动位置的实例代码涉及到了Vue框架中动态样式的操作,触摸事件的监听处理以及CSS3的transform属性应用。以下详细说明了文章中提到的知识点: ### Vue基础 1. **模板语法**:Vue使用了一套自定义...
- 2020-05-11 01:31MAXLZ的博客 Vue2 mounted() { this.$nextTick(() => { const body = document.querySelector('body') body.append(body) }) } Vue3方式:使用Teleport组件 <template> <button @click="open = true"> Open button> ...
- 2022-05-19 11:22农夫三拳有点疼=-=的博客 scrollIntoView()解决vue点击对应文字滚动到当前页面的dom元素的位置
- 2020-10-14 21:27在本例中,`@click="down(i)"` 和 `@click="up(i)"` 分别用于调用`down`和`up`方法,传入当前项的索引,以便进行元素的移动操作。 4. **数组操作 (`this.$set()`)**: 在Vue中,由于JavaScript数组的特性,直接修改...
- 2024-01-24 02:54俊刚、的博客 Teleport的灵活性使得我们能够将组件的内容渲染到任何位置。无论是在同一个组件内部还是在不同的组件之间,我们都可以通过Teleport将内容渲染到所需的目标元素中。这使得我们能够更好地控制组件的布局和样式,并实现...
- 2022-03-21 15:06一染星辰的博客 2.vue面试题 1.v-show和v-if区别的区别: v-show通过css display控制显示和隐藏,v-if组件真正的渲染和销毁,而不是显示和隐藏,频繁切换状态使用v-show 否则v-if 2.为何v-for要用key 快速查找到节点,减少渲染...
- 2022-08-11 15:59星空你好的博客 实现vue动态增删dom元素
- 2021-11-08 06:46在上面的代码中,创建了一个Vue实例vm,挂载到了id为app的DOM元素上,并且定义了数据name,这个name可以在对应的DOM元素中通过插值语法显示出来。Vue实例化后,开发者可以通过vm.$data访问到这个数据对象。 Vue还...
- 2025-02-13 06:36Byron0707的博客 编译时静态分析:通过静态提升、Patch Flags、Block Tree 减少运行时计算量。智能 Diff 算法:结合 ...这些优化使得 Vue 3 在大型应用中的渲染性能接近原生 JavaScript 操作 DOM 的效率,同时保持了开发者的友好体验。
- 2022-01-21 12:46祈盼啦啦啦的博客 当页面加载时,该元素将获得焦点 (注意:autofocus 在移动版 Safari 上不工作)。事实上,只要你在打开这个页面后还没点击过任何内容,这个输入框就应当还是处于聚焦状态。现在让我们用指令来实现这个功能: // 在...
- 没有解决我的问题, 去提问
问题事件
联系我们(工作时间:8:30-22:00)
400-660-0108kefu@csdn.net在线客服
- 京ICP备19004658号
- 经营性网站备案信息
公安备案号11010502030143
- 营业执照
- 北京互联网违法和不良信息举报中心
- 家长监护
- 中国互联网举报中心
- 网络110报警服务
- Chrome商店下载
- 账号管理规范
- 版权与免责声明
- 版权申诉
- 出版物许可证
- ©1999-2025北京创新乐知网络技术有限公司