Skip to content

Commit 8bef957

Browse files
committed
event handling
1 parent a1ef21c commit 8bef957

File tree

3 files changed

+118
-0
lines changed

3 files changed

+118
-0
lines changed

15. Event Handling/1. Balloon.html

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
2+
<p>🎈</p>
3+
4+
<script>
5+
let p = document.querySelector("p");
6+
let size;
7+
function setSize(newSize) {
8+
size = newSize;
9+
p.style.fontSize = size + "px";
10+
}
11+
setSize(20);
12+
13+
function arrowKey(e) {
14+
if (e.key == "ArrowUp") {
15+
if (size > 70) {
16+
p.textContent = "💥";
17+
document.body.removeEventListener("keydown", arrowKey);
18+
} else {
19+
setSize(size * 1.1);
20+
e.preventDefault();
21+
}
22+
} else if (e.key == "ArrowDown") {
23+
setSize(size * 0.9);
24+
e.preventDefault();
25+
}
26+
}
27+
document.body.addEventListener("keydown", arrowKey);
28+
</script>

15. Event Handling/2. Mousetrail.html

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
6+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
7+
<title>Document</title>
8+
</head>
9+
<body>
10+
<!doctype html>
11+
12+
<style>
13+
.trail { /* className for the trail elements */
14+
position: absolute;
15+
height: 6px; width: 6px;
16+
border-radius: 3px;
17+
background: orange;
18+
}
19+
body {
20+
height: 500px;
21+
}
22+
</style>
23+
24+
<script>
25+
let dots = [];
26+
for (let i = 0; i < 12; i++) {
27+
let node = document.createElement("div");
28+
node.className = "trail";
29+
document.body.appendChild(node);
30+
dots.push(node);
31+
}
32+
33+
let currentDot = 0;
34+
35+
window.addEventListener("mousemove", event => {
36+
let dot = dots[currentDot];
37+
dot.style.left = (event.pageX - 3) + "px";
38+
dot.style.top = (event.pageY - 3) + "px";
39+
currentDot = (currentDot + 1) % dots.length;
40+
});
41+
</script>
42+
</body>
43+
</html>

15. Event Handling/3. Tabs.html

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
4+
<head>
5+
<meta charset="UTF-8">
6+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
7+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
8+
<title>Document</title>
9+
</head>
10+
11+
<body>
12+
13+
<tab-panel>
14+
<div data-tabname="one">Tab one</div>
15+
<div data-tabname="two">Tab two</div>
16+
<div data-tabname="three">Tab three</div>
17+
</tab-panel>
18+
<script>
19+
function asTabs(node) {
20+
let tabs = Array.from(node.children).map(node => {
21+
let button = document.createElement("button");
22+
button.textContent = node.getAttribute("data-tabname");
23+
let tab = { node, button };
24+
button.addEventListener("click", () => selectTab(tab));
25+
return tab;
26+
});
27+
28+
let tabList = document.createElement("div");
29+
for (let { button } of tabs) tabList.appendChild(button);
30+
node.insertBefore(tabList, node.firstChild);
31+
32+
function selectTab(selectedTab) {
33+
for (let tab of tabs) {
34+
let selected = tab == selectedTab;
35+
tab.node.style.display = selected ? "" : "none";
36+
tab.button.style.color = selected ? "red" : "";
37+
}
38+
}
39+
selectTab(tabs[0]);
40+
}
41+
42+
asTabs(document.querySelector("tab-panel"));
43+
</script>
44+
45+
</body>
46+
47+
</html>

0 commit comments

Comments
 (0)