此刻头像:穿插头像库的妈妈和宝宝头像(上面 4 张、下面动态 6 张)v26101011

Co-Authored-By: AI 助手
This commit is contained in:
karlcarlo
2026-10-11 07:50:49 +00:00
parent c663f66914
commit 13afde8f2d
2 changed files with 11 additions and 8 deletions

View File

@@ -7,7 +7,7 @@
<meta name="mobile-web-app-capable" content="yes"> <meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
<title>兜爸心选 · 孕育陪伴</title> <title>兜爸心选 · 孕育陪伴</title>
<!-- V:26101010 缓存版本标记:改 css/js 时同步 bump 该值(与 js/app.js 的 VER 同源),静态资源按 mtime 走 ETag 自动刷新 --> <!-- V:26101011 缓存版本标记:改 css/js 时同步 bump 该值(与 js/app.js 的 VER 同源),静态资源按 mtime 走 ETag 自动刷新 -->
<link rel="stylesheet" href="mama-box.css"> <link rel="stylesheet" href="mama-box.css">
<link rel="stylesheet" href="night.css"> <link rel="stylesheet" href="night.css">
<!-- 夜晚模式:首屏绘制前就按上次的选择加 class,避免先白后黑闪一下(开关在首页右上角 #nightBtn,逻辑见 app.js) --> <!-- 夜晚模式:首屏绘制前就按上次的选择加 class,避免先白后黑闪一下(开关在首页右上角 #nightBtn,逻辑见 app.js) -->

View File

@@ -3,7 +3,7 @@
(function () { (function () {
'use strict'; 'use strict';
/* 页面版本号(YYMMDD+序号):显示在「关于兜爸心选」页底部;bump 时同步 head 注释与 ?v= */ /* 页面版本号(YYMMDD+序号):显示在「关于兜爸心选」页底部;bump 时同步 head 注释与 ?v= */
var VER = '26101010'; var VER = '26101011';
const $ = (s, c) => (c || document).querySelector(s); const $ = (s, c) => (c || document).querySelector(s);
const $$ = (s, c) => Array.from((c || document).querySelectorAll(s)); const $$ = (s, c) => Array.from((c || document).querySelectorAll(s));
@@ -3531,12 +3531,15 @@
/* 「此刻」头像(2026-10-10 用户:「换成真实人物的,不要卡通」→ 同日二改:妈妈、宝宝、风景穿插 → /* 「此刻」头像(2026-10-10 用户:「换成真实人物的,不要卡通」→ 同日二改:妈妈、宝宝、风景穿插 →
同日三改:「上面那 8 个和下面一直轮换的头像不要有重叠,多准备一些」)。 同日三改:「上面那 8 个和下面一直轮换的头像不要有重叠,多准备一些」)。
45 张 AI 生成的写实照片(妈妈 m* / 宝宝 k* / 风景 s*),拆成两个**不相交**的池: 45 张 AI 生成的写实照片(妈妈 m* / 宝宝 k* / 风景 s*),拆成两个**不相交**的池:
· AVA_TOP 16 张 → 上面叠着的 8 个(按孕周取连续 8 张,组内不重复); · AVA_TOP 20 张(含 4 张头像库)→ 上面叠着的 8 个(按孕周取连续 8 张,组内不重复);
· AVA_FEED 29 张 → 下面滚动动态,按行序依次取(一轮动态最多 20 条 < 29,不会撞)。 · AVA_FEED 35 张(含 6 张头像库)→ 下面滚动动态,按行序依次取(一轮动态最多 20 条 < 35,不会撞)。
全部是 AI 虚构画面,不对应任何真实用户;96×96 JPG,懒加载。原 SVG 卡通头像见 git 历史 v26101001。 */ 全部是 AI 虚构画面,不对应任何真实用户;96×96 JPG,懒加载。原 SVG 卡通头像见 git 历史 v26101001。 */
const AVA_TOP = ['m01', 'k01', 'm02', 's02', 'm03', 'k04', 'm04', 's05', 'm05', 'k06', 'm06', 's09', 'm07', 'k10', 'm08', 's10']; const AVA_TOP = ['m01', 'k01', 'm02', 's02', 'mom-03', 'm03', 'k04', 'm04', 's05', 'baby-02', 'm05', 'k06', 'm06', 's09', 'mom-11', 'm07', 'k10', 'm08', 's10', 'baby-06'];
const AVA_FEED = ['m09', 'k02', 's01', 'm10', 'k03', 's03', 'm11', 'k05', 's04', 'm12', 'k07', 's06', 'm13', 'k08', 's07', 'm14', 'k09', 's08', 'm15', 'k11', 'm16', 'k12', 'm17', 'k13', 'm18', 'm19', 'm20', 'm21', 'm22']; const AVA_FEED = ['m09', 'k02', 's01', 'm10', 'k03', 'mom-05', 's03', 'm11', 'k05', 's04', 'm12', 'baby-04', 'k07', 's06', 'm13', 'k08', 's07', 'mom-08', 'm14', 'k09', 's08', 'm15', 'k11', 'mom-14', 'm16', 'k12', 'm17', 'k13', 'm18', 'baby-09', 'm19', 'm20', 'm21', 'm22', 'mom-17'];
const avaImg = n => '<img src="assets/img/mom/' + n + '.jpg" alt="" loading="lazy" decoding="async" width="48" height="48">'; /* mom-* / baby-* 取自统一头像库 /_bridge/avatars/(2026-10-11 用户:「可以适当调几个我库里预存的头像,妈妈和宝宝的」);
其余仍是 assets/img/mom/ 下的写实照片。库头像是 256px 透明底 PNG,底色由 .pr-ava / .pp-avs i 的 #FFE3D3 托住。 */
const avaSrc = n => /^(mom|baby)-\d+$/.test(n) ? 'https://mp.yizhezhe.com/_bridge/avatars/' + n + '.png' : 'assets/img/mom/' + n + '.jpg';
const avaImg = n => '<img src="' + avaSrc(n) + '" alt="" loading="lazy" decoding="async" width="48" height="48">';
const strSeed = t => { let x = 7; for (let i = 0; i < t.length; i++) x = (x * 31 + t.charCodeAt(i)) | 0; return Math.abs(x); }; const strSeed = t => { let x = 7; for (let i = 0; i < t.length; i++) x = (x * 31 + t.charCodeAt(i)) | 0; return Math.abs(x); };
/* 「此刻」重绘钩子:足迹 / 档案 / 盲盒状态回来时调用(它们决定「和你比」「今日待办」和孕周) */ /* 「此刻」重绘钩子:足迹 / 档案 / 盲盒状态回来时调用(它们决定「和你比」「今日待办」和孕周) */
let plHook = null; let plHook = null;
@@ -4138,7 +4141,7 @@
if (avs.dataset.seed === String(seed)) return; if (avs.dataset.seed === String(seed)) return;
avs.dataset.seed = seed; avs.dataset.seed = seed;
/* 2026-10-02 用户:「头像现在展示 3 个,给我展示 6 到 8 个」→ 7 个 */ /* 2026-10-02 用户:「头像现在展示 3 个,给我展示 6 到 8 个」→ 7 个 */
/* 2026-10-10 用户说「那 8 个」→ 8 个。按孕周轮换起点连续取 8 张:16 张的池子组内必不重复,也不和下面动态共用 */ /* 2026-10-10 用户说「那 8 个」→ 8 个。按孕周轮换起点连续取 8 张:20 张的池子组内必不重复,也不和下面动态共用 */
const st = (Math.abs(seed | 0) * 8) % AVA_TOP.length; const st = (Math.abs(seed | 0) * 8) % AVA_TOP.length;
avs.innerHTML = Array.from({ length: 8 }, (_, k) => '<i>' + avaImg(AVA_TOP[(st + k) % AVA_TOP.length]) + '</i>').join(''); avs.innerHTML = Array.from({ length: 8 }, (_, k) => '<i>' + avaImg(AVA_TOP[(st + k) % AVA_TOP.length]) + '</i>').join('');
} }