首页宝宝踢:先只鼓包,0.7 秒后小脚丫才慢慢浮现(v26110649)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
deploy
2026-11-07 10:35:12 +00:00
parent e74c116534
commit c858801268
3 changed files with 10 additions and 9 deletions

View File

@@ -9,7 +9,7 @@
<title>兜爸心选 · 孕育陪伴</title>
<!-- 11-04 UGC 总开关(孕妈广场 + 测一测,后台 /box_bm/plaza 顶部切换),见 js/ugc.js -->
<script src="js/ugc.js?v=26110702"></script>
<!-- V:26110648 缓存版本标记:改 css/js 时同步 bump 该值(与 js/app.js 的 VER 同源),静态资源按 mtime 走 ETag 自动刷新 -->
<!-- V:26110649 缓存版本标记:改 css/js 时同步 bump 该值(与 js/app.js 的 VER 同源),静态资源按 mtime 走 ETag 自动刷新 -->
<link rel="stylesheet" href="mama-box.css">
<link rel="stylesheet" href="night.css?v=26110608">
<link rel="stylesheet" href="js/wh-cm.css?v=26110642">
@@ -2732,7 +2732,7 @@ html.night .rs-pan .rp-card{background:rgba(255,255,255,.06);border-color:rgba(2
})();
</script>
<!-- 2026-10-03 首页彩蛋:宝宝在肚皮底下动(独立文件,删掉这一行即整体下线;开关在「隐私权限」) -->
<script src="js/bump.js?v=26110648"></script>
<script src="js/bump.js?v=26110649"></script>
<!-- 2026-10-04 首页头图:按孕周换宝宝 + 阳光水波(独立文件) -->
<script src="js/hero-fx.js"></script>
<!-- 2026-10-05 首页头图:宝宝时不时动一动小手小脚(独立文件,删掉这一行即下线) -->

View File

@@ -3,7 +3,7 @@
(function () {
'use strict';
/* 页面版本号(YYMMDD+序号):显示在「关于兜爸心选」页底部;bump 时同步 head 注释与 ?v= */
var VER = '26110648';
var VER = '26110649';
const $ = (s, c) => (c || document).querySelector(s);
const $$ = (s, c) => Array.from((c || document).querySelectorAll(s));

View File

@@ -472,15 +472,16 @@
for (const [tx, ty, trx, try_] of TOES) { cx.moveTo(tx + dx + trx, ty + dy); cx.ellipse(tx + dx, ty + dy, trx, try_, 0, 0, 7); }
cx.fill();
}
function footprint(x, y, rx, ry, ang, k) {
function footprint(x, y, rx, ry, ang, k, life) {
/* 11-07 用户纠正:「要按之前的踢法——先从页面底下把页面踢得鼓起来,隐隐约约,之后才能看清一个小小的脚丫子」
→ 脚印缩小到鼓包的一半、软边,顶到六成以上才慢慢浮出来,到最高点也只是浅浅一层(不是贴上去的脚丫图) */
if (k < .6) return;
const t = (k - .6) / .4, a = t * t * (3 - 2 * t), f = .5;
→ 前 0.7 秒只有鼓包,之后 1 秒里小脚丫才慢慢浮出来;脚印缩小到鼓包的一半、软边,最清楚时也只是浅浅一层(不是贴上去的脚丫图);鼓包收回去时跟着淡掉 */
if (k < .5 || life < .7) return;
const sm = v => (v = Math.min(1, Math.max(0, v)), v * v * (3 - 2 * v));
const a = sm((k - .5) / .5) * sm((life - .7) / 1), f = .5;
cx.save(); cx.translate(x, y); cx.rotate(ang); cx.scale(rx * f, ry * f);
cx.shadowBlur = 6 * dpr;
cx.fillStyle = cx.shadowColor = 'rgba(255,255,255,' + (.2 * a).toFixed(3) + ')'; soleShape(-.03, -.035);
cx.fillStyle = cx.shadowColor = 'rgba(120,72,58,' + (.2 * a).toFixed(3) + ')'; soleShape(0, 0);
cx.fillStyle = cx.shadowColor = 'rgba(120,72,58,' + (.24 * a).toFixed(3) + ')'; soleShape(0, 0);
cx.restore();
}
function paint() {
@@ -500,7 +501,7 @@
[-.07, -.09, .2, 'rgba(255,255,255,' + (.5 * k).toFixed(3) + ')']])
]);
// 小脚丫顶上来时,隐隐约约带出一个脚印:极淡、全是软边,峰值时才看得出,凑近看像有像无
if (P === PARTS.foot || P === PARTS.kick) footprint(ft.x + ft.ox + ox, ft.y + ft.oy + oy, P.rx * sp, P.ry * sp, ft.ang + (mode === 'show' ? ft.wob : 0), Math.min(H / P.amp, 1));
if (P === PARTS.foot || P === PARTS.kick) footprint(ft.x + ft.ox + ox, ft.y + ft.oy + oy, P.rx * sp, P.ry * sp, ft.ang + (mode === 'show' ? ft.wob : 0), Math.min(H / P.amp, 1), ft.life);
}
const D = pk.d.v;
if (D < -.2) {