Exclude thumbnail from fade effect

This commit is contained in:
Isra 2025-11-11 09:26:31 +08:00
parent 02c2dcb4c9
commit 8ee39a2774
4 changed files with 8 additions and 11 deletions

View file

@ -428,18 +428,15 @@ input[type="range"].styled-slider.slider-progress::-ms-fill-lower {
@apply brightness-[500];
}
/* Image fade-in on load */
img:not([src=""]) {
img:not(.no-fade):not([src=""]) {
opacity: 0;
transition: opacity 0.8s ease-in-out;
}
/* Fade in when image has loaded class */
img.loaded {
img.loaded:not(.no-fade) {
opacity: 1;
}
/* For images that are already cached/loaded, show them immediately */
img[complete]:not([src=""]) {
img[complete]:not(.no-fade):not([src=""]) {
opacity: 1;
}

View file

@ -59,7 +59,7 @@ function ThumbnailDisplay(props: { at: number; show: boolean }) {
{currentThumbnail && (
<img
src={currentThumbnail.data}
className="h-24 border rounded-xl border-gray-800"
className="h-24 border rounded-xl border-gray-800 no-fade"
/>
)}
<p className="mt-1 mx-auto text-center border rounded-xl border-gray-800 px-3 py-1 backdrop-blur-lg bg-black bg-opacity-20 w-max">

View file

@ -178,7 +178,7 @@ export function KeyboardEvents() {
if (evt.repeat) {
return;
}
// Skip if a button is targeted
if (
evt.target &&
@ -243,7 +243,7 @@ export function KeyboardEvents() {
if (evt.repeat) {
return;
}
// Skip if a button is targeted
if (
evt.target &&

View file

@ -5,7 +5,7 @@
export function initializeImageFadeIn() {
// Handle images that are already loaded (cached)
const handleExistingImages = () => {
const images = document.querySelectorAll("img:not(.loaded)");
const images = document.querySelectorAll(`img:not(.no-fade):not([src=""]`);
images.forEach((img) => {
const htmlImg = img as HTMLImageElement;
if (htmlImg.complete && htmlImg.naturalHeight !== 0) {
@ -35,7 +35,7 @@ export function initializeImageFadeIn() {
// Also check periodically for images that might have loaded
// This handles edge cases where the load event might not fire
const checkInterval = setInterval(() => {
const images = document.querySelectorAll("img:not(.loaded)");
const images = document.querySelectorAll(`img:not(.no-fade):not([src=""]`);
if (images.length === 0) {
clearInterval(checkInterval);
return;