commit 0196de9615343a5d7325baba9e9c5c6e9d287135
parent 1e2fc11f2978cda7a238f41ff93180d0721f3d62
Author: knutsen <samuel@knutsen.co>
Date: Fri, 2 Jul 2021 00:10:41 +0100
Smooth load mascots, noscript makes them always visible.
Diffstat:
9 files changed, 61 insertions(+), 47 deletions(-)
diff --git a/public/image.js b/public/image.js
@@ -1,31 +1,33 @@
-const YUI_COUNT = 17;
-const NOVELTY = [11, 15, 16];
-
-const mascot = document.getElementById("mascot");
-const favicon = document.querySelector("link[rel~='icon']");
-mascot.style.opacity = 0;
-
-const randomYui = (excludeList=[]) => {
- if (!Array.isArray(excludeList))
- excludeList = [];
- const picks = [...new Array(YUI_COUNT)]
- .map((_, i) => i + 1)
- .filter(e => !excludeList.includes(e));
- const pick = picks[Math.floor(Math.random() * picks.length)];
- const stem = "/mascots/" + pick;
- mascot.style.opacity = 0;
- mascot.setAttribute("src", stem + ".png");
- favicon.setAttribute("href", stem + "-square.png");
-
- const loaded = () => { mascot.style.opacity = .85 };
- if (mascot.complete) loaded();
- else mascot.addEventListener('load', loaded);
-
- useColourScheme({
- 11: 'pink',
- 15: 'green',
- 16: 'rainbow'
- }[pick] || 'default');
-}
-
-mascot.addEventListener("click", randomYui)
+const MASCOT_COUNT = 17;
+const MASCOTS = [...new Array(MASCOT_COUNT)].map((_, i) => i + 1)
+const NOVELTY = [11, 15, 16]; //< Novelty/special mascots.
+
+const mascot = document.getElementById("mascot");
+const favicon = document.querySelector("link[rel~='icon']");
+
+const setMascot = (pick) => {
+ const stem = `/mascots/${pick}`;
+ mascot.style.opacity = 0;
+ mascot.setAttribute('src', `${stem}.png`);
+ favicon.setAttribute('href', `${stem}-square.png`);
+
+ const loaded = () => { mascot.style.opacity = .85 };
+ if (mascot.complete) loaded();
+ else mascot.addEventListener('load', loaded);
+}
+
+const randomMascot = (excludeList=[]) => {
+ if (!Array.isArray(excludeList)) excludeList = [];
+
+ const picks = MASCOTS.filter(e => !excludeList.includes(e));
+ const pick = picks[Math.floor(Math.random() * picks.length)];
+ setMascot(pick);
+
+ useColourScheme({
+ 11: 'pink',
+ 15: 'green',
+ 16: 'rainbow'
+ }[pick] || 'default');
+}
+
+mascot.addEventListener('click', randomMascot)
diff --git a/public/style.css b/public/style.css
@@ -163,6 +163,7 @@ pre code {
}
#mascot {
+ opacity: 0; /* before load */
max-height: var(--mascot-height);
max-width: var(--mascot-max-width);
position: fixed;
@@ -217,6 +218,8 @@ h1 {
color: black;
text-align: center;
font-variant: small-caps;
+ filter: drop-shadow(0px 0px 3px #0002);
+ text-shadow: 1.3pt 1.3pt #6800ff52;
}
li {
diff --git a/static/404.html b/static/404.html
@@ -40,6 +40,7 @@
transform: translateX(-50%);
}
</style>
+ <noscript><style>#mascot { opacity: 0.85; }</style></noscript>
<img src="/mascots/17.png" id="mascot"></img>
<script src="colours.js"></script>
<script src="image.js"></script>
diff --git a/static/books.html b/static/books.html
@@ -4,7 +4,7 @@
<head>
<title>Shimo!!</title>
<link rel='stylesheet' type='text/css' href="style.css"/>
- <link rel='icon' type='image/png' href="/mascots/1-square.png">
+ <link rel='icon' type='image/png' href="/mascots/2-square.png">
<link rel="preload" as="image" href="/background-300x300.png">
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
@@ -27,9 +27,10 @@
</div>
- <img src="/mascots/1.png" id="mascot"></img>
+ <noscript><style>#mascot { opacity: 0.85; }</style></noscript>
+ <img src="/mascots/2.png" id="mascot"></img>
<script src="colours.js"></script>
<script src="image.js"></script>
- <script>randomYui(NOVELTY);</script>
+ <script>randomMascot(NOVELTY);</script>
</body>
</html>
diff --git a/static/index.html b/static/index.html
@@ -21,6 +21,8 @@
<div class="titleButton"><a href="/books">Bøker</a></div>
</div>
+ <noscript><p>Welcome, Based JavaScript Hater.</p></noscript>
+
<p>Hei, jeg heter Shimo, jeg studerer fysikk og kjemi på universitet.
Jeg liker å lese (favoritten min er Kafka) og spile gitar.
Waifuen min er Yui, selvfølgelig.
@@ -44,9 +46,10 @@
</ol>
</div>
+ <noscript><style>#mascot { opacity: 0.85; }</style></noscript>
<img src="/mascots/1.png" id="mascot"></img>
<script src="colours.js"></script>
<script src="image.js"></script>
- <script>randomYui(NOVELTY);</script>
+ <script>randomMascot(NOVELTY);</script>
</body>
</html>
diff --git a/static/music.html b/static/music.html
@@ -4,7 +4,7 @@
<head>
<title>Musik!!</title>
<link rel='stylesheet' type='text/css' href="style.css"/>
- <link rel='icon' type='image/png' href="/mascots/1-square.png">
+ <link rel='icon' type='image/png' href="/mascots/3-square.png">
<link rel="preload" as="image" href="/background-300x300.png">
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
@@ -52,9 +52,10 @@
</div>
- <img src="/mascots/1.png" id="mascot"></img>
+ <noscript><style>#mascot { opacity: 0.85; }</style></noscript>
+ <img src="/mascots/3.png" id="mascot"></img>
<script src="colours.js"></script>
<script src="image.js"></script>
- <script>randomYui(NOVELTY);</script>
+ <script>randomMascot(NOVELTY);</script>
</body>
</html>
diff --git a/static/norsk.html b/static/norsk.html
@@ -4,7 +4,7 @@
<head>
<title>Shimo!!</title>
<link rel='stylesheet' type='text/css' href="style.css"/>
- <link rel='icon' type='image/png' href="/mascots/1-square.png">
+ <link rel='icon' type='image/png' href="/mascots/4-square.png">
<link rel="preload" as="image" href="/background-300x300.png">
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
@@ -28,9 +28,10 @@
</div>
- <img src="/mascots/1.png" id="mascot"></img>
+ <noscript><style>#mascot { opacity: 0.85; }</style></noscript>
+ <img src="/mascots/4.png" id="mascot"></img>
<script src="colours.js"></script>
<script src="image.js"></script>
- <script>randomYui(NOVELTY);</script>
+ <script>randomMascot(NOVELTY);</script>
</body>
</html>
diff --git a/static/school.html b/static/school.html
@@ -4,7 +4,7 @@
<head>
<title>Shimo!!</title>
<link rel='stylesheet' type='text/css' href="style.css"/>
- <link rel='icon' type='image/png' href="/mascots/1-square.png">
+ <link rel='icon' type='image/png' href="/mascots/5-square.png">
<link rel="preload" as="image" href="/background-300x300.png">
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
@@ -27,9 +27,10 @@
</div>
- <img src="/mascots/1.png" id="mascot"></img>
+ <noscript><style>#mascot { opacity: 0.85; }</style></noscript>
+ <img src="/mascots/5.png" id="mascot"></img>
<script src="colours.js"></script>
<script src="image.js"></script>
- <script>randomYui(NOVELTY);</script>
+ <script>randomMascot(NOVELTY);</script>
</body>
</html>
diff --git a/templates/guestbook.html b/templates/guestbook.html
@@ -92,7 +92,7 @@
</style>
<link rel='stylesheet' type='text/css' href="style.css"/>
- <link rel='icon' type='image/png' href="/mascots/1-square.png">
+ <link rel='icon' type='image/png' href="/mascots/8-square.png">
<link rel="preload" as="image" href="/background-300x300.png">
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
@@ -178,9 +178,10 @@
{% endif %}
</div>
- <img src="mascots/1.png" id="mascot"></img>
+ <noscript><style>#mascot { opacity: 0.85; }</style></noscript>
+ <img src="mascots/8.png" id="mascot"></img>
<script src="colours.js"></script>
<script src="image.js"></script>
- <script>randomYui();</script>
+ <script>randomMascot(NOVELTY);</script>
</body>
</html>