This commit is contained in:
Hazel Noack 2025-07-10 13:12:43 +02:00
commit a4ec4966d2
3 changed files with 97 additions and 80 deletions

View File

@ -6,24 +6,22 @@ body {
margin: 0; margin: 0;
height: 100vh; height: 100vh;
padding-left: auto;
padding-right: auto;
background-color: pink; background-color: pink;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
background: url("bg.svg") center center/auto repeat, linear-gradient( background:
to bottom, transparent, pink url("bg.svg") center center/auto repeat,
); linear-gradient(to bottom, transparent, pink);
} }
.search-grid { .search-grid {
margin-top: -10em; width: 100%;
width: 40em; margin-left: 10em;
height: 30em; margin-right: 10em;
display: grid; display: grid;
gap: 5em; gap: 5em;
@ -32,6 +30,8 @@ body {
} }
.search { .search {
width: 100%;
grid-row: 2; grid-row: 2;
grid-column: 1 / span 2; grid-column: 1 / span 2;
} }
@ -39,18 +39,23 @@ body {
.search-logo { .search-logo {
grid-row: 1; grid-row: 1;
height: 100%; height: 100%;
width: 100%;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
color: black; color: black;
} }
@media (min-height: 700px){ @media (max-height: 300px) {
.search-grid { .search-grid {
margin-top: 0; grid-template-rows: 4em;
}
.search-logo {
display: none;
} }
} }
@ -62,7 +67,7 @@ body {
} }
.card { .card {
background-color: rgba(255, 255, 255, .5); background-color: rgba(255, 255, 255, 0.5);
width: 10em; width: 10em;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
@ -85,5 +90,5 @@ body {
background-color: lightblue; background-color: lightblue;
padding: 1em; padding: 1em;
border-radius: .5em; border-radius: 0.5em;
} }

View File

@ -1,67 +1,79 @@
<!DOCTYPE html> <!doctype html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>{{ .PageTitle }}</title> <title>{{ .PageTitle }}</title>
<link rel="stylesheet" type="text/css" href="assets/style.css">
</head>
<body>
<form class="search-grid" action="{{ .SearchFormAction }}">
<div class="search-logo">
<img als="girl_juice" src="assets/girl_juice.png" />
<h2 class="phrases"></h2>
<img als="girl_juice" src="assets/girl_juice.png" />
</div>
<input name="{{ .SearchInputName }}" type="text" class="grid-item" class="search" placeholder="{{ .SearchPlaceholder }}" />
<link rel="stylesheet" type="text/css" href="assets/style.css"> <div class="store-cards">
</head> {{range $Store := .Stores }}
<body> <a target="_blank" href="{{ $Store.Url }}" class="card">
<form class="search-grid" action="{{ .SearchFormAction }}"> <h3>{{ $Store.Name }}</h3>
<div class="search-logo"> </a>
<img als="girl_juice" src="assets/girl_juice.png" /> {{- end }}
<h2 class="phrases"></h2> </div>
<img als="girl_juice" src="assets/girl_juice.png" /> </form>
</div>
<input name="{{ .SearchInputName }}" type="text" class="grid-item" class="search" placeholder="{{ .SearchPlaceholder }}" />
<div class="store-cards">
{{range $Store := .Stores }}
<a target="_blank" href="{{ $Store.Url }}" class="card">
<h3>{{ $Store.Name }}</h3>
</a>
{{- end }}
</div>
</form>
<script> <script>
const phrases = [ const phrases = [
{{range $Phrase := .HeaderPhrases }} {{range $Phrase := .HeaderPhrases }}
"{{ $Phrase }}", "{{ $Phrase }}",
{{- end }} {{- end }}
] ]
Array.from(document.querySelectorAll(".phrases")).forEach(element => { function setTitle(element, s, i) {
element.textContent = phrases[Math.floor(Math.random()*phrases.length)]; i++
}) element.textContent = s.substring(0, i)
document.addEventListener('DOMContentLoaded', function() { if (i >=s.length) return;
const marqueeElement = document.body; setTimeout(() => setTitle(element, s, i), 100);
let xPosition = 0;
let yPosition = 0;
const xSpeed = {{ .BackgroundScrollX }}; // Adjust speed here (lower is slower)
const ySpeed = {{ .BackgroundScrollY }};
function animateMarquee() {
xPosition -= xSpeed;
yPosition -= ySpeed;
// Reset position when the image has scrolled completely
if (Math.abs(xPosition) >= marqueeElement.offsetWidth) {
xPosition = 0;
}
if (Math.abs(yPosition) >= marqueeElement.offsetHeight) {
yPosition = 0;
}
marqueeElement.style.backgroundPosition = `${xPosition}px ${yPosition}px`;
requestAnimationFrame(animateMarquee);
} }
// Start the animation function titleChanger(element) {
animateMarquee(); setTitle(element, phrases[Math.floor(Math.random()*phrases.length)], 0);
}); setTimeout(() => titleChanger(element), 10000);
</script> }
</body>
Array.from(document.querySelectorAll(".phrases")).forEach(element => {
titleChanger(element);
})
document.addEventListener('DOMContentLoaded', function() {
const marqueeElement = document.body;
let xPosition = 0;
let yPosition = 0;
const xSpeed = {{ .BackgroundScrollX }}; // Adjust speed here (lower is slower)
const ySpeed = {{ .BackgroundScrollY }};
function animateMarquee() {
xPosition -= xSpeed;
yPosition -= ySpeed;
// Reset position when the image has scrolled completely
if (Math.abs(xPosition) >= marqueeElement.offsetWidth) {
xPosition = 0;
}
if (Math.abs(yPosition) >= marqueeElement.offsetHeight) {
yPosition = 0;
}
marqueeElement.style.backgroundPosition = `${xPosition}px ${yPosition}px`;
requestAnimationFrame(animateMarquee);
}
// Start the animation
animateMarquee();
});
</script>
</body>
</html> </html>

View File

@ -22,13 +22,13 @@ type RenderingConfig struct {
func DefaultRenderingConfig() RenderingConfig { func DefaultRenderingConfig() RenderingConfig {
return RenderingConfig{ return RenderingConfig{
HeaderPhrases: []string{ HeaderPhrases: []string{
"GirlJuice.Inject()", "GirlJuice.Inject();",
"Child.CrowdKill()", "Child.CrowdKill();",
"CopCar.Burn()", "CopCar.Burn();",
"You.Cute = true", "You.Cute = true;",
"You.Gay = true", "You.Gay = true;",
"Nazi.Punch()", "Nazi.Punch();",
"Dolls.GiveGuns()", "Dolls.GiveGuns();",
}, },
BackgroundScrollX: "1", BackgroundScrollX: "1",
BackgroundScrollY: "0", BackgroundScrollY: "0",