宝宝身高预测加 3 题(家族身高/作息/运动),结果按回答小幅调整(v26110437)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
deploy
2026-11-05 00:30:52 +00:00
parent 0e39854a7d
commit 0552450207
25 changed files with 106 additions and 93 deletions

View File

@@ -10,8 +10,8 @@
对比用国家卫健委《中国居民营养与慢性病状况报告(2020 年)》18~44 岁平均身高:男 169.7 cm、女 158.0 cm。
身高约 70% 看遗传,营养、睡眠、运动影响剩下的部分 —— 结果只是参考范围。
共用 ../_shared/calc.css + calc.js(返回 / 禁回弹 / 日期按北京时间 / 记住上次填的值);自成一页,不引 app.js。 -->
<link rel="stylesheet" href="../_shared/calc.css?v=26110436">
<link rel="stylesheet" href="../_shared/wizard.css?v=26110436">
<link rel="stylesheet" href="../_shared/calc.css?v=26110437">
<link rel="stylesheet" href="../_shared/wizard.css?v=26110437">
<style>:root{--c:#1F9BA8;--c2:#5FCBD3;--cbg:#E6F7F8}.sx{display:flex;gap:10px;margin-top:12px}.sx div{flex:1;padding:10px;border-radius:12px;background:rgba(255,255,255,.18)}.sx b{display:block;font-size:22px;font-weight:900;line-height:1.3}</style>
</head>
<body>
@@ -28,6 +28,10 @@
<div><label class="lb" for="cM">妈妈身高</label><div class="inw"><input class="in num" type="number" inputmode="decimal" id="cM" placeholder="162"><em>厘米</em></div></div>
</div>
<div class="fld"><span class="lb">宝宝是</span><div class="seg" id="cS"><button type="button" data-v="b">男孩</button><button type="button" data-v="g">女孩</button><button type="button" data-v="u">还不知道</button></div></div>
<!-- 11-05 用户:「只有两个问题太少」→ 加 3 题(家族身高 / 作息 / 运动),在遗传靶身高上做小幅加减(合计最多 ±3.5 cm),结果里写明每项加了多少 -->
<div class="fld"><span class="lb">爷爷奶奶、外公外婆那一辈,个子怎么样?</span><div class="seg" id="cA"><button type="button" data-v="2">普遍偏高</button><button type="button" data-v="0">和一般人差不多</button><button type="button" data-v="-2">普遍偏矮</button></div></div>
<div class="fld"><span class="lb">以后打算让宝宝晚上几点睡?</span><div class="seg" id="cZ"><button type="button" data-v="1">9 点前</button><button type="button" data-v="0">10 点左右</button><button type="button" data-v="-1">经常 11 点以后</button></div></div>
<div class="fld"><span class="lb">以后打算让宝宝每天户外跑跳多久?</span><div class="seg" id="cY"><button type="button" data-v="1">1 小时以上</button><button type="button" data-v="0">半小时左右</button><button type="button" data-v="-1">很少出门玩</button></div></div>
</section>
<section class="sec">
@@ -40,21 +44,30 @@
</ol>
</section>
<p class="foot">按遗传靶身高公式估算,实际身高受营养、睡眠、运动和疾病等影响,仅供参考。</p>
<p class="foot">按遗传靶身高公式估算,再按家族身高、作息和运动习惯小幅调整;实际身高受营养、睡眠、运动和疾病等影响,仅供参考。</p>
</div>
<script src="../_shared/calc.js?v=26110436"></script>
<script src="../_shared/calc.js?v=26110437"></script>
<script>
(function () {
'use strict';
var C = window.CK, $ = C.$;
C.shell();
var AVG = { b: 169.7, g: 158.0 };
var st = C.store('mmbox.calc.shengao', { f: '', m: '', s: 'u' });
var st = C.store('mmbox.calc.shengao', { f: '', m: '', s: 'u', a: '', z: '', y: '' });
$('#cF').value = st.f; $('#cM').value = st.m;
$('#cF').addEventListener('input', function () { st.f = this.value; paint(); });
$('#cM').addEventListener('input', function () { st.m = this.value; paint(); });
C.seg($('#cS'), st, 's', paint);
function one(sx, f, m) { var t = (f + m + (sx === 'b' ? 13 : -13)) / 2; return { t: t, lo: t - 6.5, hi: t + 6.5 }; }
C.seg($('#cA'), st, 'a', paint); C.seg($('#cZ'), st, 'z', paint); C.seg($('#cY'), st, 'y', paint);
/* 后天 / 家族加减:家族 ±1.5(半个标准差左右)、早睡 ±1、运动 ±1;没答的算 0 */
function adj() {
var a = { '2': 1.5, '0': 0, '-2': -1.5 }[st.a] || 0, z = +st.z || 0, y = +st.y || 0, v = a + z + y, w = [];
if (a) w.push('家族' + (a > 0 ? '偏高 +' : '偏矮 ') + a);
if (z) w.push(z > 0 ? '早睡 +1' : '睡得晚 -1');
if (y) w.push(y > 0 ? '多运动 +1' : '少运动 -1');
return { v: v, t: w.length ? '已按你的回答调整 ' + (v > 0 ? '+' : '') + v + ' cm(' + w.join('、') + ')。' : '' };
}
function one(sx, f, m) { var t = (f + m + (sx === 'b' ? 13 : -13)) / 2 + adj().v; return { t: t, lo: t - 6.5, hi: t + 6.5 }; }
function cmp(sx, t) { var d = t - AVG[sx]; return Math.abs(d) < 1.5 ? '和全国平均差不多' : (d > 0 ? '比全国平均高 ' : '比全国平均矮 ') + Math.abs(d).toFixed(1) + ' cm'; }
function paint() {
st.save();
@@ -64,22 +77,22 @@
var b = one('b', f, m), g = one('g', f, m);
R.innerHTML = '<small>宝宝长大后的身高大约</small><div class="sx"><div><small>如果是男孩</small><b class="num">' + b.t.toFixed(1) + ' cm</b><small class="num">' + b.lo.toFixed(0) + '~' + b.hi.toFixed(0) + ' cm</small></div>' +
'<div><small>如果是女孩</small><b class="num">' + g.t.toFixed(1) + ' cm</b><small class="num">' + g.lo.toFixed(0) + '~' + g.hi.toFixed(0) + ' cm</small></div></div>' +
'<span class="note">男孩' + cmp('b', b.t) + ',女孩' + cmp('g', g.t) + '(全国 18~44 岁平均:男 169.7、女 158.0)</span>';
'<span class="note">' + adj().t + '男孩' + cmp('b', b.t) + ',女孩' + cmp('g', g.t) + '(全国 18~44 岁平均:男 169.7、女 158.0)</span>';
return;
}
var x = one(st.s, f, m);
R.innerHTML = '<small>' + (st.s === 'b' ? '儿子' : '女儿') + '长大后的身高大约</small><b class="big num">' + x.t.toFixed(1) + '<u>厘米</u></b>' +
'<div class="row"><div><small>大概范围</small><b class="num">' + x.lo.toFixed(0) + '~' + x.hi.toFixed(0) + ' cm</b></div><div><small>和全国同龄比</small><b>' + cmp(st.s, x.t).replace('和全国平均', '').replace('比全国平均', '') + '</b></div></div>' +
'<span class="note">身高大约 70% 看遗传,吃好、睡好、多运动,有机会长到范围的上半段。</span>';
'<span class="note">' + adj().t + '身高大约 70% 看遗传,吃好、睡好、多运动,有机会长到范围的上半段。</span>';
}
paint();
})();
</script>
<script src="../_shared/brand.js?v=26110203"></script>
<script src="../../js/share-card.js?v=26110436"></script>
<script src="../../js/share-card.js?v=26110437"></script>
<script>window.mbShare('../../assets/share/t/shengao-js.jpg', '宝宝身高预测:长大后大概多高'); /* 11-04 微信转发图 */</script>
<!-- 11-04 分步模式:一步一题、最后出结果(同生娃计算器),见 ../_shared/wizard.js -->
<script src="../_shared/wizard.js?v=26110436"></script>
<script src="../_shared/wizard.js?v=26110437"></script>
<script>CKW.init({ root: '.calc', res: '#res', after: '#scroll > section.calc ~ *' });</script>
</body>
</html>