JSDM

HTML

 
1
<body style="background-color:gray;">
2
    <button onclick="toggle()">Controller</button>
3
    <div id="controller" style="visibility:hidden;">
4
    <div class="slider">
5
    <h3>Number of Triangles<h3>
6
    1
7
    <input id="number" type="range" min="2" max="51" value="10"> 50
8
    <p id="number_result">10</p>
9
    </div>
10
    <div class="slider">
11
    <h3>Size of Triangles<h3>
12
    50
13
    <input id="size" type="range" step="10" min="50" max="200" value="120"> 200
14
    <p id="size_result">120</p>
15
    </div>
16
    <div class="slider">
17
    <h3>Width of Borders<h3>
18
    1
19
    <input id="width" type="range" step="1" min="1" max="10" value="3"> 10
20
    <p id="width_result">3</p>
21
    </div>
22
    <div class="slider">
23
    <h3>Number of Rotations<h3>
24
    -10
25
    <input id="speed" type="range" step="1" min="-10" max="10" value="1"> 10
26
    <p id="speed_result">1</p>
27
    </div>
28
    </div>
29
    <div id="whole">
30
    </div>

CSS

xxxxxxxxxx
53
 
1
body {
2
    background-color:gray;
3
    }
4
    * {
5
    font-family: Arial;
6
    }
7
    svg {
8
    position:absolute;
9
    }
10
    h2, h3 {
11
    text-align: center;
12
    }
13
    button {
14
    float: right;
15
    clear: both;
16
    cursor: pointer;
17
    width: 80px;
18
    margin: 8px;
19
    height: 30px;
20
    margin-right: 0px;
21
    font-weight: bold;
22
    background-color: black;
23
    color:white;
24
    }
25
    #controller {
26
    clear:both;
27
    float: right;
28
    color: white;
29
    background-color: black;
30
    width: 220px;
31
    height: 480px;
32
    border: 1px solid white;
33
    padding: 8px;
34
    }
35
    #number_result, #speed_result, #size_result, #width_result {
36
    font-size: 15px;
37
    text-align: center;
38
    }
39
    #whole {
40
    position: fixed;
41
    top: 50%;
42
    left: 50%; 
43
    margin-top:-480px;
44
    margin-left:-400px;
45
/*    width: 2000px;
46
    height: 2000px;*/
47
    }
48
    .slider {
49
    color: black;
50
    background-color: gray;
51
    font-size: 12px;
52
    border: 1px solid white;
53
    }
? ?
? ?
必须是有效的URL
+ 添加另一个资源

JS

x
 
1
// there is a color effect inside. play around with it to see the effect.
2
3
// variables to manipulate the spiral
4
    var number = 10,
5
        speed = 10,
6
        color = "black",
7
        border_color = "white",
8
        border_width = "3",
9
        base = 120,
10
        height = base*Math.sqrt(3)/2,
11
        vertex = "400,420";
12
   
13
     // number of triangles slider
14
     document.getElementById("number").addEventListener("input", function() {
15
     number = document.getElementById("number").value;
16
     document.getElementById("number_result").innerHTML = (number-1);
17
     clear();
18
     set();
19
     }, false);
20
21
     // number of rotations slider
22
     document.getElementById("speed").addEventListener("input", function() {
23
     speed = (document.getElementById("speed").value*10);
24
     document.getElementById("speed_result").innerHTML = (speed/10);
25
     clear();
26
     set();
27
     }, false);
28
29
     // size of triangles slider
30
     document.getElementById("size").addEventListener("input", function() {
31
     base = document.getElementById("size").value;
32
     height = base*Math.sqrt(3)/2;
33
     vertex_x = parseInt(vertex.split(",")[0]);
34
     vertex_y = parseInt(vertex.split(",")[1]);
35
     l_side = (vertex_x-base/2)+","+(vertex_y+height);
36
     r_side = (vertex_x+base/2)+","+(vertex_y+height);
37
     center_x = vertex_x+"px";
38
     center_y = vertex_y+height*2/3+"px";
39
     document.getElementById("size_result").innerHTML = base;
40
     clear();
41
     set();
42
     }, false);
43
44
    // width of triangles borders slider
45
     document.getElementById("width").addEventListener("input", function() {
46
     border_width = (document.getElementById("width").value).toString();
47
     document.getElementById("width_result").innerHTML = border_width;
48
     clear();
49
     set();
50
     }, false);
51
52
    // controller dropdown
53
    function toggle() {
54
    var control = document.getElementById("controller");
55
    control.style.visibility = (control.style.visibility === "hidden") ? "visible" : "hidden";
56
    }
