Files
mama-box/topic/yichuan-js/index.html

102 lines
7.9 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover">
<meta name="format-detection" content="telephone=no">
<title>宝宝会不会有双眼皮、酒窝</title>
<!-- 孕期计算器 · 宝宝会不会有双眼皮、酒窝(2026-11-06 用户从 20 个备选里选了 5 个,本页是其中之一)。
趣味估算:按常说的「显性 / 隐性」单基因模型算(双眼皮、酒窝、自然卷、有耳垂、美人尖当显性)。
爸妈有这个特征时,是不是「携带隐性」用人群比例 Q(隐性特征在中国人里的大致占比)推:携带概率 = 2pq / (p² + 2pq),q = √Q;
如果爸 / 妈的父母里有人没有这个特征,就一定携带(每题中间那个选项)。
这些特征实际受多个基因影响,页面写明「仅供娱乐」,不当科学预测。
共用 ../_shared/calc.css + calc.js;自成一页,不引 app.js。 -->
<link rel="stylesheet" href="../_shared/calc.css?v=26110464">
<link rel="stylesheet" href="../_shared/wizard.css?v=26110464">
<style>:root{--c:#9A6BD8;--c2:#C3A2F0;--cbg:#F4EEFF}.pp{display:flex;flex-direction:column;align-items:stretch;gap:4px;margin-top:10px}.pp>span{flex:none;font-size:13px;font-weight:700;color:var(--m)}.pp .seg{flex:1;margin-top:0}.pp .seg button{min-width:0;height:auto;min-height:46px;font-size:13.5px;line-height:1.3;white-space:normal;padding:6px 4px}
.bars{margin-top:12px}.bars div{display:flex;align-items:center;gap:8px;margin-top:6px}.bars b{flex:none;width:58px;font-size:14px}.bars i{flex:1;height:12px;border-radius:99px;background:rgba(255,255,255,.25);overflow:hidden}.bars i u{display:block;height:100%;border-radius:99px;background:#fff}.bars span{flex:none;width:42px;text-align:right;font-size:14px;font-weight:800}</style>
</head>
<body>
<div id="scroll">
<header class="bar" id="bar">
<button class="back" id="back" aria-label="返回"><svg viewBox="0 0 24 24"><path d="M15 5l-7 7 7 7"/></svg></button>
<span class="t">孕期计算器</span>
</header>
<section class="hd"><p>孕期计算器</p><h1>宝宝会不会有双眼皮、酒窝</h1><span>选一选爸妈的长相特征,看宝宝像谁多一点</span></section>
<section class="calc">
<div class="res" id="res"><div class="empty">把 5 个特征都选好,马上算出来</div></div>
</section>
<section class="sec">
<h2>每个特征怎么来的</h2>
<div class="cards" id="cards"></div>
</section>
<div class="tip"><b>说句实话:</b>双眼皮、酒窝这些长相实际受好几个基因一起影响,有的宝宝小时候单眼皮、长大变成双眼皮也很常见。这里按常说的显性、隐性来估算,图个乐呵,别当真。</div>
<p class="foot">趣味估算,仅供娱乐,不能用来判断亲子关系。</p>
</div>
<script src="../_shared/calc.js?v=26110464"></script>
<script>
(function () {
'use strict';
var C = window.CK, $ = C.$;
C.shell();
/* [键, 特征, 没有时叫, 隐性在人群里的大致占比 Q, 说明] */
var T = [
['yan', '双眼皮', '单眼皮', .5, '双眼皮常被当作显性:爸妈有一个是双眼皮,宝宝是双眼皮的机会就不小;两个单眼皮的爸妈,宝宝多半也是单眼皮。小宝宝眼皮肿,几个月到几岁才看得出来。'],
['wo', '酒窝', '没酒窝', .8, '酒窝常被当作显性:爸妈有一个人有酒窝,宝宝有酒窝的机会就挺大。有的宝宝小时候有、长大脸上肉少了反而不明显。'],
['juan', '自然卷', '直发', .9, '自然卷常被当作显性,但中国人大多是直发;新生儿的胎毛和后来长的头发也可能不一样。'],
['er', '有耳垂', '没耳垂', .3, '耳垂分离(有明显的耳垂)常被当作显性,耳垂贴着脸长的是隐性。'],
['jian', '美人尖', '没美人尖', .7, '额头发际线中间往下的「V」字尖常被当作显性。']
];
var def = {}; T.forEach(function (x) { def[x[0] + 'f'] = ''; def[x[0] + 'm'] = ''; });
var st = C.store('mmbox.calc.yichuan', def);
/* 每个特征一题:爸爸一行、妈妈一行,三个选项:有 / 有,但他(她)爸妈有人没有 / 没有 */
var calc = $('.calc');
T.forEach(function (x) {
var d = document.createElement('div'); d.className = 'fld';
var row = function (who, k) { return '<div class="pp"><span>' + who + '</span><div class="seg" id="c' + k + '"><button type="button" data-v="1">有</button><button type="button" data-v="2">有,但长辈<br>有人没有</button><button type="button" data-v="0">没有</button></div></div>'; };
d.innerHTML = '<span class="lb">' + x[1] + ':爸爸妈妈有吗</span>' + row('爸爸', x[0] + 'f') + row('妈妈', x[0] + 'm') +
'<span class="hint">中间那个选项:自己有' + x[1] + ',但自己的爸爸或妈妈是' + x[2] + ',选它算得更准;不知道就选「有」</span>';
calc.appendChild(d);
C.seg($('#c' + x[0] + 'f'), st, x[0] + 'f', paint); C.seg($('#c' + x[0] + 'm'), st, x[0] + 'm', paint);
});
/* 爸 / 妈传给宝宝隐性基因的概率 */
function pr(v, Q) {
if (v === 0) return 1;
if (v === 2) return .5;
var q = Math.sqrt(Q), p = 1 - q, het = 2 * p * q / (p * p + 2 * p * q);
return het / 2;
}
function pct(x) { return Math.round(x * 100) + '%'; }
function paint() {
st.save();
var R = $('#res'), done = T.every(function (x) { return st[x[0] + 'f'] !== '' && st[x[0] + 'm'] !== ''; });
if (!done) { R.innerHTML = '<div class="empty">把 5 个特征都选好,马上算出来</div>'; $('#cards').innerHTML = ''; return; }
var rs = T.map(function (x) { return Math.max(.05, 1 - pr(st[x[0] + 'f'], x[3]) * pr(st[x[0] + 'm'], x[3])); }); /* 11-08:这些都受多个基因影响、长大还会变,爸妈都没有也不显示 0%,最低按 5% */
var top = rs.map(function (p, i) { return [p, i]; }).sort(function (a, b) { return b[0] - a[0]; })[0];
/* 像谁:宝宝最可能的样子(概率过半取有)和爸、妈各对上几项 */
var f = 0, m = 0;
T.forEach(function (x, i) { var has = rs[i] >= .5, a = st[x[0] + 'f'] > 0, b = st[x[0] + 'm'] > 0; if (has === a) f++; if (has === b) m++; });
var like = f > m ? '爸爸' : m > f ? '妈妈' : '爸妈各一半';
R.innerHTML = '<small>宝宝最可能有的是</small><span class="big">' + T[top[1]][1] + '<u>' + pct(top[0]) + '</u></span><div class="bars">' + T.map(function (x, i) {
return '<div><b>' + x[1] + '</b><i><u style="width:' + (rs[i] * 100).toFixed(1) + '%"></u></i><span class="num">' + pct(rs[i]) + '</span></div>';
}).join('') + '</div><span class="note">5 个特征里,宝宝最可能的样子和爸爸对上 ' + f + ' 项、和妈妈对上 ' + m + ' 项,' + (like === '爸妈各一半' ? '爸妈各像一半' : '更像' + like + '一点') + '。趣味估算,仅供娱乐。</span>';
var W = { 1: '有', 2: '有(长辈有人没有)', 0: '没有' };
$('#cards').innerHTML = T.map(function (x, i) {
return '<div class="cd"><div class="k"><b>' + x[1] + '</b><strong class="num">' + pct(rs[i]) + '</strong></div><small>爸爸' + W[st[x[0] + 'f']] + ' · 妈妈' + W[st[x[0] + 'm']] + '</small><p>' + x[4] + '</p></div>';
}).join('');
}
paint();
})();
</script>
<script src="../_shared/brand.js?v=26110203"></script>
<script src="../../js/share-card.js?v=26110464"></script>
<script>window.mbShare('../../assets/share/t/yichuan-js.jpg', '宝宝会不会有双眼皮、酒窝:选选爸妈长相,看宝宝像谁'); /* 11-06 微信转发图 */</script>
<script src="../_shared/wizard.js?v=26110464"></script>
<script>CKW.init({ root: '.calc', res: '#res', after: '#scroll > section.calc ~ *' });</script>
<script src="../../js/last-sub.js?v=26110905"></script> <!-- 11-07 小程序刷新回到这一页(见 js/last-sub.js) -->
<script src="../../js/pv.js?v=26110653"></script> <!-- 11-07 页面访问记录(推送效果看板,见 js/pv.js) -->
</body>
</html>