From c6673ca24c6dea9d7f27210e556b4ed4b2255f47 Mon Sep 17 00:00:00 2001 From: bucketfishy Date: Sat, 16 Nov 2024 15:19:18 +0800 Subject: [PATCH] thatfishhouse project --- projects/thatfishhouse/assets/cursor_fish.png | Bin 0 -> 13868 bytes projects/thatfishhouse/index.html | 93 +++++++++ projects/thatfishhouse/script.js | 110 ++++++++++ projects/thatfishhouse/style.css | 195 ++++++++++++++++++ 4 files changed, 398 insertions(+) create mode 100644 projects/thatfishhouse/assets/cursor_fish.png create mode 100644 projects/thatfishhouse/index.html create mode 100644 projects/thatfishhouse/script.js create mode 100644 projects/thatfishhouse/style.css diff --git a/projects/thatfishhouse/assets/cursor_fish.png b/projects/thatfishhouse/assets/cursor_fish.png new file mode 100644 index 0000000000000000000000000000000000000000..cb5a88c64f17cf70160cab2dafa73a574cc650a0 GIT binary patch literal 13868 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 literal 0 HcmV?d00001 diff --git a/projects/thatfishhouse/index.html b/projects/thatfishhouse/index.html new file mode 100644 index 0000000..28bcc6b --- /dev/null +++ b/projects/thatfishhouse/index.html @@ -0,0 +1,93 @@ + + + + + fish + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+

fish

+

fish

+

fish

+

fish

+

fish

+

fish

+

fish

+

fish

+

fish

+

fish

+

fish

+

fish

+

fish

+

fish

+
+
+ + + + +
+
+

that
fish
house

+

🐟

+
+

thatfishhouse is an experiment in design by bucketfish. please enjoy this little goofy place.

+

this design is inspired by something i saw at the airport

+
+
+

fresh fish daily

+ +

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

+
+ +
+

really cute fish too.

+
    +
  1. they have big eyes
  2. +
  3. they are not creepy
  4. +
  5. they like to sleep!
  6. +
+

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

+
+

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

