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
在一些现代的扁平化设计网站,特别是移动端网站,经常会包含许多简单而清晰的小图标,例如网站图标.用户的默认头像.移动端网页首页底部固定的切换栏等,这些小图标一般都是由美工做好,可能会放到精灵图上,前端再 ...
随机推荐
- GitLab → 搭建私有的版本控制的托管服务平台
开心一刻 睡着正香,媳妇用力把我晃醒说:“快起来,我爸来了.” 我一下醒了,手脚熟练的把衣服一抱,滚到床底,顺便把鞋也收了进去 媳妇蹲下无奈的说:“快出来!咱俩都结婚半年了.” 我:“对哦,搞习惯了” ...
- IE浏览器下载文件中文文件名乱码问题解决
处理过程 根据IE的F12中的log提示,是因为http头信息中的编码替换了html文件中的编码.我最初的思路是设置Tomcat默认编码,但是我发现我已经在Server.xml中设置过,想到这里我想到 ...
- c++动态内存知识总结与疑问
书名 BOOK TITLE <Primer c++ 第5版> 基本信息 BASICS 阅读进度:第12章动态内存 阅读心得 LEARNINGS 在c++中,我知道的有静态内存.栈内存. ...
- [二分,multiset] 2019 Multi-University Training Contest 10 Welcome Party
Welcome Party Time Limit: 4000/4000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Others)T ...
- STL vector容器 和deque容器
前言 STL是C++的框架,然后vector容器和deque容器又是STL的一部分... 这块的内容都是理解.概念为主,没什么捷径,希望读者能静下来记. 先来讲vector容器(单端动态数组) 1.v ...
- Manjaro更新后 搜狗拼音输入法突然无法正常使用
之前Manjaro已经用了很久了,很多该配置的都已经配置好了,但是搜狗拼音在系统更新后突然无法使用 1检查 如下依赖 2.检查配置文件 3.发现一切配置没问题,此时输入 sogou-qimpanel ...
- Docker镜像拉取慢的解决方法
镜像加速器配置: 下文配置引用于阿里云说明文档:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 1. 安装/升级Docker客户 ...
- OpenCV-Python 傅里叶变换 | 三十
目标 在本节中,我们将学习 使用OpenCV查找图像的傅立叶变换 利用Numpy中可用的FFT函数 傅立叶变换的某些应用程序 我们将看到以下函数:cv.dft(),cv.idft()等 理论 傅立叶变 ...
- TensorFlow系列专题(七):一文综述RNN循环神经网络
欢迎大家关注我们的网站和系列教程:http://panchuang.net/ ,学习更多的机器学习.深度学习的知识! 目录: 前言 RNN知识结构 简单循环神经网络 RNN的基本结构 RNN的运算过程 ...
- 报错代码:svn-http status413'requset entity too large
报错代码:svn-http status413'requset entity too large 发现报错,判断问题.解决问题.记录问题. SVN服务器端排查过没有问题,其他客户端都能正常更新.只有一 ...