vue中 使用SVG实现鼠标点击绘图 提示鼠标移动位置 显示绘制坐标位置
<div class="div1">
<svg id="svg1" xmlns="http://www.w3.org/2000/svg" width="100%" height="500px">
</svg>
</div>
methods:{
svgLoad(){
var ming = 'http://www.w3.org/2000/svg';
var oSvg = document.getElementById('svg1');
var oPolyLine = null;
var pointsNum = '';
var lineText = null;
function createTag(tagName, tagAttr) {
let tag = document.createElementNS(ming, tagName);
for (var attr in tagAttr) {
tag.setAttribute(attr, tagAttr[attr]);
}
return tag;
}
var obj = document.querySelectorAll('.div1')[];
obj.appendChild(createTag('svg', {
'xmlns': ming
}));
oSvg.onmousedown = function(ev) {
if (!oPolyLine) {
oPolyLine = createTag('polyline', {
'fill': 'none',
'stroke': 'red',
'stroke-width': ''
});
oSvg.appendChild(oPolyLine);
}
var x = ev.clientX - obj.offsetLeft;
var y = ev.clientY - obj.offsetTop;
if (pointsNum == '') {
pointsNum = x + ',' + y;
} else {
pointsNum += ',' + x + ',' + y;
}
var theText = createTag('text', {//绘制鼠标移动位置坐标
'fill': 'red'
});
oSvg.appendChild(theText);
oPolyLine.setAttribute('points', pointsNum);
theText.setAttribute('x',x);
theText.setAttribute('y',y-);
theText.innerHTML=x + ',' + y;
var oCircle = createTag('circle', {//绘制线条起始点
'cx': x,
'cy': y,
'r': '',
'fill': 'white',
'stroke': 'red',
'stroke-width':
});
oSvg.appendChild(oCircle);
if (ev.button === ) {
oSvg.onmousemove = null;
oSvg.oncontextmenu = function() {
oSvg.onmousemove = null;
return false;
};
} else {
oSvg.onmousemove = function(ev) {//鼠标移动事件
var ev = ev || window.event;
if (!lineText) {//显示鼠标移动坐标
lineText = createTag('text', {
'fill': 'red',
'x': ev.clientX - obj.offsetLeft,
'y': ev.clientY - obj.offsetTop
});
var x = ev.clientX - obj.offsetLeft;
var y = ev.clientY - obj.offsetTop;
lineText.innerHTML= x + ',' + y;;
oSvg.appendChild(lineText);
} else{
var x = ev.clientX - obj.offsetLeft;
var y = ev.clientY - obj.offsetTop;
lineText.setAttribute('x',x,'y',y);
lineText.innerHTML= x + ',' + y;;
}
if (oPolyLine) {
var x = ev.clientX - obj.offsetLeft;
var y = ev.clientY - obj.offsetTop;
oPolyLine.setAttribute('points', pointsNum + ',' + x + ',' + y);
}
};
}
}
},
}
vue中 使用SVG实现鼠标点击绘图 提示鼠标移动位置 显示绘制坐标位置的更多相关文章
- 在vue中使用svg sprite
概述 这几天研究了一下在vue中使用svg sprite,有些心得,记录下来,供以后开发时参考,相信对其它人也有用. 在vue中导入svg 在vue中导入svg的方法有很多种,比如在img标签的src ...
- vue中怎么实现获取当前点击对象this
应用场景 在评论列表中,有很多条评论(通过循环出来的评论列表),评论的文字有多跟少,默认展示2行超出显示点击查看更多,,要点击查看更多对当前的这条评论进行全部评论展示! 问题描述 要是在传统的点击事件 ...
- 如何在vue中使用svg
1.安装依赖 npm install svg-sprite-loader --save-dev 2.在config文件中配置 const path = require('path'); func ...
- vue中使用svg字体图标
1.在src/ 下面新建目录icons,里面新建文件夹svg,和文件index.js .svg用于存放从iconfont下载下来的svg格式的图标,index.js用于引入使用到svg文件和对应的组件 ...
- js点击获取—通过JS获取图片的相对坐标位置
一.通过JS获取鼠标点击时图片的相对坐标位置 源代码如下所示: <!DOCTYPE html> <html lang="en"> <head> ...
- vue中,svg图标添加click事件,部分浏览器不生效
vue项目中,使用svg图标,但是发现,为svg图标绑定click事件时,部分浏览器会出现,点击没有反应的情况,代码如下: <icon name="icon_add" @cl ...
- vue中引入.svg图标,使用iconfont图标库
阿里巴巴的iconfont是一个很好的图标库,海量的素材可以快速满足开发人员日常对图标的诉求,我们采用symbol引用,官方介绍 创建SvgIcon组件 <template> <sv ...
- vue结合百度地图Api实现周边配置查询及根据筛选结果显示对应坐标详情
在我们平常写房地产相关项目的时候经常会用到百度地图,因为这一块客户会考虑到房源周围的配套或者地铁线路所以在这类项目中就不可以避免的会用到百度地图,当然这只是其中一种,其他地图工具也可以,因为我这个项目 ...
- 在 React、Vue项目中使用 SVG
在一些现代的扁平化设计网站,特别是移动端网站,经常会包含许多简单而清晰的小图标,例如网站图标.用户的默认头像.移动端网页首页底部固定的切换栏等,这些小图标一般都是由美工做好,可能会放到精灵图上,前端再 ...
随机推荐
- javaWeb_Css
CSS HTML页面实在太丑了,怎么破?! 第1章 CSS简介 CSS全称为“层叠样式表 (Cascading Style Sheets)”,它主要是用于定义HTML元素(或内容)在浏览器内的显示样式 ...
- [IROS 2018]Semantic Mapping with Simultaneous Object Detection and Localization
论文地址:https://arxiv.org/abs/1810.11525 论文视频:https://www.youtube.com/watch?v=W-6ViSlrrZgwww.youtu ...
- Redis 缓存更新一致性
当执行写操作后,需要保证从缓存读取到的数据与数据库中持久化的数据是一致的,因此需要对缓存进行更新. 因为涉及到数据库和缓存两步操作,难以保证更新的原子性. 在设计更新策略时,我们需要考虑多个方面的问题 ...
- varchar int 查询 到底什么情况下走索引?
一个字符类型的.一个int类型的,查询的时候到底会不会走索引,其实很多工作了几年的开发人员有时也会晕,下面就用具体事例来测试一下. 1. 准备工作 先准备2张表,以备后续测试使用. 表1:创建表te ...
- 粒子群优化算法(PSO)之基于离散化的特征选择(FS)(三)
作者:Geppetto 前面我们介绍了特征选择(Feature Selection,FS)与离散化数据的重要性,总览的介绍了PSO在FS中的重要性和一些常用的方法,介绍了FS与离散化的背景,介绍本文所 ...
- 命令行中运行Java字节码文件提示找不到或无法加载主类的问题
测试类在命令行操作,编译通过,运行时,提示 错误: 找不到或无法加载主类 java类 package com.company.schoolExercise; public class test7_3_ ...
- Python python 五种数据类型--元组
# 定义一个元组 var1 = ('Hello','Python') var2 = tuple() print(type(var1)) #<class 'tuple'> print(typ ...
- iOS 优化实例
一.接口请求优化 在工程项目中,多个一级界面包含状态,如:服务入口的动态配置,未读消息数量,图片文字等,因此产品设计要每次切换 tab 时都请求数据,及时的更新页面状态.在实际开发中,频繁的调用接口, ...
- nginx 安装教程
Nginx 安装教程 本教程在CentOS6.7中安装nginx 1.8.0,Nginx中加入了taobao的concat模块,nginx-upload-module模块,pcre 以及nginx-u ...
- 并发——详细介绍CAS机制
一.前言 今天花了点时间了解了一下JDK1.8中ConcurrentHashMap的实现,发现它实现的主要思想就是依赖于CAS机制.CAS机制是并发中比较重要的一个概念,所以今天这篇博客就来详细介 ...