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
在一些现代的扁平化设计网站,特别是移动端网站,经常会包含许多简单而清晰的小图标,例如网站图标.用户的默认头像.移动端网页首页底部固定的切换栏等,这些小图标一般都是由美工做好,可能会放到精灵图上,前端再 ...
随机推荐
- css3笔记系列-3.css中的各种选择器详解,不看后悔系列
点击上方蓝色字体,关注我 最详细的css3选择器解析 选择器是什么? 比较官方的解释:在 CSS 中,选择器是一种模式,用于选择需要添加样式的元素. 最常见的 CSS 选择器是元素选择器.换句话说 ...
- The import org.springframework cannot be resolved
刚开始学spring框架时import org.springframework.context.support.ClassPathXmlApplicationContext;报错 我建的是maven项 ...
- [暴力枚举]Codeforces Vanya and Label
Vanya and Label time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...
- 家乐的深度学习笔记「4」 - softmax回归
目录 softmax回归 分类问题 softmax回归模型 softmax运算 矢量表达式 单样本分类的矢量计算表达式 小批量样本分类的矢量计算表达式 交叉熵损失函数 模型预测及评价 图像分类数据集( ...
- 2020年PHP 面试问题(二)
一.什么是 CGI?什么是 FastCGI?php-fpm,FastCGI,Nginx 之间是什么关系? CGI,通用网关接口,用于WEB服务器和应用程序间的交互,定义输入输出规范,用户的请求通过WE ...
- 什么是CPU load
最近经常收到告警,CPU load大于阈值告警.查看系统的CPU是12核,告警阈值设置的是8.对于CPU load一直有个模糊的概念,具体是什么意思还真搞不明白,趁这个机会好好搞搞究竟. 1.查看CP ...
- 最新SCI影响因子发布!Nature屠榜,AI领域Top 1000期刊盘点
[导读]2018年度SCI期刊影响因子最新发布,Nature.Science.Cell三大神刊排名前列.新智元摘取其中有关人工智能.机器学习.计算机视觉.机器人学等领域的期刊并做简要介绍,希望对读者选 ...
- spring boot 源码赏析之事件监听
使用spring Boot已经快1年多了,期间一直想点开springboot源码查看,但由于种种原因一直未能如愿(主要是人类的惰性...),今天就拿springboot 的监听事件祭刀. spring ...
- Java常用类__装箱/拆箱
以下是常用的各两种方法(各类提供了构造方法,静态方法) 一.基本数据类型 转化为 包装类(装箱) 例:int i=10: Integer num=i;//num=10 二.包装类 转化为 基本数据类 ...
- 使用vue-cli脚手架创建vue项目
使用vue-cli脚手架创建vue项目 首先,你已经安装了node. 使用vue-cli@2 创建项目 执行 命令: npm i -g vue-cli@2 //全局安装vue-cli@2脚手架 : v ...