background

This commit is contained in:
Flatlogic Bot 2026-03-21 16:24:04 +00:00
parent 36ead92a6c
commit a64664a505
3 changed files with 217 additions and 1 deletions

View File

@ -40,7 +40,8 @@ main {
}
.navbar {
backdrop-filter: blur(6px);
background: rgba(255, 255, 255, 0.96);
box-shadow: 0 10px 30px rgba(15, 23, 42, 0.05);
}
.navbar-brand {
@ -116,3 +117,171 @@ footer a {
padding-top: 40px;
}
}
html {
scroll-behavior: smooth;
}
body {
position: relative;
overflow-x: hidden;
}
.navbar,
main,
footer {
position: relative;
z-index: 1;
}
.site-background {
position: fixed;
inset: 0;
pointer-events: none;
overflow: hidden;
z-index: 0;
}
.bg-grid,
.bg-orb,
.bg-cursor-glow {
position: absolute;
}
.bg-grid {
inset: 0;
background-image:
linear-gradient(rgba(17, 24, 39, 0.03) 1px, transparent 1px),
linear-gradient(90deg, rgba(17, 24, 39, 0.03) 1px, transparent 1px);
background-size: 72px 72px;
mask-image: radial-gradient(circle at center, rgba(0, 0, 0, 0.68), transparent 78%);
opacity: 0.22;
}
.bg-orb {
border-radius: 50%;
filter: blur(4px);
opacity: 0.7;
will-change: transform;
animation: pulseOrb 12s ease-in-out infinite;
}
.bg-orb-one {
top: 7%;
left: -8%;
width: 340px;
height: 340px;
background: radial-gradient(circle at 30% 30%, rgba(37, 99, 235, 0.34), rgba(37, 99, 235, 0.06) 60%, transparent 72%);
}
.bg-orb-two {
top: 18%;
right: -10%;
width: 420px;
height: 420px;
background: radial-gradient(circle at 40% 40%, rgba(16, 185, 129, 0.24), rgba(37, 99, 235, 0.06) 58%, transparent 74%);
animation-duration: 18s;
}
.bg-orb-three {
bottom: -8%;
left: 48%;
width: 360px;
height: 360px;
background: radial-gradient(circle at 50% 50%, rgba(251, 191, 36, 0.2), rgba(37, 99, 235, 0.06) 62%, transparent 76%);
animation-duration: 20s;
}
.bg-cursor-glow {
top: 0;
left: 0;
width: 240px;
height: 240px;
margin: -120px 0 0 -120px;
border-radius: 50%;
background: radial-gradient(circle, rgba(37, 99, 235, 0.1) 0%, rgba(37, 99, 235, 0.03) 48%, transparent 72%);
opacity: 0.5;
will-change: transform;
}
.hero-section,
.section-muted,
.about-panel,
.hero-card,
.contact-box,
.card {
position: relative;
}
.hero-section::after,
.section-muted::after {
content: '';
position: absolute;
inset: 0;
pointer-events: none;
background: linear-gradient(135deg, rgba(255, 255, 255, 0.18), rgba(255, 255, 255, 0));
}
.hero-card,
.about-panel,
.contact-box,
.card,
.navbar {
-webkit-backdrop-filter: none;
backdrop-filter: none;
}
.hero-card,
.about-panel,
.contact-box,
.card {
background: rgba(255, 255, 255, 0.97);
}
.card,
.hero-card,
.about-panel,
.contact-box {
box-shadow: 0 20px 60px rgba(15, 23, 42, 0.08);
}
.btn-primary,
.btn-outline-dark {
transition: transform 0.25s ease, box-shadow 0.25s ease;
}
.btn-primary:hover,
.btn-outline-dark:hover {
transform: translateY(-2px);
box-shadow: 0 14px 34px rgba(15, 23, 42, 0.12);
}
@keyframes pulseOrb {
0%, 100% {
opacity: 0.52;
filter: blur(4px);
}
50% {
opacity: 0.78;
filter: blur(2px);
}
}
@media (prefers-reduced-motion: reduce) {
html {
scroll-behavior: auto;
}
.bg-orb,
.bg-cursor-glow,
.btn-primary,
.btn-outline-dark {
animation: none;
transition: none;
}
.bg-cursor-glow {
display: none;
}
}

View File

@ -16,4 +16,43 @@ document.addEventListener('DOMContentLoaded', () => {
const toast = new bootstrap.Toast(toastEl, { delay: 4000 });
toast.show();
}
const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
const orbs = Array.from(document.querySelectorAll('.bg-orb'));
const cursorGlow = document.querySelector('.bg-cursor-glow');
if (!prefersReducedMotion && (orbs.length || cursorGlow)) {
const pointer = { x: window.innerWidth / 2, y: window.innerHeight / 3 };
const smooth = { x: pointer.x, y: pointer.y };
const render = () => {
smooth.x += (pointer.x - smooth.x) * 0.08;
smooth.y += (pointer.y - smooth.y) * 0.08;
orbs.forEach((orb, index) => {
const depth = Number(orb.dataset.depth || 20);
const direction = index % 2 === 0 ? 1 : -1;
const dx = ((smooth.x / window.innerWidth) - 0.5) * depth * direction;
const dy = ((smooth.y / window.innerHeight) - 0.5) * depth;
orb.style.transform = `translate3d(${dx}px, ${dy}px, 0)`;
});
if (cursorGlow) {
cursorGlow.style.transform = `translate3d(${smooth.x}px, ${smooth.y}px, 0)`;
}
window.requestAnimationFrame(render);
};
window.addEventListener('pointermove', (event) => {
pointer.x = event.clientX;
pointer.y = event.clientY;
}, { passive: true });
window.addEventListener('scroll', () => {
pointer.y = window.innerHeight / 3 + (window.scrollY * 0.08);
}, { passive: true });
render();
}
});

View File

@ -131,6 +131,14 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
</style>
</head>
<body>
<div class="site-background" aria-hidden="true">
<span class="bg-grid"></span>
<span class="bg-orb bg-orb-one" data-depth="18"></span>
<span class="bg-orb bg-orb-two" data-depth="28"></span>
<span class="bg-orb bg-orb-three" data-depth="38"></span>
<span class="bg-cursor-glow"></span>
</div>
<nav class="navbar navbar-expand-lg navbar-light bg-white border-bottom fixed-top">
<div class="container">
<a class="navbar-brand fw-semibold" href="#top">Alex Carter</a>