diff --git a/about.html b/about.html index 4c1ec62..c8765f7 100644 --- a/about.html +++ b/about.html @@ -94,13 +94,14 @@
About Me
-

+

"我追求技术的深度理解而非广度堆砌,每一项技术的学习都源于解决实际问题的内在驱动。作为INFJ人格类型,我善于深度思考,注重细节,喜欢通过代码创造有意义的产品。我相信技术的力量能够改变世界,也热衷于在开源社区中分享知识与经验。 "

+
diff --git a/css/about.css b/css/about.css index 9600656..e0fdb64 100644 --- a/css/about.css +++ b/css/about.css @@ -409,6 +409,9 @@ body { margin-bottom: 10px; } +.animated-gradient { background-image: linear-gradient(90deg, var(--text-primary), var(--accent), var(--text-primary)); -webkit-background-clip: text; background-clip: text; color: transparent; animation: gradientShift 6s linear infinite; text-shadow: 0 0 8px rgba(108,92,231,0.2); } +@keyframes gradientShift { 0% { background-position: 0% 50%; } 100% { background-position: 200% 50%; } } + .location-tag { font-size: 0.85rem; color: var(--text-tertiary); @@ -464,6 +467,16 @@ body { font-size: 1rem; color: var(--text-primary); margin-bottom: 20px; + text-align: justify; +} +.bio-text.collapsed { + display: -webkit-box; + -webkit-line-clamp: 3; + -webkit-box-orient: vertical; + overflow: hidden; +} +.link-btn { + background: none; border: none; color: var(--accent); cursor: pointer; font-size: 0.85rem; } .quote-box { @@ -1032,6 +1045,7 @@ body { background-clip: text; color: transparent; } + .comment-box { padding: 24px; } } /* ========================================= @@ -1204,19 +1218,25 @@ body { scroll-snap-type: x mandatory; /* 添加淡入淡出效果 */ mask-image: linear-gradient( - to right, - transparent 0%, - black 10%, - black 90%, - transparent 100% + to right, + transparent 0%, + black 10%, + black 90%, + transparent 100% ); -webkit-mask-image: linear-gradient( - to right, - transparent 0%, - black 10%, - black 90%, - transparent 100% + to right, + transparent 0%, + black 10%, + black 90%, + transparent 100% ); + animation: techMarquee 18s linear infinite; + } + + @keyframes techMarquee { + 0% { transform: translateX(0); } + 100% { transform: translateX(-33.333%); } } .tech-tag-mobile { @@ -1319,6 +1339,7 @@ body { background-clip: text; color: transparent; } + .comment-box { padding: 16px; } } /* ========================================= diff --git a/js/about.js b/js/about.js index 73a643f..6cf90d6 100644 --- a/js/about.js +++ b/js/about.js @@ -141,13 +141,21 @@ class DataManager { try { // Parallel Fetch - const [uRes, rRes] = await Promise.allSettled([ - fetch(`https://api.github.com/users/${user}`), - fetch(`https://api.github.com/users/${user}/repos?sort=stars&per_page=100`) - ]); - - const userData = uRes.status === 'fulfilled' ? await uRes.value.json() : (window.SiteConfig?.defaults?.user); - let repoData = rRes.status === 'fulfilled' ? await rRes.value.json() : (window.SiteConfig?.defaults?.repos); + const uRes = await fetch(`https://api.github.com/users/${user}`); + const userData = uRes.ok ? await uRes.json() : (window.SiteConfig?.defaults?.user); + let allRepos = []; + let page = 1; + const perPage = 100; + while (page <= 5) { // 最多抓取500条,直到满足条件或为空 + const rRes = await fetch(`https://api.github.com/users/${user}/repos?sort=stars&per_page=${perPage}&page=${page}`); + if (!rRes.ok) break; + const repos = await rRes.json(); + if (!Array.isArray(repos) || repos.length === 0) break; + allRepos = allRepos.concat(repos); + if (allRepos.length >= 200) break; // 足量 + page++; + } + let repoData = allRepos.length ? allRepos : (window.SiteConfig?.defaults?.repos); // 过滤掉fork项目并按星数排序 if (Array.isArray(repoData)) { @@ -319,6 +327,9 @@ class UIManager { this.initTechCloud(); this.initModal(); this.initArtalk(); + this.initBioToggle(); + this.initNavInteraction(); + this.initProfileGradient(); let resizeTimer = null; window.addEventListener('resize', () => { clearTimeout(resizeTimer); @@ -354,6 +365,33 @@ class UIManager { } } + initBioToggle() { + const el = document.querySelector('.bio-text'); + const btn = document.getElementById('bio-toggle'); + if(!el || !btn) return; + btn.addEventListener('click', () => { + el.classList.toggle('collapsed'); + }); + } + + initNavInteraction() { + const nav = document.querySelector('.glass-nav'); + if(!nav) return; + const onScroll = () => { + const y = window.scrollY || document.documentElement.scrollTop; + nav.classList.toggle('nav-scrolled', y > 30); + }; + onScroll(); + window.addEventListener('scroll', onScroll, { passive: true }); + } + + initProfileGradient() { + const name = document.querySelector('.hero-name'); + const role = document.querySelector('.hero-role'); + if(name) name.classList.add('animated-gradient'); + if(role) role.classList.add('animated-gradient'); + } + initTechCloud() { const container = document.getElementById('tech-container'); if(!container) return; @@ -388,8 +426,7 @@ class UIManager { } else { // PC: 3D Sphere container.classList.remove('mobile-scroll'); - const token = Date.now(); - container.__animToken = token; + container.__animToken = Date.now(); const tags = []; techStack.forEach((item, index) => { diff --git a/js/config.js b/js/config.js index f3a37fe..5d25bb5 100644 --- a/js/config.js +++ b/js/config.js @@ -34,33 +34,11 @@ const SiteConfig = { // about.js 配置 github: { - username: 'listener-He', - cache: { - cacheKey: "gh_data_v2", - stats: { - key: 'github_stats_cache', - timeKey: 'github_stats_cache_time', - expirationDays: 3 - }, - projects: { - key: 'github_projects_cache', - timeKey: 'github_projects_cache_time', - expirationDays: 3 - }, - commits: { - key: 'github_commits_cache', - timeKey: 'github_commits_cache_time', - expirationHours: 24 - } - } + username: 'listener-He' }, blog: { - rssUrl: 'https://blog.hehouhui.cn/api/rss', - cache: { - key: 'blog_articles_cache', - expirationDays: 1 - } + rssUrl: 'https://blog.hehouhui.cn/api/rss' }, // 通用缓存键与TTL(毫秒)