-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
61 lines (47 loc) Β· 1.82 KB
/
script.js
File metadata and controls
61 lines (47 loc) Β· 1.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
let main = document.getElementsByTagName("main")[0];
let header = document.getElementsByTagName("header")[0];
let trailingLength = document.getElementById("trailingLength");
let numberOfDots = document.getElementById("numberOfDots");
let circleSize = document.getElementById("circleSize");
let disappearAfter = 300; // circles will disappear after n seconds β
// propotional to trailing length
let appearAfter = 50; // circles with appear after n seconds β inverse to number of dots
let CIRCLE_DIAMETER = 1.5; // rem
let setToDefault = () => {
disappearAfter = 300;
appearAfter = 50;
CIRCLE_DIAMETER = 1.5;
};
let createElement = (x = window.innerWidth / 2, y = window.innerHeight / 2) => {
let newItem = document.createElement("div");
newItem.classList.add("item");
newItem.style.setProperty("top", `calc(${y}px - ${CIRCLE_DIAMETER / 2}rem`);
newItem.style.setProperty("left", `calc(${x}px - ${CIRCLE_DIAMETER / 2}rem`);
newItem.style.setProperty("width", `${CIRCLE_DIAMETER}rem`);
newItem.style.setProperty("height", `${CIRCLE_DIAMETER}rem`);
main.appendChild(newItem);
setTimeout(() => main.removeChild(newItem), disappearAfter);
};
let handleMouseMove = (e) => {
createElement(e.x, e.y);
removeListener();
};
let removeListener = () => {
main.removeEventListener("mousemove", handleMouseMove);
setTimeout(() => addListener(), appearAfter);
};
let addListener = () => {
main.addEventListener("mousemove", handleMouseMove);
};
setToDefault();
addListener();
header.addEventListener("mouseover", () => removeListener());
circleSize.addEventListener("change", () => {
CIRCLE_DIAMETER = circleSize.value / 2;
});
trailingLength.addEventListener("change", () => {
disappearAfter = trailingLength.value;
});
numberOfDots.addEventListener("change", () => {
appearAfter = numberOfDots.max - numberOfDots.value;
});