+ +
+ +
+ + + +
+ + + + + + + diff --git a/projects/thatfishhouse/script.js b/projects/thatfishhouse/script.js new file mode 100644 index 0000000..10bfad8 --- /dev/null +++ b/projects/thatfishhouse/script.js @@ -0,0 +1,110 @@ +var fish = document.getElementById("cursor_fish") + +var fishleft = 50; +var fishtop = 50; +var fishrot = 0; + +var fishmovemax = 20; // (10^2 + 10^2) +var fishrotmax = 0.1; + +var currentX = 0; +var currentY = 0; + +function rotate_fish() { + + let newrot = Math.atan( (currentX-fishleft) / -(currentY - fishtop)); + if (currentY >= fishtop) { + newrot = Math.PI + newrot + } + + // newrot = normalise_rotation(newrot) + + var newnewrot = Math.min(Math.abs(newrot), fishrotmax); + if (newrot >= fishrot) {} + else {newnewrot = -newnewrot} + + fishrot += newnewrot + + fishrot = normalise_rotation(fishrot) + + // if (fishrot < 0) {fishrot = 2 * Math.PI - fishrot} + // if (fishrot > 2 * Math.PI) {fishrot -= Math.PI} + fish.style.rotate = fishrot + "rad"; + + setTimeout("rotate_fish()", 40); +} + +function normalise_rotation(rot) { + if (rot < 0) {return 2 * Math.PI - rot} + else if (rot > 2 * Math.PI) {return rot - 2 * Math.PI} + else { return rot } +} + +rotate_fish() + +window.addEventListener("mousemove", (e) => { + // console.log(fish.style.left) + + currentX = e.clientX; + currentY = e.clientY; + + // calculate rotation of fish + + // console.log(newrot); + // let rotate_size = 0; + // + // if (Math.abs(fishrot - newrot) < fishrotmax) { + // rotate_size = newrot - fishrot; + // } + // + // else { + // rotate_size = fishrotmax; + // } + // + // if (newrot > 0) { + // fish.style.rotate = fishrot + rotate_size + "rad"; + // fishrot += rotate_size; + // } + // else { + // // console.log("?") + // fish.style.rotate = fishrot - rotate_size + "rad"; + // fishrot -= rotate_size; + // } + + // fishrot = fish.style.rotate; + + // console.log(fish.style.rotate) + + // let move_size = Math.min((currentX-fishleft) * (currentX-fishleft) + (currentY - fishtop) * (currentY - fishtop), fishmovemax) + + // fishleft += Math.cos(fishrot) * fishmovemax; + // fishtop += Math.sin(fishrot) * fishmovemax; + // fish.style.left = fishleft + "px"; + // fish.style.top = fishtop + "px"; + + + // fish.style.left = currentX + "px"; + // fish.style.top = currentY + "px"; + // + // bodyRect = document.body.getBoundingClientRect(), + // rect = canvas.getBoundingClientRect(), + // offset = rect.top - bodyRect.top; + // + // + // if(prevX == null || prevY == null || !draw){ + // prevX = e.clientX + window.pageXOffset - rect.left + // prevY = e.clientY + window.pageYOffset - offset + // return + // } + // + // let currentX = e.clientX + window.pageXOffset - rect.left + // let currentY = e.clientY + window.pageYOffset- offset + // + // ctx.beginPath() + // ctx.moveTo(prevX, prevY) + // ctx.lineTo(currentX, currentY) + // ctx.stroke() + // + // prevX = currentX + // prevY = currentY +}) diff --git a/projects/thatfishhouse/style.css b/projects/thatfishhouse/style.css new file mode 100644 index 0000000..fda2b2e --- /dev/null +++ b/projects/thatfishhouse/style.css @@ -0,0 +1,195 @@ +:root { + --darkest: #423E39; + --dark: #66625D; + --blue: #CFDFDE; + --brown: #CEB39A; + --white: #FBF6F2; + --green: #ADBDAF; + --purple: #C4BFDE; +} + +html { + color: #423E39; + font-family: Verdana; +} + +body { + margin: 0; + padding: 0; + font-size: 1.2em; + position: relative; +} + + +h1.title{ + font-size: 7em; + /* text-align: center; */ + text-decoration: underline; + /* text-decoration-style: dashed; */ + + text-decoration-color: var(--blue); + text-decoration-thickness: 16px; + margin: 0.4em 0; + padding: 0; + line-height: 0.8em; +} + +h2 { + background-color: var(--brown); + + +} + +h2::before { + content: "# " +} + +em { + font-style: italic; +} + +a { + color: inherit; + text-decoration: underline; + text-decoration-color: var(--purple); + text-decoration-thickness: 3px; +} + +a:hover { + /* text-decoration: none; */ + /* color: var(--white); */ + background-color: var(--purple); +} + +.content img { + width: 50%; + border: 5px solid var(--blue); + border-radius: 25px; + display: block; + margin: 0 auto; +} + +hr { + border: none; + height: 5px; + /* border-bottom: 5px solid var(--blue); */ + overflow: visible; + /* margin-top: -1.5em; */ + + background-color: var(--blue); + border-radius: 50px; + margin: 30px 0; + /* background-image: linear-gradient(to right, #00000000 0%, var(--blue) 5%, var(--blue) 95%, #00000000 100%); */ + +} + +hr::after { + content: "fish fish fish"; + display: block; + position: relative; + text-align: center; + /* bottom: -0.08em; */ + top: -0.6em; + /* margin-top: -1.5em; */ + font-weight: bold; + color: var(--blue); + filter: url("#noiseFilterTiny"); + font-size: 1.5em; + overflow: visible; +} + +hr::before { + /* content: "•" */ + /* + content: "fish fish fish"; + display: block; + position: relative; + text-align: center; + bottom: -0.65em; + margin-top: -0.65em; + font-weight: bold; + color: var(--blue); + filter: url("#noiseFilterTiny"); + font-size: 1.5em; + overflow: visible; */ +} + +li::marker { + color: var(--brown); + +} + +.hor { + display: flex; + justify-content: space-between; + gap: 16px; +} + +.content { + width: 100vw; + min-height: 100vh; + padding: 20px 20% 20vw; + box-sizing: border-box; + /* pointer-events: none; */ + z-index: 0; + position: relative; +} + +.content p { + /* pointer-events: auto; */ +} + +.background { + width: 100vw; + background-color: #FBF5F2; + overflow: hidden; + position: absolute; + height: max(100vh, 100%); + bottom: 0; +} + +svg, .special_fishes { + width: 100%; +} + +.special_fishes { + bottom: 0; + height: 100%; +} + +.back { + position: absolute; +} + +#cursor_fish { + height: 2.5em; + left: 50px; + top: 50px; +} + + +.special_fish { + /* font-family: Roboto; */ + font-weight: bold; + font-size: 10vw; + position: absolute; + margin: 0; + padding: 0; + color: var(--blue); + transition: color 2s; + +} + +.special_fish:hover{ + color: var(--purple); + transition: color 0.2s; + +} + +.special_fishes { + filter: url("#noiseFilter"); +} + +.distort { + filter: url("#noiseFilterLess"); +}