Files
blog/themes/Ying/assets/js/main.js
T

73 lines
2.2 KiB
JavaScript
Raw Normal View History

2026-01-31 19:24:22 +08:00
// Initial Call
2026-01-22 21:39:19 +08:00
document.addEventListener('DOMContentLoaded', function() {
2026-01-31 19:24:22 +08:00
// 文章图片灯箱
if (window.ViewImage) {
ViewImage.init('.post-content img');
}
2026-01-22 21:39:19 +08:00
2026-01-31 21:27:06 +08:00
// 文章图片懒加载 (优先初始化,防止其他模块调用时出错)
2026-01-31 19:24:22 +08:00
if (typeof lazyLoadInit === 'function') {
lazyLoadInit({
2026-02-02 20:38:58 +08:00
offsetBottom: 50,
offsetTopm: 50,
showTime: 1100,
queueInterval: 100
2026-01-22 21:39:19 +08:00
});
2026-01-31 19:24:22 +08:00
} else {
console.warn('lazyLoadInit is not defined');
2026-01-22 21:39:19 +08:00
}
2026-01-31 21:27:06 +08:00
// 初始化各个模块
if (window.initLoader) window.initLoader();
if (window.initFloatingTools) window.initFloatingTools();
if (window.initSearch) window.initSearch();
if (window.initArtalk) window.initArtalk();
// New Utils Init
if (window.initThemeToggle) window.initThemeToggle();
if (window.initCodeFold) window.initCodeFold();
if (window.initCodeCopy) window.initCodeCopy();
if (window.initParagraphComments) window.initParagraphComments();
2026-01-31 22:52:19 +08:00
if (window.initInfiniteScroll && window.enableInfiniteScroll) window.initInfiniteScroll();
2026-02-01 17:42:15 +08:00
// Initialize Typewriter Effect for Mobile Header
initTypewriter();
2026-01-22 21:39:19 +08:00
});
2026-02-01 17:42:15 +08:00
/**
* Typewriter Effect for Mobile Header Bio
*/
function initTypewriter() {
// Only run on mobile or if the element is visible
const bioElement = document.querySelector('.header-bio');
if (!bioElement) return;
// Check if we are on mobile (matching CSS media query)
const isMobile = window.matchMedia('(max-width: 768px)').matches;
if (!isMobile) return;
const originalText = bioElement.innerText.trim();
if (!originalText) return;
// Clear text initially
bioElement.innerText = '';
bioElement.classList.add('typing');
let i = 0;
const speed = 100; // Typing speed in ms
function typeWriter() {
if (i < originalText.length) {
bioElement.innerText += originalText.charAt(i);
i++;
setTimeout(typeWriter, speed);
} else {
// Typing finished, remove cursor after a delay?
// bioElement.classList.remove('typing');
// Keep blinking cursor for effect
}
}
// Start typing with a small delay
setTimeout(typeWriter, 500);
}