57
58
    // for internal calculation variables
59
    var vertex_x = parseInt(vertex.split(",")[0]),
60
        vertex_y = parseInt(vertex.split(",")[1]),
61
        l_side = (vertex_x-base/2)+","+(vertex_y+height),
62
        r_side = (vertex_x+base/2)+","+(vertex_y+height),
63
        center_x = vertex_x+"px",
64
        center_y = vertex_y+height*2/3+"px"; 
65
66
    // triangles function to be called
67
    function triangles (i)
68
    {
69
    // svg element
70
    var svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
71
    svg.setAttribute("width", "800");
72
    svg.setAttribute("height", "800");
73
    svg.setAttribute("id", "svg"+i);
74
    document.getElementById("whole").appendChild(svg);
75
76
    // polygon element
77
    var polygon = document.createElementNS("http://www.w3.org/2000/svg","polygon");
78
    polygon.setAttribute("points", vertex+" "+r_side+" "+l_side);
79
    polygon.setAttribute("id", "tri"+i);
80
    polygon.style.fill=color;
81
    polygon.style.stroke = border_color;
82
    polygon.setAttribute("stroke-width",border_width);
83
    //polygon.setAttribute("stroke-dasharray","20,10,5,5,5,10");
84
    //polygon.setAttribute("stroke-linecap","round");
85
    document.getElementById("svg"+i).appendChild(polygon);
86
87
    // color animation element
88
    var attr = "stroke,fill",
89
        color_from = "white,none",
90
        color_to = "white,none",
91
        duration = "1s,1s",
92
        repeat = "indefinite,indefinite"; 
93
    for (var r = 0; r < 2; r++) {
94
    var animate = document.createElementNS("http://www.w3.org/2000/svg","animate");
95
    animate.setAttribute("attributeName", attr.split(",")[r]);
96
    animate.setAttribute("repeatCount", repeat.split(",")[r]);
97
    animate.setAttribute("dur", duration.split(",")[r]);
98
    animate.setAttribute("from", color_from.split(",")[r]);
99
    animate.setAttribute("to", color_to.split(",")[r]);
100
    animate.setAttribute("begin", (i-1)/number+"s");
101
    document.getElementById("tri"+i).appendChild(animate);
102
    }
103
104
    // css transform animations
105
    var x = i*12*speed, y = i*24*speed, z = i*36*speed;
106
    var prefixes = " ,-webkit-,-moz-";
107
    // insert the css transform for different vendors
108
    //for ( var k = 0; k < prefixes.split(",").length; k++)
109
    //{
110
    //var prefix = prefixes.split(",")[k];
111
    prefix = "-webkit-";
112
    polygon.style[prefix +'animation'] = 'anim'+i+' '+number+'s infinite';
113
    polygon.style[prefix +'transform-origin'] = center_x+" "+center_y;
114
    polygon.style[prefix +'animation-timing-function'] = 'ease-in-out';
115
116
    var scale = 'scale('+(2*((number-i+1)/number))+')';
117
    var keyframes = '@' + prefix + 'keyframes anim'+i+' { '+
118
                    '0% {' + prefix + 'transform: rotate( 0deg ) '+scale+'; } '+
119
                    '30% {' + prefix + 'transform: rotate( '+x+'deg ) '+scale+'; } '+
120
                    '33% {' + prefix + 'transform: rotate( '+x+'deg ) '+scale+'; } '+
121
                    '63% {' + prefix + 'transform: rotate( '+y+'deg ) '+scale+'; } '+
122
                    '66% {' + prefix + 'transform: rotate( '+y+'deg ) '+scale+'; } '+
123
                    '100% {' + prefix + 'transform: rotate( '+z+'deg ) '+scale+'; } '+
124
                  '}';
125
126
    document.styleSheets[0].insertRule(keyframes, 0);
127
    //}
128
    }
129
130
    // call the set function
131
    set();
132
133
    // call the triangles function
134
    function set() {
135
    for (var i = 1; i < number; i++)
136
    triangles(i);
137
    }
138
139
    // clear the page
140
    function clear() {
141
    var node = document.getElementById("whole");
142
    while (node.firstChild)
143
    {
144
    node.removeChild(node.firstChild);
145
    document.styleSheets[0].deleteRule(0);
146
    }
147
    }
必须是有效的URL
+ 添加另一个资源
Close

文件管理 点击文件查看URL

图片

  1. 暂无文件

CSS

  1. 暂无文件

JavaScript

  1. 暂无文件

其他

  1. 暂无文件
拖动文件到上面的区域或者:
加载中 ..................