SVG – Learning by Coding
1:
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
2:
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
3:
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" [
4:
<!ATTLIST svg xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink">
5:
]>
6: 7:
<!-- SVG - Learning by Coding - http://www.datenverdrahten.de/svglbc/ -->
8:
<!-- Author: Dr. Thomas Meinike 07/04 - thomas@handmadecode.de -->
9: 10:
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
11:
onload="getSVGDoc(evt)">
12: 13:
<title>SVG - Learning by Coding</title>
14:
<desc>SVG-Spezifikation in Beispielen</desc>
15: 16:
<defs>
17: 18:
<style type="text/css">
19:
<![CDATA[
20: 21:
*
22:
{
23:
font-family: sans-serif;
24:
font-size: 12px;
25:
}
26: 27:
]]>
28:
</style>
29: 30: 31:
<script type="text/javascript">
32:
<![CDATA[
33: 34:
var svgdoc,box,laenge,zx,zy,zfarbe;
35: 36: 37:
function getSVGDoc(load_evt)
38:
{
39:
svgdoc=load_evt.target.ownerDocument;
40:
box=svgdoc.getElementById("box");
41:
}
42: 43: 44:
function CloneObj(click_evt,param)
45:
{
46:
var knoten;
47: 48:
knoten=click_evt.target.cloneNode(param);
49:
//*
50:
param:
51:
false = nur den aktuellen Knoten klonen (Kreis)
52:
true = Knoten mit allen Kindknoten klonen (Rechteck)
53:
*/
54: 55:
Zufallsdaten();
56: 57:
if(knoten.tagName=="circle")
58:
{
59:
knoten.setAttribute("cx",zx);
60:
knoten.setAttribute("cy",zy);
61:
knoten.setAttribute("r",laenge/2);
62:
}
63:
else if(knoten.tagName=="rect")
64:
{
65:
knoten.setAttribute("x",zx);
66:
knoten.setAttribute("y",zy);
67:
knoten.setAttribute("width",laenge);
68:
knoten.setAttribute("height",laenge);
69:
}
70: 71:
knoten.setAttribute("fill",Zufallsfarbe());
72:
knoten.setAttribute("stroke",Zufallsfarbe());
73:
knoten.removeAttribute("onclick");
74:
box.appendChild(knoten);
75:
}
76: 77: 78:
function Zufallsdaten()
79:
{
80:
var vonx,vony,bisx,bisy;
81: 82:
laenge=Math.round(5+45*Math.random());
83:
vonx=50+(laenge/2);
84:
vony=150+(laenge/2);
85:
bisx=500;
86:
bisy=400;
87: 88:
zx=Math.floor(vonx+(bisx-vonx+1)*Math.random());
89:
zy=Math.floor(vony+(bisy-vony+1)*Math.random());
90:
}
91: 92: 93:
function Zufallsfarbe()
94:
{
95:
var r,g,b,rgb;
96: 97:
r=Math.floor(Math.random()*256);
98:
g=Math.floor(Math.random()*256);
99:
b=Math.floor(Math.random()*256);
100:
rgb="rgb("+r+","+g+","+b+")";
101: 102:
return rgb;
103:
}
104: 105:
]]>
106:
</script>
107: 108:
</defs>
109: 110:
<text x="20" y="30" style="fill: #000; font-size: 24px">
111:
Grafikobjekte mit Methode cloneNode() erzeugen</text>
112: 113:
<circle id="kr" cx="30" cy="70" r="10" fill="#FC0"
114:
onclick="CloneObj(evt,false)"><!-- Kreis allein klonen -->
115:
<set attributeName="opacity" attributeType="XML" to="0.4" begin="mouseover"/>
116:
<set attributeName="opacity" attributeType="XML" to="1.0" begin="mouseout"/>
117:
<set attributeName="opacity" attributeType="XML" to="1.0" begin="click"/>
118:
</circle>
119: 120:
<rect id="re" x="60" y="60" width="20" height="20" fill="#00C"
121:
onclick="CloneObj(evt,true)"><!-- Rechteck mit set-Kindelementen klonen -->
122:
<set attributeName="opacity" attributeType="XML" to="0.4" begin="mouseover"/>
123:
<set attributeName="opacity" attributeType="XML" to="1.0" begin="mouseout"/>
124:
<set attributeName="opacity" attributeType="XML" to="1.0" begin="click"/>
125:
</rect>
126: 127:
<text x="20" y="110" fill="#000">Kreis oder Rechteck anklicken!
128:
<tspan fill="#F00">
129:
Der Kreis wird allein, das Rechteck mit set-Kindelementen geklont.
130:
</tspan>
131:
</text>
132: 133:
<g id="box">
134:
<rect x="20" y="130" width="520" height="320" fill="none" stroke="#999"/>
135:
</g>
136: 137:
</svg>
[zum Anfang]