knowledge.html 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta name="description" content="浠艾福成长百科 — 围绕身·智·富·行·心五大维度,用科学知识为每个家庭的健康成长保驾护航。">
  7. <meta name="keywords" content="浠艾福,成长百科,育儿知识,五维能量,亲子教育">
  8. <meta property="og:title" content="成长百科 — 浠艾福主动健康学院">
  9. <meta property="og:description" content="围绕身·智·富·行·心五大维度,用科学知识为每个家庭的健康成长保驾护航。">
  10. <meta property="og:type" content="website">
  11. <meta property="og:url" content="https://www.etotem.com.cn/knowledge.html">
  12. <meta name="theme-color" content="#4A9BD7">
  13. <title>成长百科 — 浠艾福主动健康学院</title>
  14. <link rel="stylesheet" href="css/style.css">
  15. <!-- Microsoft Clarity -->
  16. <script>
  17. (function(c,l,a,r,i,t,y){
  18. c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};
  19. t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i;
  20. y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);
  21. })(window, document, "clarity", "script", "xj4p74ra9m");
  22. </script>
  23. <style>
  24. :root {
  25. --c-body: #FF8C42;
  26. --c-wisdom: #6366F1;
  27. --c-wealth: #F59E0B;
  28. --c-action: #10B981;
  29. --c-heart: #FF6B9D;
  30. }
  31. html.kb-page, .kb-page body { height: 100vh; overflow: hidden; }
  32. .kb-page body { display: flex; flex-direction: column; background: linear-gradient(135deg, #FAFBFC 0%, #F0F4F8 100%); }
  33. .kb-main { flex:1; display:flex; flex-direction:column; max-width:1200px; width:100%; margin:64px auto 0; padding:0 var(--space-lg); overflow:hidden; position:relative; z-index:1; }
  34. .kb-header { text-align:center; flex-shrink:0; padding:var(--space-lg) 0 var(--space-md); }
  35. .kb-header h1 { font-size:2rem; font-weight:800; color:var(--color-text-primary); margin-bottom:2px; }
  36. .kb-header p { font-size:var(--font-size-small); color:var(--color-text-secondary); }
  37. .kb-body-wrap { flex:1; display:flex; align-items:center; justify-content:center; padding-bottom:var(--space-md); min-height:0; position:relative; }
  38. .kb-body-inner { position:relative; width:100%; max-width:700px; height:100%; display:flex; align-items:center; justify-content:center; }
  39. .kb-body-img { display:block; max-width:100%; max-height:100%; width:auto; height:auto; object-fit:contain; border-radius:var(--radius-lg); box-shadow:0 8px 40px rgba(74,155,215,0.08); }
  40. .kb-marker { position:absolute; z-index:2; }
  41. .kb-marker-card { pointer-events:auto; background:rgba(255,255,255,0.95); backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px); border-radius:12px; padding:10px 14px; border:1.5px solid var(--m-color,var(--color-border-light)); box-shadow:0 4px 16px rgba(0,0,0,0.06); min-width:170px; max-width:220px; transition:box-shadow .2s, transform .2s; }
  42. .kb-marker-card:hover { box-shadow:0 6px 24px rgba(0,0,0,0.10); transform:translateY(-1px); }
  43. .kb-marker-dot { position:absolute; width:12px; height:12px; border-radius:50%; background:var(--m-color); border:2px solid #fff; box-shadow:0 1px 4px rgba(0,0,0,0.15); top:50%; margin-top:-6px; pointer-events:none; }
  44. .kb-marker--right .kb-marker-dot { left:-6px; }
  45. .kb-marker--left .kb-marker-dot { right:-6px; }
  46. .kb-marker-head { display:flex; align-items:center; gap:6px; margin-bottom:6px; padding-bottom:6px; border-bottom:1px solid var(--color-border-light); }
  47. .kb-marker-label { font-size:0.8125rem; font-weight:700; color:var(--m-color,var(--color-text-primary)); }
  48. .kb-marker .kb-more-btn { font-size:0.75rem; font-weight:700; color:var(--m-color); cursor:pointer; opacity:0.5; transition:opacity .2s; user-select:none; margin-left:auto; }
  49. .kb-marker .kb-more-btn:hover { opacity:1; }
  50. .kb-marker .kb-hidden-items { display:none; position:absolute; top:0; z-index:3; background:rgba(255,255,255,0.95); backdrop-filter:blur(8px); border-radius:12px; padding:10px 14px; border:1.5px solid var(--m-color); box-shadow:0 4px 16px rgba(0,0,0,0.06); min-width:170px; max-width:220px; pointer-events:auto; }
  51. .kb-marker--right .kb-hidden-items { left:100%; }
  52. .kb-marker--left .kb-hidden-items { right:100%; }
  53. .kb-marker-card a, .kb-hidden-items a { display:flex; align-items:center; gap:6px; padding:5px 0; text-decoration:none; color:var(--color-text-secondary); font-size:0.8125rem; line-height:1.3; border-bottom:1px solid var(--color-border-light); transition:color .2s; }
  54. .kb-marker-card a:last-child, .kb-hidden-items a:last-child { border-bottom:none; }
  55. .kb-marker-card a:hover, .kb-hidden-items a:hover { color:var(--m-color,var(--color-primary)); }
  56. .kb-marker-card a .ma-icon, .kb-hidden-items a .ma-icon { font-size:1rem; flex-shrink:0; }
  57. .kb-marker-card a .ma-title, .kb-hidden-items a .ma-title { flex:1; min-width:0; }
  58. .kb-marker-card a .ma-arrow, .kb-hidden-items a .ma-arrow { flex-shrink:0; font-size:0.75rem; opacity:0.3; transition:transform .2s; }
  59. .kb-marker-card a:hover .ma-arrow, .kb-hidden-items a:hover .ma-arrow { transform:translateX(3px); opacity:0.7; }
  60. .kb-marker-card .ma-coming, .kb-hidden-items .ma-coming { opacity:0.5; cursor:default; pointer-events:none; font-size:0.75rem; padding:4px 0; }
  61. .kb-m-pos-brain { top:13%; left:56%; }
  62. .kb-m-pos-heart { top:33%; right:54%; }
  63. .kb-m-pos-body { top:48%; left:54%; }
  64. .kb-m-pos-wealth { top:64%; right:54%; }
  65. .kb-m-pos-action { top:82%; left:54%; }
  66. .kb-footer { flex-shrink:0; text-align:center; padding:var(--space-sm) 0; font-size:var(--font-size-tiny); color:var(--color-text-muted); border-top:1px solid var(--color-border-light); }
  67. .kb-footer a { color:var(--color-text-muted); text-decoration:none; }
  68. .kb-footer a:hover { color:var(--color-primary); }
  69. .kb-mobile { display:none; }
  70. @media (max-width:768px) {
  71. .kb-body-wrap { display:none; }
  72. .kb-mobile { display:flex; flex-direction:column; flex:1; min-height:0; }
  73. .kb-header { padding:var(--space-md) 0 var(--space-sm); }
  74. .kb-header h1 { font-size:1.5rem; }
  75. .kb-tabs { display:flex; gap:4px; overflow-x:auto; -webkit-overflow-scrolling:touch; scrollbar-width:none; flex-shrink:0; padding:0 0 var(--space-sm); }
  76. .kb-tabs::-webkit-scrollbar { display:none; }
  77. .kb-tab { flex-shrink:0; padding:0.45em 1em; font-size:0.9375rem; font-weight:700; border:2px solid var(--color-border-light); border-radius:var(--radius-full); background:#fff; color:var(--color-text-secondary); cursor:pointer; transition:all var(--transition-fast); font-family:inherit; line-height:1.3; }
  78. .kb-tab:hover { border-color:var(--tab-color,var(--color-primary)); color:var(--tab-color); }
  79. .kb-tab.active { border-color:var(--tab-color,var(--color-primary)); background:color-mix(in srgb, var(--tab-color,var(--color-primary)) 10%, white); color:var(--tab-color,var(--color-primary)); }
  80. .kb-articles { flex:1; overflow-y:auto; -webkit-overflow-scrolling:touch; padding-bottom:var(--space-sm); }
  81. .kb-a-item { display:flex; align-items:center; gap:var(--space-sm); padding:var(--space-sm) var(--space-md); background:#fff; border-radius:var(--radius-md); border:1px solid var(--color-border-light); text-decoration:none; color:var(--color-text-primary); margin-bottom:var(--space-sm); transition:box-shadow var(--transition-fast), border-color var(--transition-fast); }
  82. .kb-a-item:last-child { margin-bottom:0; }
  83. .kb-a-item:active { box-shadow:var(--shadow-sm); border-color:var(--color-primary); }
  84. .kb-a-item .ai-icon { font-size:1.3rem; flex-shrink:0; }
  85. .kb-a-item .ai-info { flex:1; min-width:0; }
  86. .kb-a-item .ai-info h4 { font-size:0.9375rem; font-weight:700; margin-bottom:0.15em; line-height:1.3; }
  87. .kb-a-item .ai-info p { font-size:0.8125rem; color:var(--color-text-muted); line-height:1.4; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
  88. .kb-a-coming { opacity:0.55; pointer-events:none; }
  89. }
  90. @media (max-width:480px) {
  91. .kb-header h1 { font-size:1.3rem; }
  92. .kb-main { padding:0 var(--space-md); }
  93. .kb-tab { padding:0.35em 0.8em; font-size:0.875rem; }
  94. }
  95. .scroll-indicator { display:none; }
  96. </style>
  97. </head>
  98. <body class="kb-page">
  99. <header class="site-header" id="header">
  100. <div class="container header-inner">
  101. <a href="index.html" class="logo">
  102. <img src="logo.png" alt="浠艾福" class="logo-img" width="36" height="36">
  103. <span class="logo-text">浠艾福</span>
  104. <span class="logo-tag">主动健康</span>
  105. </a>
  106. <button class="nav-toggle" id="navToggle" aria-label="切换导航"><span></span><span></span><span></span></button>
  107. <nav class="nav" id="nav">
  108. <ul class="nav-list">
  109. <li><a href="index.html" class="nav-link">首页</a></li>
  110. <li><a href="knowledge.html" class="nav-link active">成长百科</a></li>
  111. </ul>
  112. </nav>
  113. </div>
  114. </header>
  115. <div class="kb-main">
  116. <div class="kb-header">
  117. <h1>成长百科</h1>
  118. <p>身 · 智 · 富 · 行 · 心 — 科学育儿,从了解自己开始</p>
  119. </div>
  120. <div class="kb-body-wrap" id="kbDesktop">
  121. <div class="kb-body-inner" id="kbBodyInner">
  122. <img src="img/human-body.png" alt="人体五维成长百科" class="kb-body-img" id="kbBodyImg">
  123. </div>
  124. </div>
  125. <div class="kb-mobile" id="kbMobile">
  126. <div class="kb-tabs" id="kbTabs"></div>
  127. <div class="kb-articles" id="kbArticles"></div>
  128. </div>
  129. </div>
  130. <!-- Footer (shared) -->
  131. <div id="footer-placeholder"></div>
  132. <script src="js/footer.js"></script>
  133. <script>
  134. var DIMS = [
  135. { key:'body', label:'身', color:'#FF8C42', subtitle:'根基永固 · 主动健康', bodyPart:'gut' },
  136. { key:'wisdom', label:'智', color:'#6366F1', subtitle:'赋能未来 · 智慧启迪', bodyPart:'brain' },
  137. { key:'wealth', label:'富', color:'#F59E0B', subtitle:'利他创富 · 价值创造', bodyPart:'hands' },
  138. { key:'action', label:'行', color:'#10B981', subtitle:'人际和谐 · 知行合一', bodyPart:'feet' },
  139. { key:'heart', label:'心', color:'#FF6B9D', subtitle:'大爱相随 · 情感滋养', bodyPart:'heart' }
  140. ];
  141. var ARTICLES = {
  142. body: [
  143. { icon:'🌿', title:'孩子过敏反复不好,根源可能在肠道', desc:'从肠道菌群-免疫-过敏三角关系出发,解析儿童过敏的深层原因。', url:'articles/geo-faq-1-allergy.html' },
  144. { icon:'🛡️', title:'儿童免疫力提升3大关键步骤', desc:'从肠道微生态、营养支持与睡眠节律三个维度系统提升自护力。', url:'articles/geo-faq-3-immunity.html' },
  145. { icon:'🌊', title:'微塑料对家庭健康的隐形危害', desc:'揭秘微塑料如何影响肠道菌群与激素系统及家庭防护策略。', url:'articles/plastic-health.html' },
  146. { icon:'🩺', title:'2型糖尿病:慢性炎症驱动的β细胞凋亡', desc:'从慢性炎症、肠道菌群与胰岛素抵抗角度解析2型糖尿病的发生机制与主动干预策略。', url:'articles/diabetes.html' },
  147. { icon:'🦴', title:'骨质疏松:骨骼健康的主动管理', desc:'骨质疏松的症-病-因分析与主动健康干预五步法,从营养运动到药物管理。', url:'articles/osteoporosis.html' },
  148. { icon:'🧬', title:'癌症预防:科学筛查与主动健康', desc:'癌症的发病机制与危险因素解析,提供主动健康五步干预策略降低患癌风险。', url:'articles/cancer.html' },
  149. { icon:'🧠', title:'阿尔茨海默病:认识认知衰退的早期信号', desc:'从神经炎症、肠道菌群与肠-脑轴角度解析阿尔茨海默病的发生机制与主动干预策略。', url:'articles/alzheimer.html' },
  150. { icon:'🍎', title:'精准营养:每个家庭的健康基石', desc:'基于个体代谢特征定制真正适合家人的膳食方案。', coming:true },
  151. { icon:'🚰', title:'自来水中的隐形威胁', desc:'自来水中抗生素、雌激素与内分泌干扰物污染全解析及对肠道菌群的影响。', url:'articles/tap-water-pollution.html' }
  152. ],
  153. wisdom: [
  154. { icon:'🧠', title:'注意力不集中,先查肠道再谈训练', desc:'肠道菌群通过肠-脑轴影响注意力与认知功能,科学认知从根源入手。', url:'articles/geo-faq-2-attention.html' },
  155. { icon:'📖', title:'成长型思维:帮助孩子拥抱挑战', desc:'从心理学研究出发,培养孩子面对困难时不放弃的核心信念。', coming:true }
  156. ],
  157. wealth: [
  158. { icon:'💡', title:'从小培养孩子的财商思维', desc:'零花钱管理、目标储蓄与价值交换,让财商教育融入日常生活。', coming:true },
  159. { icon:'🌱', title:'家庭创客生态:利他中的财富', desc:'在利他分享中创造价值,探索适合家庭的第二收入曲线。', coming:true }
  160. ],
  161. action: [
  162. { icon:'👨‍👩‍👧‍👦', title:'亲子关系:从控制到陪伴', desc:'当78%的孩子觉得父母不关心自己的感受,而100%的家长都认为自己非常关心孩子——这道鸿沟,到底在哪里?', url:'articles/parent-child-relationship.html' },
  163. { icon:'💑', title:'夫妻关系:从合伙人到同行者', desc:'结婚多年,对话浓缩成了"事务清单"。你们像两个优秀的合伙人,但少了什么?', url:'articles/marriage-relationship.html' },
  164. { icon:'🧰', title:'家庭关系实用工具箱', desc:'家庭会议、三明治沟通法、关系能量账户——三个经过验证的方法,明天就能用。', url:'articles/family-toolbox.html' }
  165. ],
  166. heart: [
  167. { icon:'❤️', title:'心脑血管疾病:从症-病-因到主动健康干预', desc:'心脑血管疾病的症状识别、发病机制与主动健康五步干预,科学守护心血管健康。', url:'articles/cardio-cerebro.html' },
  168. { icon:'💛', title:'亲子沟通:如何听懂孩子的心', desc:'从共情力到非暴力沟通,帮助家长走进孩子的内心世界。', coming:true },
  169. { icon:'🕊️', title:'儿童情绪管理:从认知到调节', desc:'理解各年龄段情绪发展规律,掌握实用的情绪疏导方法。', coming:true }
  170. ]
  171. };
  172. var MARKER_POS = {
  173. brain: { top:'1%', side:'left', offset:'55%' },
  174. heart: { top:'21%', side:'right', offset:'52%' },
  175. gut: { top:'36%', side:'left', offset:'53%' },
  176. hands: { top:'52%', side:'right', offset:'65%' },
  177. feet: { top:'71%', side:'left', offset:'53%' }
  178. };
  179. (function buildDesktop() {
  180. var c = document.getElementById('kbBodyInner');
  181. for (var i = 0; i < DIMS.length; i++) {
  182. var d = DIMS[i], pos = MARKER_POS[d.bodyPart], arts = ARTICLES[d.key] || [];
  183. var sideCls = pos.side==='left' ? 'kb-marker--right' : 'kb-marker--left';
  184. var m = document.createElement('div');
  185. m.className = 'kb-marker ' + sideCls;
  186. m.style.cssText = 'top:'+pos.top+';'+(pos.side==='left'?'left:'+pos.offset:'right:'+pos.offset);
  187. m.style.setProperty('--m-color', d.color);
  188. var card = document.createElement('div');
  189. card.className = 'kb-marker-card';
  190. card.style.setProperty('--m-color', d.color);
  191. var hd = document.createElement('div');
  192. hd.className = 'kb-marker-head';
  193. hd.innerHTML = '<span class="kb-marker-label">'+d.label+' · '+d.subtitle+'</span>';
  194. var maxVis = 3, hiddenDiv = null;
  195. if (arts.length > maxVis) {
  196. var moreBtn = document.createElement('span');
  197. moreBtn.className = 'kb-more-btn';
  198. moreBtn.textContent = '>>';
  199. hd.appendChild(moreBtn);
  200. hiddenDiv = document.createElement('div');
  201. hiddenDiv.className = 'kb-hidden-items';
  202. m.appendChild(hiddenDiv);
  203. (function(h,d){ var t=null; h.onmouseenter=function(){ if(t){clearTimeout(t);t=null} d.style.display='block'; }; h.onmouseleave=function(){ if(!t){t=setTimeout(function(){ if(!d.matches(':hover')){ d.style.display='none'; } t=null; },500);} }; d.onmouseenter=function(){ if(t){clearTimeout(t);t=null} d.style.display='block'; }; d.onmouseleave=function(){ if(!t){t=setTimeout(function(){ if(!h.matches(':hover')){ d.style.display='none'; } t=null; },500);} }; })(hd, hiddenDiv);
  204. }
  205. card.appendChild(hd);
  206. for (var j = 0; j < arts.length; j++) {
  207. var a = arts[j], el, container = card;
  208. if (j >= maxVis && hiddenDiv) container = hiddenDiv;
  209. if (a.coming) {
  210. el = document.createElement('div');
  211. el.className = 'ma-coming';
  212. el.innerHTML = '<span class="ma-icon">'+a.icon+'</span><span class="ma-title">'+a.title+' 即将上线</span>';
  213. } else {
  214. el = document.createElement('a');
  215. el.href = a.url;
  216. el.innerHTML = '<span class="ma-icon">'+a.icon+'</span><span class="ma-title">'+a.title+'</span><span class="ma-arrow">\u2192</span>';
  217. }
  218. container.appendChild(el);
  219. }
  220. var dot = document.createElement('div');
  221. dot.className = 'kb-marker-dot';
  222. dot.style.background = d.color;
  223. card.appendChild(dot);
  224. m.appendChild(card);
  225. c.appendChild(m);
  226. }
  227. })();
  228. var activeDim = 'body';
  229. function buildTabs() {
  230. var c = document.getElementById('kbTabs'), h = '';
  231. for (var i = 0; i < DIMS.length; i++) {
  232. var d = DIMS[i];
  233. h += '<button class="kb-tab'+(d.key===activeDim?' active':'')+'" style="--tab-color:'+d.color+'" data-dim="'+d.key+'" onclick="switchTab(\''+d.key+'\')">'+d.label+'</button>';
  234. }
  235. c.innerHTML = h;
  236. }
  237. function renderArticles(k) {
  238. var c = document.getElementById('kbArticles'), arts = ARTICLES[k] || [], h = '';
  239. for (var i = 0; i < arts.length; i++) {
  240. var a = arts[i];
  241. if (a.coming) {
  242. h += '<div class="kb-a-item kb-a-coming"><span class="ai-icon">'+a.icon+'</span><div class="ai-info"><h4>'+a.title+'</h4><p>'+a.desc+'</p></div></div>';
  243. } else {
  244. h += '<a href="'+a.url+'" class="kb-a-item"><span class="ai-icon">'+a.icon+'</span><div class="ai-info"><h4>'+a.title+'</h4><p>'+a.desc+'</p></div><span style="color:var(--color-text-muted);font-size:0.9rem">→</span></a>';
  245. }
  246. }
  247. c.innerHTML = h;
  248. }
  249. function switchTab(k) { activeDim=k; var t=document.querySelectorAll('#kbTabs .kb-tab'); for(var i=0;i<t.length;i++){t[i].classList.remove('active');if(t[i].getAttribute('data-dim')===k)t[i].classList.add('active');} renderArticles(k); }
  250. buildTabs(); renderArticles(activeDim);
  251. document.getElementById('navToggle').addEventListener('click',function(){document.getElementById('nav').classList.toggle('nav-open');this.classList.toggle('active');});
  252. </script>
  253. </body>
  254. </html>