`
夕雨下
  • 浏览: 9830 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

SVG 画线

    博客分类:
  • SVG
阅读更多
<?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>
分享到:
评论
1 楼 夕雨下 2011-11-01  
首先要出发一下矩形的mouseover事件 ,再点击红色的按钮

相关推荐

    解决SVG画线line-polyline、矩形rect等线条的stroke-width=1px属性,显示结果变宽成为2px的问题,以及文字模糊的问题

    在SVG(可缩放矢量图形)中,线条和形状的描绘是通过stroke属性来控制的,其中stroke-width属性用于设定线条的宽度。然而,在某些情况下,设置stroke-width为1px时,线条在屏幕上实际显示可能会变得比预期更宽,看...

    SVG 画动态线 实例

    这篇文章“SVG 画动态线 实例”可能探讨了如何使用SVG元素和JavaScript来创建动态的线条动画。SVG提供了多种绘制线条的元素,如`&lt;line&gt;`、`&lt;path&gt;`或者`&lt;polyline&gt;`,每种都有其特定的应用场景。 1. `&lt;line&gt;`元素:...

    svg动画-源文件压缩包

    分析这些源文件,我们可以学习如何创建和控制SVG元素,理解时间线和关键帧的概念,以及如何利用CSS3属性如`animation-duration`, `animation-delay`, `animation-direction`等来定制动画行为。 此外,SVG动画还可以...

    svg 画流程图

    总之,SVG画流程图是一个涉及图形绘制、事件处理和数据持久化等多个方面的综合任务。通过理解SVG的基本元素和属性,结合JavaScript的事件系统和DOM操作,我们可以创建出具有拖拽、修改和保存功能的交互式流程图。在...

    HTML5 svg炫酷波浪线条动画插件

    TweenMax是一个强大的JavaScript动画库,提供了丰富的缓动函数和时间控制,可以轻松地对任何CSS属性、SVG属性或JavaScript对象进行平滑的动画处理。 jQuery是一个广泛使用的JavaScript库,简化了DOM操作、事件处理...

    svg画直线中间箭头

    SVG(Scalable Vector Graphics)是一种基于XML的矢量图像格式,它允许在网页上创建和展示复杂的图形。本文将详细讲解如何使用SVG在一条直线上绘制中间的箭头。 首先,SVG的基本结构是由一系列的元素构成的,包括...

    HTML5 SVG绘制线条箭头稳步上升动画特效

    这将创建一个从(0,0)到(100,0)的线,然后向右上方偏移10单位形成箭头的尖端。 为了实现动画效果,我们还需要引入CSS3。在`css`文件中,我们可以定义关键帧动画(@keyframes)来控制箭头的运动轨迹。例如,可以设置...

    基于SVG 的电子功能画板

    SVG,全称Scalable Vector Graphics,是一种可缩放的矢量图形格式,常用于创建网页和应用程序中的高质量图形。这种格式与像素图形(如JPEG或PNG)不同,因为SVG图像在放大时不会失真,可以无限次地进行缩放而保持...

    SVG动画图loading

    JavaScript与SVG结合,可以利用DOM(Document Object Model)操作SVG元素,动态改变它们的属性,如路径(path)、圆(circle)、线(line)等,从而创建出丰富的动画效果。例如,JavaScript可以修改时钟指针的角度来...

    一个封装了vivus的vue组件能够播放svg路径动画

    Vivus是一个轻量级的JavaScript库,能够使静态的SVG图形动起来,通过动态地绘制SVG路径来实现各种动画效果。 首先,我们要理解Vue组件的基本概念。在Vue中,组件是可复用的代码块,可以包含HTML、CSS和JavaScript。...

    SVG矢量动画

    通过定义时间线、动画曲线等,可以创建复杂的SVG动画。 2. **CSS Animation**:CSS可以控制SVG元素的样式,通过关键帧动画(@keyframes)可以实现SVG的平滑过渡和变换。 3. **JavaScript库**:像Snap.svg、Paper....

    html5 svg线条动态绘制iphone边框动画效果

    虽然这个项目没有明确提及使用了哪个特定的库,但通常在创建这类动画时,开发者可能会使用如GreenSock (GSAP)、Snap.svg或者D3.js等JavaScript库来简化SVG动画的实现。这些库提供了强大的功能,如时间轴管理、缓动...

    两个节点之间画线,使用SVG,案例建议使用webstorm打开,就不用自己另外启一个服务了

    两个节点之间画线,使用SVG,案例建议使用webstorm打开,就不用自己另外启一个服务了,原本想使用LeaderLine, 但是LeaderLine的SVG全画在body上了,不满足要求,所以自己写了一个简单的,目前只是初版,只支持开始...

    纯svg加载loading动画.zip

    此外,还可以使用SMIL(Synchronized Multimedia Integration Language)来控制动画的时间线。 3. **CSS动画**:除了内联SVG中的动画,还可以通过CSS3的`@keyframes`规则来定义动画,然后应用到SVG元素上,实现更...

    简易的天气图标svg动画.zip

    在本案例中,可能使用了`&lt;animate&gt;`元素来改变线的长度、宽度或颜色,模拟雨滴落下、云朵移动等天气现象。 3. JavaScript与SVG交互:在JavaScript中,我们可以使用`document.querySelector()`或`document....

    SVG动态画树

    SVG由一系列基本形状元素组成,如`&lt;rect&gt;`(矩形)、`&lt;circle&gt;`(圆形)、`&lt;ellipse&gt;`(椭圆)、`&lt;line&gt;`(线)、`&lt;polygon&gt;`(多边形)和`&lt;path&gt;`(路径)。这些元素通过属性如`x`, `y`, `width`, `height`, `r`, `...

    jquery-svg-line-draw:用于动画绘制 SVG 路径的 JQuery 插件

    SVG 线绘制 将您的 SVG 变成动画线条图 您可以使用此插件来创建很酷的“线条绘制到图像中”效果 用法 创建一个 SVG: 我强烈推荐使用来创建你的 SVG。 您需要使用矢量线绘制工具来构建您的形状。 此插件将自动绘制 ...

    HTML5 SVG图形轮廓线条绘制动画插件-vivus

    Vivus库利用SVG的这一特性,将其与JavaScript结合,为SVG图形添加动态效果,使静态的SVG图像栩栩如生。 Vivus库的特点在于其轻量化,这意味着它不会对网站性能产生显著影响,同时提供多种自定义选项,以满足不同...

    动画图svg的实现

    在Android开发中,为了提供高质量、可缩放的图形,SVG(Scalable Vector Graphics)矢量图成为了不可或缺的一部分。SVG是一种基于XML的图形描述语言,它可以无损地缩放,无论是在小屏幕还是大屏幕上都能保持清晰度,...

    HTML5 SVG线条变形动画特效

    SVG是一种基于XML的矢量图形标准,它允许在网页上创建清晰、可缩放的图形,而且这些图形可以与JavaScript交互,实现丰富的动画效果。 在这款特效中,SVG被用来绘制一系列圆形线条,这些线条作为轮播图分页导航的...

Global site tag (gtag.js) - Google Analytics