aboutsummaryrefslogtreecommitdiff
path: root/docker/crupest-nginx/sites/www/src/main.js
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2023-07-17 21:44:52 +0800
committercrupest <crupest@outlook.com>2023-07-17 21:44:57 +0800
commitdcc80565514de8a44b50984c427a873a1779490a (patch)
tree2e16f30872e1b74a31713326e060a0d599bc773c /docker/crupest-nginx/sites/www/src/main.js
parente006e3ce3a87fd122337ad00ee4fd08e58eddeea (diff)
downloadcrupest-dcc80565514de8a44b50984c427a873a1779490a.tar.gz
crupest-dcc80565514de8a44b50984c427a873a1779490a.tar.bz2
crupest-dcc80565514de8a44b50984c427a873a1779490a.zip
Slogan gets new animation. And color strip is now stripped.
Diffstat (limited to 'docker/crupest-nginx/sites/www/src/main.js')
-rw-r--r--docker/crupest-nginx/sites/www/src/main.js53
1 files changed, 27 insertions, 26 deletions
diff --git a/docker/crupest-nginx/sites/www/src/main.js b/docker/crupest-nginx/sites/www/src/main.js
index 5488581..04d7b6b 100644
--- a/docker/crupest-nginx/sites/www/src/main.js
+++ b/docker/crupest-nginx/sites/www/src/main.js
@@ -1,39 +1,40 @@
import "./style.css";
-const colorStripContainer = document.getElementById("color-strip-container");
+const happy = "happy";
+const angry = "angry";
-const colorStripText = "FANCYSTRIP";
-
-for (let i = 0; i < 10; i++) {
- const colorStripBlock = document.createElement("span");
-
- const hsl = `hsl(${i * 36}, 100%, 50%)`;
- colorStripBlock.classList.add("color-strip-block");
- colorStripBlock.style.backgroundColor = hsl;
- colorStripBlock.textContent = colorStripText[i];
- colorStripContainer.appendChild(colorStripBlock);
+function emotionOpposite(emotion) {
+ if (emotion === happy) {
+ return angry;
+ } else if (emotion === angry) {
+ return happy;
+ }
}
-/** @type {HTMLDivElement} */
-const sloganElement = document.querySelector("#slogan");
-const sloganTextElement = document.querySelector("#slogan .slogan-text");
+function emotionElement(emotion) {
+ return document.querySelector(`.slogan.${emotion}`);
+}
-/** @type {"good" | "bad"} */
-let sloganState = "good";
-const slogans = {
- "good": sloganTextElement.textContent,
- "bad": "The world is a piece of shit, so let's make it a little better!"
+function emotionElementHeight(emotion) {
+ return emotionElement(emotion).clientHeight;
}
-function toggleSlogan() {
- const newState = sloganState === "good" ? "bad" : "good";
- sloganElement.classList.remove(sloganState)
- sloganElement.classList.add(newState);
- sloganTextElement.textContent = slogans[newState];
- sloganState = newState;
+function setBodyPaddingForEmotion(emotion) {
+ document.body.style.paddingTop = `${emotionElementHeight(emotion)}px`;
}
-sloganElement.addEventListener("click", toggleSlogan);
+setBodyPaddingForEmotion(happy);
+
+/** @type {HTMLDivElement} */
+const sloganContainer = document.querySelector(".slogan-container")
+
+for (const emotion of [happy, angry]) {
+ emotionElement(emotion).addEventListener("click", () => {
+ const opposite = emotionOpposite(emotion);
+ sloganContainer.dataset.sloganEmotion = opposite;
+ setBodyPaddingForEmotion(opposite);
+ });
+}
document.addEventListener("DOMContentLoaded", async () => {