first commit
This commit is contained in:
Executable
+70
@@ -0,0 +1,70 @@
|
||||
// ============================================
|
||||
// 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 = '';
|
||||
}
|
||||
});
|
||||
})();
|
||||
Reference in New Issue
Block a user