Files
2026-05-16 11:10:19 +02:00

71 lines
2.3 KiB
JavaScript
Executable File

// ============================================
// bg.js - Optimized with WebM support
// ============================================
(function() {
'use strict';
const bgs = [
"/data/fond/moon_1080p.webm", // Changed to WebM
"/data/fond/astro.webp", // Changed to WebP
"/data/fond/Pino.png",
];
const bgIndex = Math.floor(Date.now() / (1000 * 60 * 60 * 24)) % bgs.length;
let visibilityHandler = null;
document.addEventListener("DOMContentLoaded", () => {
const src = bgs[bgIndex];
const video = document.getElementById("bg-video");
const img = document.getElementById("bg-image");
if (!video || !img) return;
const isVideo = /\.(mp4|webm|ogg)$/i.test(src);
const prefersReducedMotion = window.matchMedia("(prefers-reduced-motion: reduce)").matches;
// Reduced motion → force image with WebP fallback
if (prefersReducedMotion && isVideo) {
const fallback = src.replace(/\.(mp4|webm|ogg)$/i, ".webp");
img.src = fallback;
img.style.display = "block";
video.style.display = "none";
return;
}
if (isVideo) {
video.src = src;
video.style.display = "block";
img.style.display = "none";
// Visibility handler for pause/play
visibilityHandler = function() {
if (document.hidden) {
video.pause();
} else {
video.play().catch(e => console.log('Video play prevented:', e));
}
};
document.addEventListener('visibilitychange', visibilityHandler);
// Cleanup on page unload
window.addEventListener('beforeunload', () => {
if (visibilityHandler) {
document.removeEventListener('visibilitychange', visibilityHandler);
}
video.pause();
video.src = '';
});
video.load();
} else {
img.src = src;
img.style.display = "block";
video.style.display = "none";
video.pause();
video.src = '';
}
});
})();