Widget:GameSwitcher:修订间差异
来自OGAS数据中枢
更多操作
无编辑摘要 |
无编辑摘要 |
||
| 第41行: | 第41行: | ||
|| style.getPropertyValue( '--background-color-base' ).trim() | || style.getPropertyValue( '--background-color-base' ).trim() | ||
|| '#1d1e20'; | || '#1d1e20'; | ||
var | var el = document.getElementById( 'gf-hero-fade-bottom' ); | ||
if ( el ) { | |||
el.style.background = 'linear-gradient(to bottom, transparent 0%, ' + bg + ' 100%)'; | |||
} | |||
} | } | ||
var currentGame = 'gf'; | var currentGame = 'gf'; | ||
var switching = false; | var switching = false; | ||
| 第60行: | 第54行: | ||
switching = true; | switching = true; | ||
var slides = document.querySelectorAll( '#gf-homepage .gf-hero-slide' ); | var slides = document.querySelectorAll( '#gf-homepage .gf-hero-slide' ); | ||
var panels = document.querySelectorAll( '#gf-homepage .gf-content-panel' ); | var panels = document.querySelectorAll( '#gf-homepage .gf-content-panel' ); | ||
var tabs | var tabs = document.querySelectorAll( '#gf-homepage .gf-tab' ); | ||
var outSlide = document.getElementById( 'hero-' + currentGame ); | var outSlide = document.getElementById( 'hero-' + currentGame ); | ||
var inSlide = document.getElementById( 'hero-' + game ); | var inSlide = document.getElementById( 'hero-' + game ); | ||
if ( inSlide ) { | if ( inSlide ) { | ||
inSlide.style.zIndex | inSlide.style.zIndex = '1'; | ||
inSlide.style.opacity | inSlide.style.opacity = '0'; | ||
inSlide.style.transition = 'opacity 0.5s ease'; | inSlide.style.transition = 'opacity 0.5s ease'; | ||
void inSlide.offsetWidth; | void inSlide.offsetWidth; | ||
inSlide.style.opacity = '1'; | inSlide.style.opacity = '1'; | ||
} | } | ||
if ( outSlide ) { | if ( outSlide ) { | ||
outSlide.style.zIndex | outSlide.style.zIndex = '0'; | ||
outSlide.style.opacity | outSlide.style.opacity = '1'; | ||
outSlide.style.transition = 'opacity 0.5s ease'; | outSlide.style.transition = 'opacity 0.5s ease'; | ||
void outSlide.offsetWidth; | void outSlide.offsetWidth; | ||
outSlide.style.opacity | outSlide.style.opacity = '0'; | ||
} | } | ||
panels.forEach( function ( p ) { | panels.forEach( function ( p ) { | ||
p.classList.toggle( 'active', p.id === 'content-' + game ); | p.classList.toggle( 'active', p.id === 'content-' + game ); | ||
} ); | } ); | ||
tabs.forEach( function ( t ) { | tabs.forEach( function ( t ) { | ||
var on = t.getAttribute( 'data-game' ) === game; | var on = t.getAttribute( 'data-game' ) === game; | ||
| 第96行: | 第86行: | ||
} ); | } ); | ||
setTimeout( function () { | setTimeout( function () { | ||
slides.forEach( function ( s ) { | slides.forEach( function ( s ) { | ||
s.style.zIndex | s.style.zIndex = ''; | ||
s.style.opacity | s.style.opacity = s.id === 'hero-' + game ? '1' : '0'; | ||
s.style.transition = ''; | s.style.transition = ''; | ||
} ); | } ); | ||
| 第112行: | 第101行: | ||
if ( !tabs.length ) { return; } | if ( !tabs.length ) { return; } | ||
/* | /* 同时注入 bg(模糊层)和 fg(清晰层)*/ | ||
Object.keys( heroImages ).forEach( function ( game ) { | Object.keys( heroImages ).forEach( function ( game ) { | ||
getWikiImageUrl( heroImages[ game ], function ( url ) { | getWikiImageUrl( heroImages[ game ], function ( url ) { | ||
var | var bg = document.getElementById( 'hero-' + game + '-bg' ); | ||
var fg = document.getElementById( 'hero-' + game + '-fg' ); | |||
var val = 'url("' + url + '")'; | |||
if ( bg ) { bg.style.backgroundImage = val; } | |||
if ( fg ) { fg.style.backgroundImage = val; } | |||
} ); | } ); | ||
} ); | } ); | ||
2026年6月20日 (六) 17:20的版本
本Widget为少女前线系列多游戏首页提供切换交互逻辑。
不接受参数,直接在首页调用:{{#widget:GFHomepageSwitcher}}