color change

This commit is contained in:
saiminh 2026-01-22 18:43:26 +13:00
parent d7cab5d526
commit d49773134f
4 changed files with 58 additions and 10 deletions

View file

@ -1,13 +1,26 @@
:root { :root {
--spacing-outer: 5vw; --spacing-outer: 5vw;
--spacing-nav: 5vw; --spacing-nav: 5vw;
--color-bg: rgb(63, 111, 207); --color-bg: rgb(207, 63, 70);;
--color-bg-variant-1: rgb(63, 111, 207);
--color-bg-variant-2: rgb(207, 63, 70);
--color-bg-variant-3: rgb(63, 207, 80);
--color-bg-variant-4: rgb(255, 174, 0);
--color-text: rgb(255, 234, 217); --color-text: rgb(255, 234, 217);
--color-highlight: rgb(29, 12, 18); --color-highlight: rgb(29, 12, 18);
--color-bg-variant-1: rgb(207, 63, 70);
--color-text-variant-1: rgb(255, 234, 217);
--color-highlight-variant-1: rgb(29, 12, 18);
--color-bg-variant-2: rgb(63, 111, 207);
--color-text-variant-2: rgb(255, 228, 207);
--color-highlight-variant-2: rgb(57, 0, 17);
--color-bg-variant-3: rgb(34, 169, 49);
--color-text-variant-3: rgb(255, 232, 168);
--color-highlight-variant-3: rgb(36, 0, 0);
--color-bg-variant-4: rgb(238, 127, 1);
--color-text-variant-4: rgb(253, 254, 255);
--color-highlight-variant-4: rgb(0, 39, 67);
--aspect-ratio-heroes: 1.5; --aspect-ratio-heroes: 1.5;
--font-size-p: clamp(20px, 1.6vw, 1.6vw); --font-size-p: clamp(20px, 1.6vw, 1.6vw);
@ -45,6 +58,7 @@ body {
min-height: 100svh; min-height: 100svh;
max-width: 100vw; max-width: 100vw;
overflow-x: hidden; overflow-x: hidden;
transition: background-color .5s ease-in-out, color .5s ease-in-out;
} }
body * { body * {
box-sizing: border-box; box-sizing: border-box;

View file

@ -24,6 +24,35 @@
} }
} }
function setRandomBgColor() {
const currentBgColor = getComputedStyle(document.documentElement)
.getPropertyValue('--color-bg');
const currentHighlightColor = getComputedStyle(document.documentElement)
.getPropertyValue('--color-highlight');
const currentTextColor = getComputedStyle(document.documentElement)
.getPropertyValue('--color-text');
let variantNumber: number;
let variantBgColor: string;
let variantHighlightColor: string;
let variantTextColor: string;
// Keep picking a random variant until it's different from the current color
do {
variantNumber = Math.floor(Math.random() * 4) + 1;
variantBgColor = getComputedStyle(document.documentElement)
.getPropertyValue(`--color-bg-variant-${variantNumber}`);
variantHighlightColor = getComputedStyle(document.documentElement)
.getPropertyValue(`--color-highlight-variant-${variantNumber}`);
variantTextColor = getComputedStyle(document.documentElement)
.getPropertyValue(`--color-text-variant-${variantNumber}`);
} while (variantBgColor.trim() === currentBgColor.trim());
document.documentElement.style.setProperty('--color-bg', variantBgColor);
document.documentElement.style.setProperty('--color-highlight', variantHighlightColor);
document.documentElement.style.setProperty('--color-text', variantTextColor);
}
if (browser) { if (browser) {
beforeNavigate((nav) => { beforeNavigate((nav) => {
// token to avoid races between overlapping navigations // token to avoid races between overlapping navigations
@ -32,6 +61,9 @@
clearTimer(); clearTimer();
showLoader = false; showLoader = false;
// Change background color on route change
setRandomBgColor();
// only show if navigation takes >150ms // only show if navigation takes >150ms
timer = setTimeout(() => { timer = setTimeout(() => {
if (token === navToken) showLoader = true; if (token === navToken) showLoader = true;

View file

@ -16,6 +16,9 @@
let isZoomed = false; let isZoomed = false;
const currentBgColor = getComputedStyle(document.documentElement).getPropertyValue('--color-bg');
const currentHighlightColor = getComputedStyle(document.documentElement).getPropertyValue('--color-highlight');
let works: Array<HTMLElement> = Array.from(document.querySelectorAll('.work')); let works: Array<HTMLElement> = Array.from(document.querySelectorAll('.work'));
for ( let i = 0; i < 40; i++ ){ for ( let i = 0; i < 40; i++ ){
let clone = works[i].cloneNode(true) as HTMLElement; let clone = works[i].cloneNode(true) as HTMLElement;
@ -136,14 +139,14 @@
if (isZoomed) return; if (isZoomed) return;
gsap.killTweensOf([work, work.querySelector('.work-logo')]); gsap.killTweensOf([work, work.querySelector('.work-logo')]);
gsap.to(work, { gsap.to(work, {
backgroundColor: 'rgb(63, 111, 207)', backgroundColor: currentBgColor,
duration: .125, duration: .125,
ease: 'power1.inOut', ease: 'power1.inOut',
}) })
const logo = work.querySelector('.work-logo'); const logo = work.querySelector('.work-logo');
if (logo) { if (logo) {
gsap.to(logo, { gsap.to(logo, {
color: 'rgb(29, 12, 18)', color: currentHighlightColor,
duration: .125, duration: .125,
ease: 'power1.inOut', ease: 'power1.inOut',
}) })
@ -154,14 +157,14 @@
if (isZoomed) return; if (isZoomed) return;
gsap.killTweensOf([work, work.querySelector('.work-logo')]); gsap.killTweensOf([work, work.querySelector('.work-logo')]);
gsap.to(work, { gsap.to(work, {
backgroundColor: 'rgb(29, 12, 18)', backgroundColor: currentHighlightColor,
duration: .125, duration: .125,
ease: 'power1.inOut', ease: 'power1.inOut',
}) })
const logo = work.querySelector('.work-logo'); const logo = work.querySelector('.work-logo');
if (logo) { if (logo) {
gsap.to(logo, { gsap.to(logo, {
color: 'rgb(63, 111, 207)', color: currentBgColor,
duration: .125, duration: .125,
ease: 'power1.inOut', ease: 'power1.inOut',
}) })

View file

@ -328,7 +328,6 @@
overflow: hidden; overflow: hidden;
padding: 0 0 1em 0; padding: 0 0 1em 0;
z-index: 1; z-index: 1;
// opacity: 0.75;
perspective: 250px; perspective: 250px;
perspective-origin: center bottom; perspective-origin: center bottom;