<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实现鼠标点击绘图 提示鼠标移动位置 显示绘制坐标位置的更多相关文章

  1. 在vue中使用svg sprite

    概述 这几天研究了一下在vue中使用svg sprite,有些心得,记录下来,供以后开发时参考,相信对其它人也有用. 在vue中导入svg 在vue中导入svg的方法有很多种,比如在img标签的src ...

  2. vue中怎么实现获取当前点击对象this

    应用场景 在评论列表中,有很多条评论(通过循环出来的评论列表),评论的文字有多跟少,默认展示2行超出显示点击查看更多,,要点击查看更多对当前的这条评论进行全部评论展示! 问题描述 要是在传统的点击事件 ...

  3. 如何在vue中使用svg

    1.安装依赖 npm install svg-sprite-loader --save-dev 2.在config文件中配置    const path = require('path'); func ...

  4. vue中使用svg字体图标

    1.在src/ 下面新建目录icons,里面新建文件夹svg,和文件index.js .svg用于存放从iconfont下载下来的svg格式的图标,index.js用于引入使用到svg文件和对应的组件 ...

  5. js点击获取—通过JS获取图片的相对坐标位置

    一.通过JS获取鼠标点击时图片的相对坐标位置 源代码如下所示: <!DOCTYPE html> <html lang="en"> <head> ...

  6. vue中,svg图标添加click事件,部分浏览器不生效

    vue项目中,使用svg图标,但是发现,为svg图标绑定click事件时,部分浏览器会出现,点击没有反应的情况,代码如下: <icon name="icon_add" @cl ...

  7. vue中引入.svg图标,使用iconfont图标库

    阿里巴巴的iconfont是一个很好的图标库,海量的素材可以快速满足开发人员日常对图标的诉求,我们采用symbol引用,官方介绍 创建SvgIcon组件 <template> <sv ...

  8. vue结合百度地图Api实现周边配置查询及根据筛选结果显示对应坐标详情

    在我们平常写房地产相关项目的时候经常会用到百度地图,因为这一块客户会考虑到房源周围的配套或者地铁线路所以在这类项目中就不可以避免的会用到百度地图,当然这只是其中一种,其他地图工具也可以,因为我这个项目 ...

  9. 在 React、Vue项目中使用 SVG

    在一些现代的扁平化设计网站,特别是移动端网站,经常会包含许多简单而清晰的小图标,例如网站图标.用户的默认头像.移动端网页首页底部固定的切换栏等,这些小图标一般都是由美工做好,可能会放到精灵图上,前端再 ...

随机推荐

  1. JAVA正则-检验QQ是否合法

    /* * 0不能开头,全数字,位数5-10位 * 123456 */ public static void checkQQ(){ String QQ = " 123456 "; / ...

  2. JavaScript----DOM和事件的简单学习

    ##DOM简单学习 *  功能:控制html文档的内容 *  代码:获取页面标签(元素)对象:Element *  document.getElementById("id值"):通 ...

  3. xmake v2.3.2 发布, 带来和ninja一样快的构建速度

    这个版本重点重构优化了下内部并行构建机制,实现多个target间源文件的并行编译,以及并行link的支持,同时优化了xmake的一些内部损耗,修复影响编译速度的一些bug. 通过测试对比,目前的整体构 ...

  4. GitHub 热点速览 Vol.13:近 40k star 计算机论文项目再霸 GitHub Trending 榜

    作者:HelloGitHub-小鱼干 摘要:"潮流是个轮回",这句话用来形容上周的 GitHub Trending 最贴切不过.无论是已经获得近 40k 的高星项目 Papers ...

  5. [暴力] Educational Codeforces Round 71 (Rated for Div. 2) B. Square Filling (1207B)

    题目:http://codeforces.com/contest/1207/problem/B   B. Square Filling time limit per test 1 second mem ...

  6. 将Mongodb的表导入到Hive中

    1.官方文档:https://docs.mongodb.com/ecosystem/tools/hadoop/ 2.Hive介绍: Hive特点: 1.hive是一个数据仓库,和oracle,mysq ...

  7. 报错代码:svn-http status413'requset entity too large

    报错代码:svn-http status413'requset entity too large 发现报错,判断问题.解决问题.记录问题. SVN服务器端排查过没有问题,其他客户端都能正常更新.只有一 ...

  8. 线程 -- ThreadLocal

    1,ThreadLocal 不是“本地线程”的意思,而是Thread 的局部变量.每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本 2, ...

  9. java程序:转化金额

    在处理财务账款时,需要将转账金额写成大写的.也就是说,如果要转账123456.00元,则需要写成“壹拾贰万叁仟肆佰伍拾陆元整”.所以常常需要通过程序控制自动进行转换.本实例实现了小写金额到大写金额的转 ...

  10. 改进ls的实现

    一.要求 参见附图,改进你的ls的实现.提交代码运行截图和码云链接 二.步骤 目录 ls 功能:列出目录内容,显示文件信息 ls -l:显示当前工作目录下包含目录及属性详细信息(共7列) 第一列:文件 ...