IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 计算鼠标的按下、移动、抬起的位置 vue -> 正文阅读

[JavaScript知识库]计算鼠标的按下、移动、抬起的位置 vue

情景:当我用鼠标选中一段文字后,会提示一个提示弹出框,那这个弹出框的位置就和选中的文字的位置有相应的关系。

html:
<div 
     class="content"
     @mousedown.stop="getMouseDown"
     @mousemove.stop="moveFlag && getMouseMove($event)"			
     @mouseup.stop="getMouseUp"
>内容</div>
<span v-if="isShow" class="warn">提示</span>
js:
<script>
data() {
	return {
		moveFlag :false,		// 这个moveFlag是个标志,如果鼠标没按下的时候鼠标移动事件是不触发的moveFlag为false,当鼠标按下的时候把moveFlag设为true,但是按下了不代表就选中了
		startPoint:{x:0,y:0},	// 鼠标按下时的起始点
		endPoint:{x:0,y:0},	// 鼠标抬起时的结束点
		text:'',	// 选中的内容
		isShow:false,	// 是否显示弹窗标志
		isMove:false,  // 鼠标是否移动
	}
}
methods:{
    // 鼠标按下
	getMouseDown() {
		this.text = ''				// 清空选择的内容初始化坐标
		this.isShow = false;
		this.startPoint.x = 0;
		this.startPoint.y = 0;
		this.endPoint.x = 0;
        this.endPoint.y = 0;				
        this.moveFlag = true
        let event;				// 浏览器事件记录起始位置
        event = event || window.event
        this.startPoint.x  = event.pageX
        this.startPoint.y = event.pageY;
	},
	// 鼠标移动
	getMouseMove() {
		this.isMove = true
	},
	// 鼠标抬起 计算提示弹窗的位置
	getMouseupcoor() {
	  let event;
      event = event || window.event;
      this.endPoint.y = event.pageY;
      this.endPoint.x = event.pageX;
      let height = $(".content").offset().top			// 获取内容在当前页面的高度
      let width = $(".warn").width()/2
      let left = parseInt((this.startPoint.x - this.endPoint.x)/2)
      let numTop = this.endPoint.y - height/ 2
      let numLeft = this.endPoint.x - width + left - 150		// 这个提示框距左侧的距离这个大小是我自己测试计算出来的,并不是固定的公式,如果有好的方法可以传授给我。。。
      $(".content").css({
      left:numLeft,
      top:numTop
      })
      if(this.isMove) {
     	 this.text = window.getSelection().toString();
     	 this.isShow = true
      }else {
      	this.text = "";
        this.isShow = false
      }
	}
}

</script>
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-26 11:33:45  更:2022-04-26 11:36:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:16:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码