73 lines
2.2 KiB
JavaScript
73 lines
2.2 KiB
JavaScript
// Initial Call
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
// 文章图片灯箱
|
|
if (window.ViewImage) {
|
|
ViewImage.init('.post-content img');
|
|
}
|
|
|
|
// 文章图片懒加载 (优先初始化,防止其他模块调用时出错)
|
|
if (typeof lazyLoadInit === 'function') {
|
|
lazyLoadInit({
|
|
offsetBottom: 800,
|
|
offsetTopm: 800,
|
|
showTime: 1100
|
|
});
|
|
} else {
|
|
console.warn('lazyLoadInit is not defined');
|
|
}
|
|
|
|
// 初始化各个模块
|
|
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();
|
|
if (window.initInfiniteScroll && window.enableInfiniteScroll) window.initInfiniteScroll();
|
|
|
|
// Initialize Typewriter Effect for Mobile Header
|
|
initTypewriter();
|
|
});
|
|
|
|
/**
|
|
* 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);
|
|
}
|