Widget:GF立绘切换:修订间差异
来自OGAS数据中枢
更多操作
页面内容被替换为“<includeonly><script> (function() { document.addEventListener('DOMContentLoaded', function() { // 获取所有信息框 var infoboxes = document.querySelectorAll('.gf-infobox-new'); infoboxes.forEach(function(infobox) { var thumbItems = infobox.querySelectorAll('.gf-thumb-item'); var imageContainer = infobox.querySelector('.gf-image-container'); var currentImage = imageContainer ? imageCon…” 标签:替换 |
无编辑摘要 |
||
| 第1行: | 第1行: | ||
<includeonly><script> | <includeonly><script> | ||
(function() { | (function() { | ||
// 等待DOM和图片加载完成 | |||
function initSwitcher() { | |||
document.querySelectorAll('.gf-infobox-new').forEach(function(box) { | |||
if (box.dataset.initialized) return; | |||
box.dataset.initialized = 'true'; | |||
var container = box.querySelector('.gf-image-container'); | |||
var thumbs = box.querySelectorAll('.gf-thumb-item'); | |||
if (!container || thumbs.length < 2) return; | |||
thumb.addEventListener('click', function() { | thumbs.forEach(function(thumb) { | ||
thumb.addEventListener('click', function(e) { | |||
e.preventDefault(); | |||
// | // 更新激活状态 | ||
thumbs.forEach(function(t) { t.classList.remove('active'); }); | |||
this.classList.add('active'); | this.classList.add('active'); | ||
// 获取图片 | // 获取新图片的文件名 | ||
var | var newFile = this.dataset.img; | ||
if (!newFile) return; | |||
// 创建新图片 | // 淡出旧图片 | ||
var oldImg = container.querySelector('img'); | |||
if (oldImg) { | |||
oldImg.style.opacity = '0'; | |||
oldImg.style.transition = 'opacity 0.2s ease'; | |||
} | |||
// 创建并加载新图片 | |||
var newImg = document.createElement('img'); | var newImg = document.createElement('img'); | ||
newImg.src = | newImg.src = newFile; // MediaWiki会自动处理文件路径 | ||
newImg.style.maxWidth = '100%'; | newImg.style.maxWidth = '100%'; | ||
newImg.style.maxHeight = '400px'; | newImg.style.maxHeight = '400px'; | ||
newImg.style.objectFit = 'contain'; | newImg.style.objectFit = 'contain'; | ||
newImg.style.opacity = '0'; | newImg.style.opacity = '0'; | ||
newImg.style.transition = 'opacity 0.3s ease'; | newImg.style.transition = 'opacity 0.3s ease'; | ||
// 替换 | newImg.onload = function() { | ||
// 替换内容 | |||
container.innerHTML = ''; | |||
container.appendChild(newImg); | |||
// 触发淡入 | |||
requestAnimationFrame(function() { | |||
newImg.style.opacity = '1'; | |||
}); | |||
}; | |||
// | newImg.onerror = function() { | ||
// 如果加载失败,恢复原状 | |||
if (oldImg) { | |||
} | oldImg.style.opacity = '1'; | ||
} | |||
}; | |||
}); | }); | ||
}); | }); | ||
}); | }); | ||
}); | } | ||
if (document.readyState === 'loading') { | |||
document.addEventListener('DOMContentLoaded', initSwitcher); | |||
} else { | |||
initSwitcher(); | |||
} | |||
// 针对动态加载的内容再次尝试 | |||
if (window.mw && mw.hook) { | |||
mw.hook('wikipage.content').add(initSwitcher); | |||
} | |||
})(); | })(); | ||
</script></includeonly> | </script></includeonly> | ||