MediaWiki:Common.js:修订间差异
来自Age Of History 2 Chinese Wiki
无编辑摘要 |
无编辑摘要 |
||
第106行: | 第106行: | ||
}); | }); | ||
}); | }); | ||
// Collapsible blocks functionality | // Collapsible blocks functionality | ||
$(document).ready(function() { | $(document).ready(function() { | ||
第116行: | 第117行: | ||
// Initially hide collapsible content | // Initially hide collapsible content | ||
$('.collapsible-content').hide(); | $('.collapsible-content').hide(); | ||
}); | }); | ||
/* Common.js - Database New主题JavaScript增强 */ | /* Common.js - Database New主题JavaScript增强 */ | ||
$(function() { | $(function() { | ||
// 创建CRT效果容器 | // 创建CRT效果容器 | ||
第166行: | 第139行: | ||
createCRTEffects(); | createCRTEffects(); | ||
// | // 橙幕切换功能 | ||
if (typeof window.orangemu_toggle_init === 'undefined') { | if (typeof window.orangemu_toggle_init === 'undefined') { | ||
window.orangemu_toggle_init = true; | window.orangemu_toggle_init = true; | ||
第177行: | 第150行: | ||
} | } | ||
// | // 修复动画问题 | ||
function | function fixAnimations() { | ||
$('#mw-content-text > *').each(function(index) { | // 延迟应用动画,防止页面加载时的闪烁 | ||
setTimeout(function() { | |||
}); | $('#mw-content-text > *').each(function(index) { | ||
$(this).css({ | |||
'animation': 'fadeIn 0.5s ease-out forwards', | |||
'animation-delay': (index * 0.1) + 's', | |||
'opacity': '0' | |||
}); | |||
}); | |||
}, 100); | |||
} | } | ||
// | // 应用动画修复 | ||
$(document).ready(function() { | |||
fixAnimations(); | |||
}); | |||
// 监听新内容加载(如AJAX) | // 监听新内容加载(如AJAX) | ||
mw.hook('wikipage.content').add(function($content) { | mw.hook('wikipage.content').add(function($content) { | ||
if ($content.attr('id') === 'mw-content-text') { | if ($content.attr('id') === 'mw-content-text') { | ||
fixAnimations(); | |||
} | } | ||
}); | }); | ||
第248行: | 第230行: | ||
} | } | ||
}, 1000); | }, 1000); | ||
// 为页面添加启动动画 | // 为页面添加启动动画 | ||
第264行: | 第236行: | ||
setTimeout(function() { | setTimeout(function() { | ||
$('body').removeClass('booting').addClass('booted'); | $('body').removeClass('booting').addClass('booted'); | ||
}, | }, 500); | ||
} | } | ||
第303行: | 第275行: | ||
border: 2px solid rgb(var(--bright-accent)); | border: 2px solid rgb(var(--bright-accent)); | ||
box-shadow: 0 0 10px rgba(var(--bright-accent), 0.3); | box-shadow: 0 0 10px rgba(var(--bright-accent), 0.3); | ||
} | |||
/* 修复动画闪烁问题 */ | |||
#mw-content-text > * { | |||
visibility: visible; | |||
} | |||
.mw-parser-output > *.animated { | |||
animation: none !important; | |||
} | } | ||
`; | `; | ||
$('<style>').text(customStyles).appendTo('head'); | $('<style>').text(customStyles).appendTo('head'); | ||
}); | |||
// 修复变色龙皮肤的Bootstrap组件 | |||
$(function() { | |||
function fixBootstrapComponents() { | |||
// 修复导航栏 | |||
$('.navbar').css({ | |||
'background-color': 'rgb(10, 10, 10)', | |||
'border-bottom': '1px solid rgb(229, 140, 36)' | |||
}); | |||
// 修复下拉菜单 | |||
$('.dropdown-menu').css({ | |||
'background-color': 'rgb(10, 10, 10)', | |||
'border': '1px solid rgb(229, 140, 36)' | |||
}); | |||
// 修复按钮 | |||
$('.btn').css({ | |||
'background-color': 'rgb(72, 69, 60)', | |||
'border': '1px solid rgb(229, 140, 36)', | |||
'color': 'rgb(229, 140, 36)' | |||
}); | |||
// 修复表单控件 | |||
$('.form-control').css({ | |||
'background-color': 'rgb(10, 10, 10)', | |||
'border': '1px solid rgb(229, 140, 36)', | |||
'color': 'rgb(229, 140, 36)' | |||
}); | |||
} | |||
// 应用样式修复 | |||
fixBootstrapComponents(); | |||
// 监听DOM变化 | |||
var observer = new MutationObserver(function(mutations) { | |||
fixBootstrapComponents(); | |||
}); | |||
observer.observe(document.body, { | |||
childList: true, | |||
subtree: true | |||
}); | |||
}); | }); |
2025年5月4日 (日) 09:50的版本
/* 轮播图功能 */
mw.hook('wikipage.content').add(function($content) {
// 查找页面中所有轮播图
$content.find('.mw-carousel').each(function() {
const $carousel = $(this);
const $items = $carousel.find('.carousel-item');
const $indicators = $carousel.find('.carousel-indicators');
const $prevBtn = $carousel.find('.carousel-prev');
const $nextBtn = $carousel.find('.carousel-next');
let currentIndex = 0;
const slideCount = $items.length;
if (slideCount === 0) return;
// 创建指示器
for (let i = 0; i < slideCount; i++) {
const $indicator = $('<div class="indicator"></div>');
if (i === 0) $indicator.addClass('active');
$indicator.on('click', function() {
goToSlide(i);
});
$indicators.append($indicator);
}
// 初始化第一张幻灯片
$items.eq(0).addClass('active');
// 给每个幻灯片添加点击事件
$items.each(function() {
const $item = $(this);
const link = $item.data('link');
if (link && link.length > 0) {
$item.css('cursor', 'pointer').on('click', function() {
window.location.href = link;
});
}
});
// 切换到指定幻灯片
function goToSlide(index) {
$items.removeClass('active');
$indicators.find('.indicator').removeClass('active');
$items.eq(index).addClass('active');
$indicators.find('.indicator').eq(index).addClass('active');
currentIndex = index;
}
// 上一张
function prevSlide() {
const newIndex = (currentIndex - 1 + slideCount) % slideCount;
goToSlide(newIndex);
}
// 下一张
function nextSlide() {
const newIndex = (currentIndex + 1) % slideCount;
goToSlide(newIndex);
}
// 绑定按钮事件
$prevBtn.on('click', function(e) {
e.preventDefault();
e.stopPropagation();
prevSlide();
});
$nextBtn.on('click', function(e) {
e.preventDefault();
e.stopPropagation();
nextSlide();
});
// 自动播放
let autoplayInterval = setInterval(nextSlide, 5000);
$carousel.on('mouseenter', function() {
clearInterval(autoplayInterval);
}).on('mouseleave', function() {
autoplayInterval = setInterval(nextSlide, 5000);
});
// 触摸滑动支持
let touchStartX = 0;
let touchEndX = 0;
$carousel.on('touchstart', function(e) {
touchStartX = e.originalEvent.touches[0].clientX;
});
$carousel.on('touchend', function(e) {
touchEndX = e.originalEvent.changedTouches[0].clientX;
// 判断滑动方向
if (touchEndX < touchStartX - 50) {
nextSlide(); // 左滑,下一张
} else if (touchEndX > touchStartX + 50) {
prevSlide(); // 右滑,上一张
}
});
});
});
// Collapsible blocks functionality
$(document).ready(function() {
// Initialize collapsible blocks
$('.collapsible-header').click(function() {
$(this).next('.collapsible-content').slideToggle();
$(this).toggleClass('active');
});
// Initially hide collapsible content
$('.collapsible-content').hide();
});
/* Common.js - Database New主题JavaScript增强 */
$(function() {
// 创建CRT效果容器
function createCRTEffects() {
if ($('.crt-effects').length === 0) {
var crtContainer = $('<div>', {
'class': 'crt-effects',
html: [
$('<div>', {'class': 'scan-line-effect'}),
$('<div>', {'class': 'scan-animation'}),
$('<div>', {'class': 'radial-glow'})
]
});
$('body').append(crtContainer);
}
}
// 初始化CRT效果
createCRTEffects();
// 橙幕切换功能
if (typeof window.orangemu_toggle_init === 'undefined') {
window.orangemu_toggle_init = true;
// 为橙幕添加点击切换功能
$(document).on('click', '.orangemu', function(e) {
e.stopPropagation();
$(this).toggleClass('orangemu_toggle_on');
});
}
// 修复动画问题
function fixAnimations() {
// 延迟应用动画,防止页面加载时的闪烁
setTimeout(function() {
$('#mw-content-text > *').each(function(index) {
$(this).css({
'animation': 'fadeIn 0.5s ease-out forwards',
'animation-delay': (index * 0.1) + 's',
'opacity': '0'
});
});
}, 100);
}
// 应用动画修复
$(document).ready(function() {
fixAnimations();
});
// 监听新内容加载(如AJAX)
mw.hook('wikipage.content').add(function($content) {
if ($content.attr('id') === 'mw-content-text') {
fixAnimations();
}
});
// 添加复古终端效果的打字动画
function typeWriter(element, text, speed) {
var i = 0;
element.empty();
function type() {
if (i < text.length) {
element.append(text.charAt(i));
i++;
setTimeout(type, speed);
}
}
type();
}
// 为特定元素应用打字效果
$('.terminal-text').each(function() {
var text = $(this).text();
typeWriter($(this), text, 50);
});
// 添加闪烁光标效果
function createBlinkingCursor() {
var cursor = $('<span>', {
'class': 'terminal-cursor',
text: '▋'
});
setInterval(function() {
cursor.toggle();
}, 500);
return cursor;
}
// 为终端元素添加光标
$('.terminal').each(function() {
$(this).append(createBlinkingCursor());
});
// 模拟CRT屏幕抖动效果
function screenGlitch() {
var container = $('#content');
container.css('transform', 'translate(' + (Math.random() * 2 - 1) + 'px, ' + (Math.random() * 2 - 1) + 'px)');
setTimeout(function() {
container.css('transform', 'translate(0, 0)');
}, 50);
}
// 随机触发屏幕抖动
setInterval(function() {
if (Math.random() < 0.005) { // 0.5%的概率
screenGlitch();
}
}, 1000);
// 为页面添加启动动画
function bootSequence() {
$('body').addClass('booting');
setTimeout(function() {
$('body').removeClass('booting').addClass('booted');
}, 500);
}
// 页面加载时执行启动序列
bootSequence();
});
// 辅助CSS类
$(function() {
// 动态添加一些必要的CSS
var customStyles = `
.terminal-cursor {
animation: blink 1s infinite;
}
@keyframes blink {
0% { opacity: 1; }
50% { opacity: 0; }
100% { opacity: 1; }
}
.booting #content {
opacity: 0;
transform: scale(0.95);
transition: all 0.5s ease-out;
}
.booted #content {
opacity: 1;
transform: scale(1);
}
.terminal {
font-family: var(--mono-font);
background-color: rgb(var(--black-monochrome));
color: rgb(var(--bright-accent));
padding: 1rem;
border: 2px solid rgb(var(--bright-accent));
box-shadow: 0 0 10px rgba(var(--bright-accent), 0.3);
}
/* 修复动画闪烁问题 */
#mw-content-text > * {
visibility: visible;
}
.mw-parser-output > *.animated {
animation: none !important;
}
`;
$('<style>').text(customStyles).appendTo('head');
});
// 修复变色龙皮肤的Bootstrap组件
$(function() {
function fixBootstrapComponents() {
// 修复导航栏
$('.navbar').css({
'background-color': 'rgb(10, 10, 10)',
'border-bottom': '1px solid rgb(229, 140, 36)'
});
// 修复下拉菜单
$('.dropdown-menu').css({
'background-color': 'rgb(10, 10, 10)',
'border': '1px solid rgb(229, 140, 36)'
});
// 修复按钮
$('.btn').css({
'background-color': 'rgb(72, 69, 60)',
'border': '1px solid rgb(229, 140, 36)',
'color': 'rgb(229, 140, 36)'
});
// 修复表单控件
$('.form-control').css({
'background-color': 'rgb(10, 10, 10)',
'border': '1px solid rgb(229, 140, 36)',
'color': 'rgb(229, 140, 36)'
});
}
// 应用样式修复
fixBootstrapComponents();
// 监听DOM变化
var observer = new MutationObserver(function(mutations) {
fixBootstrapComponents();
});
observer.observe(document.body, {
childList: true,
subtree: true
});
});