vue移动端项目拖拽客服组件
记录一下第一次封装组件
<template>
<div ref="kefu" class="kefu"
@touchstart="touchstart"
@touchend="touchend"
@touchmove="mousemove">
<slot>
</slot>
</div>
</template>
<script>
export default {
name: "HelloWorld",
props: {
},
data() {
return {
falg: false,
};
},
mounted() {},
methods: {
touchstart() {
this.falg = true;
this.$refs.kefu.style.transition="none";
},
touchend() {
this.falg = false;
this.$refs.kefu.style.transition="all 1s";
let left = this.$refs.kefu.offsetLeft;
let screenWidth = window.screen.width;
let oWidth = this.$refs.kefu.offsetWidth;
if (left + oWidth / 2 <= screenWidth / 2) {
this.$refs.kefu.style.left = -oWidth / 2 + "px";
} else {
this.$refs.kefu.style.left = screenWidth -oWidth / 2 + "px";
}
},
mousemove(e) {
if (this.falg) {
let clientY = e.targetTouches[0].clientY;
let clientX = e.targetTouches[0].clientX;
let offsetHeight = this.$refs.kefu.offsetHeight;
let offsetWidth = this.$refs.kefu.offsetWidth;
let top = clientY - offsetHeight / 2;
let left = clientX - offsetWidth / 2;
// 屏幕得宽度
let screenWidth = window.screen.width;
let screenHeight = window.screen.height;
let maxTop = screenHeight - offsetHeight;
let maxLeft = screenWidth - offsetWidth;
console.log(screenHeight);
if (top <= 0) {
top = 0;
}
if (top > maxTop) {
top = maxTop;
}
if (left <= 0) {
left = 0;
}
left = left > maxLeft ? maxLeft : left;
this.$refs.kefu.style.top = top + "px";
this.$refs.kefu.style.left = left + "px";
}
},
},
};
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
.kefu {
position: fixed;
}
</style>
本文来自博客园,作者:岁月丷,转载请注明原文链接:https://www.cnblogs.com/whtjmy/p/14927286.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!