This commit is contained in:
2026-04-25 03:42:53 +09:00
parent c787d4c7ac
commit 0b9076a2fd
2 changed files with 14 additions and 34 deletions
+12 -8
View File
@@ -15,6 +15,7 @@ header {
will-change: transform; will-change: transform;
background-color: transparent; background-color: transparent;
overflow: hidden; overflow: hidden;
isolation: isolate;
} }
header::after { header::after {
content: ''; content: '';
@@ -25,21 +26,24 @@ header::after {
pointer-events: none; pointer-events: none;
} }
.header-blur { .header-blur {
position: fixed; position: absolute;
top: 0; inset: 0;
left: 0; z-index: -2;
right: 0;
z-index: 9;
pointer-events: none; pointer-events: none;
} }
.blur-layer { .header-blur > div {
position: absolute; position: absolute;
inset: 0; inset: 0;
backdrop-filter: blur(var(--blur)); backdrop-filter: blur(var(--blur));
-webkit-backdrop-filter: blur(var(--blur)); -webkit-backdrop-filter: blur(var(--blur));
-webkit-mask-image: var(--mask); -webkit-mask-image: linear-gradient(to top, transparent var(--from), black var(--to));
mask-image: var(--mask); mask-image: linear-gradient(to top, transparent var(--from), black var(--to));
} }
.header-blur > div:nth-child(1) { --blur: 1px; --from: 0%; --to: 20%; }
.header-blur > div:nth-child(2) { --blur: 2px; --from: 20%; --to: 40%; }
.header-blur > div:nth-child(3) { --blur: 4px; --from: 40%; --to: 60%; }
.header-blur > div:nth-child(4) { --blur: 8px; --from: 60%; --to: 80%; }
.header-blur > div:nth-child(5) { --blur: 16px; --from: 80%; --to: 100%; }
/* Fonts */ /* Fonts */
@font-face { @font-face {
+2 -26
View File
@@ -3,35 +3,11 @@
const header = document.querySelector('header'); const header = document.querySelector('header');
if (!header) return; if (!header) return;
const LAYERS = [
{ blur: 1, from: 0, to: 15 },
{ blur: 3, from: 15, to: 35 },
{ blur: 6, from: 35, to: 55 },
{ blur: 10, from: 55, to: 75 },
{ blur: 16, from: 75, to: 95 },
];
const container = document.createElement('div'); const container = document.createElement('div');
container.className = 'header-blur'; container.className = 'header-blur';
container.setAttribute('aria-hidden', 'true'); container.setAttribute('aria-hidden', 'true');
for (let i = 0; i < 5; i++) container.appendChild(document.createElement('div'));
LAYERS.forEach(cfg => { header.prepend(container);
const layer = document.createElement('div');
layer.className = 'blur-layer';
layer.style.setProperty('--blur', cfg.blur + 'px');
layer.style.setProperty(
'--mask',
`linear-gradient(to top, transparent ${cfg.from}%, black ${cfg.to}%)`
);
container.appendChild(layer);
});
header.parentNode.insertBefore(container, header);
const sync = () => { container.style.height = header.offsetHeight + 'px'; };
sync();
if ('ResizeObserver' in window) new ResizeObserver(sync).observe(header);
else window.addEventListener('resize', sync);
})(); })();
/* View Transition */ /* View Transition */