<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-flat-20030114.dtd">
<svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" onload="Init(evt);"
onmousemove="drag(evt)"
onmouseup="drop(evt)"
onmousedown="cliquer(evt)" >
<script type="text/javascript"><![CDATA[
var dragTarget;
var bool = false;
var greenC;
var redC;
var line;
var x;
var y;
function Init(evt){
greenC = document.getElementById('greenC')
redC = document.getElementById('redC')
line = document.getElementById('line')
};
function drag(evt){
x = evt.clientX;
y = evt.clientY;
if(evt.target.nodeName == 'rect'){
var text = document.getElementById('text')
redC.setAttributeNS(null,'visibility','visible');
text.firstChild.nodeValue=evt.clientX+":"+evt.clientY;
if(dragTarget && (bool==true)){ // 已经压下 拖动rect
dragTarget.parentNode.appendChild(dragTarget);
dragTarget.setAttributeNS(null,'x',x-dragxWidth);
dragTarget.setAttributeNS(null,'y',y-dragyHeight);
}
} // else hidden
if(dragTarget && (bool==true) ){ //不为空
if(dragTarget.id == 'redC'){
dragTarget.parentNode.appendChild(dragTarget);
var points = line.getAttributeNS(null,'points').split(' ');
points[points.length-1] = x+","+y;
line.setAttributeNS(null,'points',points.join(' '));
redC.setAttributeNS(null,'cx',x);
redC.setAttributeNS(null,'cy',y);
}
}
}
function drop(evt){//当放下的时候 为 line多添加
bool = false;
if(dragTarget){ //不为空
if(dragTarget.id == 'redC'){
var line1 = line.getAttributeNS(null,'points').split(' ');
var linepoint = line.getAttributeNS(null,'points')+" "+line1[line1.length-1];
line.setAttributeNS(null,'points',linepoint);
//alert(linepoint);
}
}
}
var dragxWidth;
var dragyHeight;
function cliquer(evt){
bool = true;
dragTarget = evt.target;
dragxWidth = evt.clientX-dragTarget.getAttribute('x');
dragyHeight =evt.clientY-dragTarget.getAttribute('y');
}
]]></script>
<g>
<rect width="102" height="52" rx="5" ry="5" x="20" y="20" fill="white" stroke="rgb(99,99,99)" stroke-width="2"/>
<polyline id="line" points="102,250 102,250" style="stroke:rgb(99,99,99);stroke-width:2; fill:none"></polyline>
<circle id="redC" cx="102" cy="250" r="5" fill="red" visibility="hidden"></circle>
</g>
<text x="500" y="400" id="text" fill="red">拖动红色的圆点</text>
</svg>
分享到:
相关推荐
在SVG(可缩放矢量图形)中,线条和形状的描绘是通过stroke属性来控制的,其中stroke-width属性用于设定线条的宽度。然而,在某些情况下,设置stroke-width为1px时,线条在屏幕上实际显示可能会变得比预期更宽,看...
这篇文章“SVG 画动态线 实例”可能探讨了如何使用SVG元素和JavaScript来创建动态的线条动画。SVG提供了多种绘制线条的元素,如`<line>`、`<path>`或者`<polyline>`,每种都有其特定的应用场景。 1. `<line>`元素:...
分析这些源文件,我们可以学习如何创建和控制SVG元素,理解时间线和关键帧的概念,以及如何利用CSS3属性如`animation-duration`, `animation-delay`, `animation-direction`等来定制动画行为。 此外,SVG动画还可以...
总之,SVG画流程图是一个涉及图形绘制、事件处理和数据持久化等多个方面的综合任务。通过理解SVG的基本元素和属性,结合JavaScript的事件系统和DOM操作,我们可以创建出具有拖拽、修改和保存功能的交互式流程图。在...
TweenMax是一个强大的JavaScript动画库,提供了丰富的缓动函数和时间控制,可以轻松地对任何CSS属性、SVG属性或JavaScript对象进行平滑的动画处理。 jQuery是一个广泛使用的JavaScript库,简化了DOM操作、事件处理...
SVG(Scalable Vector Graphics)是一种基于XML的矢量图像格式,它允许在网页上创建和展示复杂的图形。本文将详细讲解如何使用SVG在一条直线上绘制中间的箭头。 首先,SVG的基本结构是由一系列的元素构成的,包括...
这将创建一个从(0,0)到(100,0)的线,然后向右上方偏移10单位形成箭头的尖端。 为了实现动画效果,我们还需要引入CSS3。在`css`文件中,我们可以定义关键帧动画(@keyframes)来控制箭头的运动轨迹。例如,可以设置...
SVG,全称Scalable Vector Graphics,是一种可缩放的矢量图形格式,常用于创建网页和应用程序中的高质量图形。这种格式与像素图形(如JPEG或PNG)不同,因为SVG图像在放大时不会失真,可以无限次地进行缩放而保持...
JavaScript与SVG结合,可以利用DOM(Document Object Model)操作SVG元素,动态改变它们的属性,如路径(path)、圆(circle)、线(line)等,从而创建出丰富的动画效果。例如,JavaScript可以修改时钟指针的角度来...
Vivus是一个轻量级的JavaScript库,能够使静态的SVG图形动起来,通过动态地绘制SVG路径来实现各种动画效果。 首先,我们要理解Vue组件的基本概念。在Vue中,组件是可复用的代码块,可以包含HTML、CSS和JavaScript。...
通过定义时间线、动画曲线等,可以创建复杂的SVG动画。 2. **CSS Animation**:CSS可以控制SVG元素的样式,通过关键帧动画(@keyframes)可以实现SVG的平滑过渡和变换。 3. **JavaScript库**:像Snap.svg、Paper....
虽然这个项目没有明确提及使用了哪个特定的库,但通常在创建这类动画时,开发者可能会使用如GreenSock (GSAP)、Snap.svg或者D3.js等JavaScript库来简化SVG动画的实现。这些库提供了强大的功能,如时间轴管理、缓动...
两个节点之间画线,使用SVG,案例建议使用webstorm打开,就不用自己另外启一个服务了,原本想使用LeaderLine, 但是LeaderLine的SVG全画在body上了,不满足要求,所以自己写了一个简单的,目前只是初版,只支持开始...
此外,还可以使用SMIL(Synchronized Multimedia Integration Language)来控制动画的时间线。 3. **CSS动画**:除了内联SVG中的动画,还可以通过CSS3的`@keyframes`规则来定义动画,然后应用到SVG元素上,实现更...
在本案例中,可能使用了`<animate>`元素来改变线的长度、宽度或颜色,模拟雨滴落下、云朵移动等天气现象。 3. JavaScript与SVG交互:在JavaScript中,我们可以使用`document.querySelector()`或`document....
SVG由一系列基本形状元素组成,如`<rect>`(矩形)、`<circle>`(圆形)、`<ellipse>`(椭圆)、`<line>`(线)、`<polygon>`(多边形)和`<path>`(路径)。这些元素通过属性如`x`, `y`, `width`, `height`, `r`, `...
SVG 线绘制 将您的 SVG 变成动画线条图 您可以使用此插件来创建很酷的“线条绘制到图像中”效果 用法 创建一个 SVG: 我强烈推荐使用来创建你的 SVG。 您需要使用矢量线绘制工具来构建您的形状。 此插件将自动绘制 ...
Vivus库利用SVG的这一特性,将其与JavaScript结合,为SVG图形添加动态效果,使静态的SVG图像栩栩如生。 Vivus库的特点在于其轻量化,这意味着它不会对网站性能产生显著影响,同时提供多种自定义选项,以满足不同...
在Android开发中,为了提供高质量、可缩放的图形,SVG(Scalable Vector Graphics)矢量图成为了不可或缺的一部分。SVG是一种基于XML的图形描述语言,它可以无损地缩放,无论是在小屏幕还是大屏幕上都能保持清晰度,...
SVG是一种基于XML的矢量图形标准,它允许在网页上创建清晰、可缩放的图形,而且这些图形可以与JavaScript交互,实现丰富的动画效果。 在这款特效中,SVG被用来绘制一系列圆形线条,这些线条作为轮播图分页导航的...