v26110602 孕期计算器新增 5 个:满月百天周岁、纸尿裤囤多少、奶粉一罐吃几天、双眼皮酒窝、教育金每月存多少
- topic/{rizi,niaobu,naifen,yichuan,jiaoyujin}-js 分步模式页面 + 转发图
- 计算器列表页、首页百宝箱登记,计数 14→19
- AGENTS.md 12b 补登记新计算器的模拟人数
Co-Authored-By: AI 助手 <noreply@local>
This commit is contained in:
@@ -108,6 +108,7 @@ nginx:`root /opt/app` + `Cache-Control: no-cache` + `etag on` —— 缓存靠
|
||||
- 边界:只限上述几处;测试结果页、分享图、其他应用不得引用这个数。
|
||||
- 2026-11-02 扩展:首页「其他妈妈也在搜 → 全部问题」页每条的「N 人看过」(11-02 用户撤掉了「正在看」)(「此刻」总人数 × heat,同首页),以及专题页「相关推荐」的「N 人看过」,同属模拟数,同一期限复核。
|
||||
- 2026-11-04 扩展:孕期计算器列表页 topic/jisuan 和首页百宝箱(js/kit.js CALC)里 14 个计算器的「N万人算过」(「此刻」总人数 × heat),以及百宝箱「孕期计算器」入口的合计人数,同属模拟数;用户 11-04 确认新增 10 个计算器的人数「保留」。同一期限复核。
|
||||
- 2026-11-06 扩展:新增 5 个计算器(满月百天周岁 rizi-js、纸尿裤 niaobu-js、奶粉 naifen-js、双眼皮酒窝 yichuan-js、教育金 jiaoyujin-js)沿用同一套「N万人算过」模拟数,计算器共 19 个;已告知用户,同一期限复核。
|
||||
|
||||
12c. **⚠️ 第 2 条的第三个登记例外:孕妈广场帖子下的模拟评论与 1000 个模拟人设(2026-11-02 起)**
|
||||
- 内容:`guangchang/cm.json`(179 篇占位帖子,每篇 22~26 条评论 + 作者回复 + 楼中楼,共约 4100 条)和其中 1000 个人设(昵称 + 头像 `guangchang/av/*.webp` 代码绘制 / 59 张 `assets/img/mom/` 写实照 + 阶段)。全是 AI 写的「假装有人说过的话」,不是真实用户发言,不落库、不进任何报表。
|
||||
|
||||
BIN
assets/share/t/jiaoyujin-js.jpg
Normal file
BIN
assets/share/t/jiaoyujin-js.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 51 KiB |
BIN
assets/share/t/naifen-js.jpg
Normal file
BIN
assets/share/t/naifen-js.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 49 KiB |
BIN
assets/share/t/niaobu-js.jpg
Normal file
BIN
assets/share/t/niaobu-js.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 53 KiB |
BIN
assets/share/t/rizi-js.jpg
Normal file
BIN
assets/share/t/rizi-js.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 50 KiB |
BIN
assets/share/t/yichuan-js.jpg
Normal file
BIN
assets/share/t/yichuan-js.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 51 KiB |
@@ -9,7 +9,7 @@
|
||||
<title>兜爸心选 · 孕育陪伴</title>
|
||||
<!-- 11-04 UGC 总开关(孕妈广场 + 测一测,后台 /box_bm/plaza 顶部切换),见 js/ugc.js -->
|
||||
<script src="js/ugc.js?v=26110487"></script>
|
||||
<!-- V:26110601 缓存版本标记:改 css/js 时同步 bump 该值(与 js/app.js 的 VER 同源),静态资源按 mtime 走 ETag 自动刷新 -->
|
||||
<!-- V:26110602 缓存版本标记:改 css/js 时同步 bump 该值(与 js/app.js 的 VER 同源),静态资源按 mtime 走 ETag 自动刷新 -->
|
||||
<link rel="stylesheet" href="mama-box.css">
|
||||
<link rel="stylesheet" href="night.css">
|
||||
<!-- 11-04 用户:「顶部图片上的倒计时先删除掉」→ 不加载 hero-cd.css / hero-cd.js(文件留着,加回这两行即恢复),头图回到原样式 -->
|
||||
@@ -2678,7 +2678,7 @@ html.night .rs-pan .rp-card{background:rgba(255,255,255,.06);border-color:rgba(2
|
||||
<script src="guangchang/topics.js?v=26110487"></script>
|
||||
<script src="js/ava-pool.js?v=26110487"></script> <!-- 11-05 装饰头像分配表(各模块互不重复) -->
|
||||
<script src="js/app.js"></script>
|
||||
<script src="js/kit.js?v=26110487"></script>
|
||||
<script src="js/kit.js?v=26110602"></script>
|
||||
<!-- 11-05 用户:孕期百问加上跟趣味小测试一样的底部 Tab(孕期百问 / 记一下 / 返回首页)。挂在 #detailQA 里,面板关着时跟着滑出屏外;
|
||||
「记一下」直接开首页自己的记一下弹层(z 95 盖在百问 z 80 上),「返回首页」= 关掉百问面板 -->
|
||||
<script src="js/mb-tabbar.js?v=26110487"></script>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
(function () {
|
||||
'use strict';
|
||||
/* 页面版本号(YYMMDD+序号):显示在「关于兜爸心选」页底部;bump 时同步 head 注释与 ?v= */
|
||||
var VER = '26110601';
|
||||
var VER = '26110602';
|
||||
const $ = (s, c) => (c || document).querySelector(s);
|
||||
const $$ = (s, c) => Array.from((c || document).querySelectorAll(s));
|
||||
|
||||
|
||||
15
js/kit.js
15
js/kit.js
@@ -35,7 +35,7 @@
|
||||
var E = [
|
||||
/* 11-04 用户:三个入口顺序改为 孕期百问 → 孕期计算器 → 趣味小测试 */
|
||||
{ k: 'qa', n: '孕期百问', d: '孕妈最常问的问题,一次看明白', c: '100 个问题', img: 'kepu', u: '人看过' },
|
||||
{ k: 'js', n: '孕期计算器', d: '花多少钱、休几天产假,算一算', c: '14 个计算器', img: 'jisuan', u: '人算过' },
|
||||
{ k: 'js', n: '孕期计算器', d: '花多少钱、休几天产假,算一算', c: '19 个计算器', img: 'jisuan', u: '人算过' },
|
||||
{ k: 'qz', n: '趣味小测试', d: '1 分钟测出你是哪种孕妈', c: '30 个测试', img: 'ceshi', u: '人测过' }
|
||||
];
|
||||
box.innerHTML = '<div class="kit-hd"><h2 class="kit-tt"><span>孕期百宝箱</span></h2><span class="kit-sl">查一查 · 算一算' + (window.__mbUgc ? ' · 测一测' : '') + '</span></div><div class="kit-pn"><div class="kit-g">' +
|
||||
@@ -90,7 +90,13 @@
|
||||
{ q: '产假期间能领多少生育津贴?', h: 'topic/jintie-js/', heat: .072, b: [5, 6] },
|
||||
{ q: '育儿补贴你家能领多少?', h: 'topic/butie-js/', heat: .081, b: [6, 0] },
|
||||
{ q: '有宝宝一年能少交多少税?', h: 'topic/geshui-js/', heat: .047, b: [6, 0] },
|
||||
{ q: '出生后哪些手续要在哪天前办?', h: 'topic/shouxu-js/', heat: .043, b: [6, 0] }
|
||||
{ q: '出生后哪些手续要在哪天前办?', h: 'topic/shouxu-js/', heat: .043, b: [6, 0] },
|
||||
/* 11-06 新增 5 个(同 topic/jisuan) */
|
||||
{ q: '满月、百天、周岁是哪天?', h: 'topic/rizi-js/', heat: .061, b: [5, 6, 0] },
|
||||
{ q: '纸尿裤要囤多少?每个码几包', h: 'topic/niaobu-js/', heat: .052, b: [5, 6, 0] },
|
||||
{ q: '奶粉一罐能吃几天?一年花多少', h: 'topic/naifen-js/', heat: .048, b: [6, 0] },
|
||||
{ q: '宝宝会不会有双眼皮、酒窝?', h: 'topic/yichuan-js/', heat: .057, b: [2, 3, 4] },
|
||||
{ q: '教育金每月存多少才够?', h: 'topic/jiaoyujin-js/', heat: .039, b: [6, 0] }
|
||||
];
|
||||
var QA_FIX = 'topic/yingyang/';
|
||||
var QA = null, day = Math.floor((Date.now() + 288e5) / 864e5);
|
||||
@@ -191,6 +197,11 @@
|
||||
'topic/butie-js/': ['算出能领 <b>10800 元</b>', '算出两个孩子领 <b>1.6 万</b>'],
|
||||
'topic/geshui-js/': ['算出一年少交 <b>2400 元</b>税', '算出一年少交 <b>4800 元</b>税'],
|
||||
'topic/shouxu-js/': ['排好 <b>11 件</b>出生手续', '查到上户口还剩 <b>6 天</b>'],
|
||||
'topic/rizi-js/': ['算出百天是 <b>3 月 20 日</b>', '算出满月是 <b>农历腊月初八</b>', '算出周岁宴定在 <b>周六</b>'],
|
||||
'topic/niaobu-js/': ['算出 S 码要囤 <b>12 包</b>', '算出头一年约 <b>1900 片</b>'],
|
||||
'topic/naifen-js/': ['算出一罐能吃 <b>7 天</b>', '算出第一年奶粉约 <b>1.4 万</b>'],
|
||||
'topic/yichuan-js/': ['算出宝宝 <b>83%</b> 是双眼皮', '算出宝宝 <b>更像妈妈</b>一点'],
|
||||
'topic/jiaoyujin-js/': ['算出每月存 <b>1180 元</b>就够', '算出到 18 岁攒够 <b>30 万</b>'],
|
||||
'topic/zhichang/': ['算出产假能休 <b>178 天</b>(广东)', '算出产假能休 <b>158 天</b>(上海)', '算出产假能休 <b>188 天</b>(河南)', '算出产假能休 <b>180 天</b>(吉林)']
|
||||
};
|
||||
var lvT = 0;
|
||||
|
||||
@@ -20,6 +20,10 @@ const NEWC = { 'yunzhou-js': ['孕几周了', '今天孕几周几天、孕几个
|
||||
'butie-js': ['育儿补贴', '每孩每年 3600 元领到 3 岁,你家能领多少', '#E25C5C'], 'geshui-js': ['个税省多少', '有 3 岁以下宝宝,每月多扣 2000,一年少交多少税', '#6C5BD6'],
|
||||
'yuezi-js': ['月子花费', '月子中心、请月嫂、在家坐,各要花多少钱', '#C9658F'], 'shengao-js': ['宝宝多高', '按爸妈身高,推算宝宝长大后大概多高', '#1F9BA8'],
|
||||
'xuexing-js': ['宝宝血型', '爸妈血型配一配,宝宝可能是什么血型', '#D9475A'], 'shouxu-js': ['出生后手续', '出生证、上户口、医保、社保卡,每件事截止哪天', '#4E7FD8'] };
|
||||
// 11-06 新增 5 个计算器
|
||||
Object.assign(NEWC, { 'rizi-js': ['满月百天周岁', '满月、百天、周岁是哪天?公历农历一起排好', '#E8774E'], 'niaobu-js': ['纸尿裤囤多少', '每个码用多少片、买几包、一年花多少钱', '#3E8FD8'],
|
||||
'naifen-js': ['奶粉吃几天', '奶粉一罐能吃几天?每天喝多少、一年花多少', '#D9893A'], 'yichuan-js': ['双眼皮酒窝', '宝宝会不会有双眼皮、酒窝?看宝宝像谁', '#9A6BD8'],
|
||||
'jiaoyujin-js': ['教育金', '教育金每月存多少?上大学前能攒够吗', '#2E9C8A'] });
|
||||
const QUIZ_TOPIC = { ceshi: 1, duiyou: 1, yali: 1, yinshi: 1, zhunbei: 1 };
|
||||
const CALC = { huafei: 1, jisuan: 1, 'yuchanqi-js': 1 };
|
||||
const out = [];
|
||||
|
||||
@@ -449,6 +449,16 @@
|
||||
"cta": "点开看答案",
|
||||
"ic": "准备"
|
||||
},
|
||||
{
|
||||
"k": "t/jiaoyujin-js",
|
||||
"type": "text",
|
||||
"mod": "孕期计算器",
|
||||
"c": "#2E9C8A",
|
||||
"big": "教育金",
|
||||
"title": "教育金每月存多少?上大学前能攒够吗",
|
||||
"cta": "马上算一算",
|
||||
"ic": "calc"
|
||||
},
|
||||
{
|
||||
"k": "t/jikou",
|
||||
"type": "text",
|
||||
@@ -539,6 +549,26 @@
|
||||
"cta": "点开看答案",
|
||||
"ic": "准备"
|
||||
},
|
||||
{
|
||||
"k": "t/naifen-js",
|
||||
"type": "text",
|
||||
"mod": "孕期计算器",
|
||||
"c": "#D9893A",
|
||||
"big": "奶粉吃几天",
|
||||
"title": "奶粉一罐能吃几天?每天喝多少、一年花多少",
|
||||
"cta": "马上算一算",
|
||||
"ic": "calc"
|
||||
},
|
||||
{
|
||||
"k": "t/niaobu-js",
|
||||
"type": "text",
|
||||
"mod": "孕期计算器",
|
||||
"c": "#3E8FD8",
|
||||
"big": "纸尿裤囤多少",
|
||||
"title": "每个码用多少片、买几包、一年花多少钱",
|
||||
"cta": "马上算一算",
|
||||
"ic": "calc"
|
||||
},
|
||||
{
|
||||
"k": "t/niaopin",
|
||||
"type": "text",
|
||||
@@ -649,6 +679,16 @@
|
||||
"cta": "点开看答案",
|
||||
"ic": "身体"
|
||||
},
|
||||
{
|
||||
"k": "t/rizi-js",
|
||||
"type": "text",
|
||||
"mod": "孕期计算器",
|
||||
"c": "#E8774E",
|
||||
"big": "满月百天周岁",
|
||||
"title": "满月、百天、周岁是哪天?公历农历一起排好",
|
||||
"cta": "马上算一算",
|
||||
"ic": "calc"
|
||||
},
|
||||
{
|
||||
"k": "t/ruyuan",
|
||||
"type": "text",
|
||||
@@ -979,6 +1019,16 @@
|
||||
"cta": "点开看答案",
|
||||
"ic": "身体"
|
||||
},
|
||||
{
|
||||
"k": "t/yichuan-js",
|
||||
"type": "text",
|
||||
"mod": "孕期计算器",
|
||||
"c": "#9A6BD8",
|
||||
"big": "双眼皮酒窝",
|
||||
"title": "宝宝会不会有双眼皮、酒窝?看宝宝像谁",
|
||||
"cta": "马上算一算",
|
||||
"ic": "calc"
|
||||
},
|
||||
{
|
||||
"k": "t/yimiao",
|
||||
"type": "text",
|
||||
|
||||
100
topic/jiaoyujin-js/index.html
Normal file
100
topic/jiaoyujin-js/index.html
Normal file
@@ -0,0 +1,100 @@
|
||||
<!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 个,本页是其中之一)。
|
||||
按月复利:目标金额按「学费上涨」折到用钱那年,减去已存的钱、育儿补贴(每月 300 元存到 3 岁,可选)的终值,剩下的按每月定投年金反推每月要存多少。
|
||||
从今天(宝宝没出生也从今天)开始存,到宝宝满 18 / 22 岁那天为止。收益率是假设值,只帮用户估量级,页面写明不构成投资建议,不推荐具体产品。
|
||||
共用 ../_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>#res .row b{font-size:17px;white-space:nowrap}:root{--c:#2E9C8A;--c2:#6CCBB8;--cbg:#E6F7F3}</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">填好马上算出来</div></div>
|
||||
<div class="fld"><label class="lb" for="cD">宝宝生日<small>没出生就填预产期</small></label><input class="in num" type="date" id="cD"></div>
|
||||
<div class="fld"><span class="lb">这笔钱什么时候用</span><div class="seg s2" id="cAge"><button type="button" data-v="18">18 岁上大学</button><button type="button" data-v="22">22 岁读研究生</button></div></div>
|
||||
<div class="fld"><span class="lb">想攒多少(按现在的钱算)</span><div class="seg s2" id="cGoal"><button type="button" data-v="10">10 万</button><button type="button" data-v="30">30 万</button><button type="button" data-v="50">50 万</button><button type="button" data-v="100">100 万</button></div>
|
||||
<span class="hint">大致参考:公办本科 4 年学费加生活费约 10 万;读研或中外合办约 30 万;出国读本科约 100 万起</span></div>
|
||||
<div class="fld"><span class="lb">要不要算上学费上涨</span><div class="seg" id="cInf"><button type="button" data-v="0">不算</button><button type="button" data-v="0.02">每年涨 2%</button><button type="button" data-v="0.03">每年涨 3%</button></div>
|
||||
<span class="hint">学费和生活费每年都在涨,算上更稳妥</span></div>
|
||||
<div class="fld" data-opt><label class="lb" for="cHave">已经给宝宝存了多少<small>选填</small></label><div class="inw"><input class="in num" type="number" inputmode="decimal" id="cHave" placeholder="比如 2"><em>万元</em></div></div>
|
||||
<div class="fld"><span class="lb">打算怎么存</span><div class="seg" id="cR"><button type="button" data-v="0.015">稳稳存</button><button type="button" data-v="0.025">稳中求进</button><button type="button" data-v="0.035">多一点收益</button></div>
|
||||
<span class="hint">按年收益约 1.5%(存款、国债)、2.5%(稳健理财等)、3.5%(波动更大)估算,只是假设,不是承诺</span></div>
|
||||
<div class="fld"><span class="lb">育儿补贴也存进去吗</span><div class="seg s2" id="cBt"><button type="button" data-v="1">存,每年 3600 元到 3 岁</button><button type="button" data-v="0">不存</button></div></div>
|
||||
</section>
|
||||
|
||||
<section class="sec">
|
||||
<h2>不同存法比一比</h2>
|
||||
<p class="lead" id="lead"></p>
|
||||
<table class="tbl" id="tbl"><thead><tr><th>存法</th><th>每月存</th><th>一共存入</th><th>到时候有</th></tr></thead><tbody></tbody></table>
|
||||
</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.$, DAY = C.DAY;
|
||||
C.shell();
|
||||
var st = C.store('mmbox.calc.jiaoyujin', { d: '', age: '', goal: '', inf: '', have: '', r: '', bt: '' });
|
||||
if (!st.d) { var sd = C.savedDue(); if (!isNaN(sd)) st.d = C.fmt(sd); }
|
||||
['Age', 'Goal', 'Inf', 'R', 'Bt'].forEach(function (k) { C.seg($('#c' + k), st, k.toLowerCase(), paint); });
|
||||
[['#cD', 'd'], ['#cHave', 'have']].forEach(function (p) { var e = $(p[0]); e.value = st[p[1]]; e.addEventListener('input', function () { st[p[1]] = e.value; paint(); }); });
|
||||
var RN = { 0.015: '稳稳存', 0.025: '稳中求进', 0.035: '多一点收益' };
|
||||
/* r 年收益:返回 { pmt 每月要存, n 月数, put 一共存入, fv 到时候总额 } */
|
||||
function plan(r, n, target, have, bt, sub) {
|
||||
var i = r / 12, g = Math.pow(1 + i, n);
|
||||
var fvHave = have * g, fvBt = 0;
|
||||
for (var k = 0; k < sub; k++) fvBt += 300 * Math.pow(1 + i, n - k - 1);
|
||||
if (!bt) fvBt = 0;
|
||||
var need = target - fvHave - fvBt, ann = i ? (g - 1) / i : n;
|
||||
var pmt = Math.max(0, need / ann);
|
||||
return { pmt: pmt, put: pmt * n + have + (bt ? 300 * sub : 0), fv: pmt * ann + fvHave + fvBt };
|
||||
}
|
||||
function paint() {
|
||||
st.save();
|
||||
var R = $('#res'), tb = $('#tbl tbody'), b = C.parse(st.d);
|
||||
if (isNaN(b) || st.age === '' || st.goal === '' || st.inf === '' || st.r === '' || st.bt === '') { R.innerHTML = '<div class="empty">填好马上算出来</div>'; tb.innerHTML = ''; $('#lead').textContent = ''; return; }
|
||||
var now = C.today(), end = C.addMonths(b, 12 * st.age);
|
||||
var n = Math.round((end - now) / DAY / 30.44);
|
||||
if (n < 12) { R.innerHTML = '<div class="empty">离用钱不到 1 年了,检查一下生日填对了没有</div>'; tb.innerHTML = ''; return; }
|
||||
var yrs = n / 12, target = st.goal * 1e4 * Math.pow(1 + st.inf, yrs), have = (+st.have || 0) * 1e4;
|
||||
/* 育儿补贴:宝宝 3 岁前每月按 300 元存入(没出生的从出生那月开始),存进来的月数 */
|
||||
var sub = Math.max(0, Math.min(36, Math.round((C.addMonths(b, 36) - Math.max(now, b)) / DAY / 30.44)));
|
||||
var p = plan(st.r, n, target, have, st.bt, sub), late = n <= 48 ? null : (function () { /* 晚 3 年开始:已存的钱和这 3 年的育儿补贴先放着生息,之后再按月存 */
|
||||
var i = st.r / 12, h = have * Math.pow(1 + i, 36);
|
||||
if (st.bt) for (var k = 0; k < Math.min(sub, 36); k++) h += 300 * Math.pow(1 + i, 36 - k - 1);
|
||||
return plan(st.r, n - 36, target, h, 0, 0);
|
||||
})();
|
||||
R.innerHTML = '<small>到宝宝 ' + st.age + ' 岁(' + new Date(end).getUTCFullYear() + ' 年)攒够 ' + st.goal + ' 万' + (st.inf ? '(按学费上涨折算约 ' + C.money(target) + (/万$/.test(C.money(target)) ? '' : ' 元') + ')' : '') + ',每月要存</small><span class="big num">' + (p.pmt ? C.money(p.pmt) : '0') + '<u>元</u></span>' +
|
||||
'<div class="row"><div><small>一共存</small><b class="num">' + Math.round(n / 12) + ' 年</b></div><div><small>存入本金</small><b class="num">' + C.money(p.put) + '</b></div><div><small>收益约</small><b class="num">' + C.money(Math.max(0, p.fv - p.put)) + '</b></div></div>' +
|
||||
'<span class="note">' + (p.pmt && n > 48 ? '晚 3 年再开始,每月要存 ' + C.money(late.pmt) + ' 元,多 ' + C.money(late.pmt - p.pmt) + ' 元;早存更轻松。' : p.pmt ? '离用钱不远了,早点开始存。' : '已存的钱' + (st.bt ? '加上育儿补贴' : '') + '按这个收益已经够了,不用再每月存。') + '按假设收益估算,不构成投资建议。</span>';
|
||||
$('#lead').textContent = '同样攒 ' + st.goal + ' 万' + (st.inf ? '(含学费上涨)' : '') + ',收益不同每月要存多少';
|
||||
tb.innerHTML = [0.015, 0.025, 0.035].map(function (r) {
|
||||
var q = plan(r, n, target, have, st.bt, sub);
|
||||
return '<tr' + (r === st.r ? ' class="on"' : '') + '><td><b>' + RN[r] + '</b><br><small>年化 ' + (r * 100).toFixed(1) + '%</small></td><td class="num">' + C.money(q.pmt) + ' 元</td><td class="num">' + C.money(q.put) + '</td><td class="num">' + C.money(q.fv) + '</td></tr>';
|
||||
}).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/jiaoyujin-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>
|
||||
</body>
|
||||
</html>
|
||||
@@ -56,7 +56,7 @@ button{font:inherit;border:0;background:none;color:inherit;cursor:pointer}
|
||||
<img src="../../assets/img/kit/jisuan.webp" alt="">
|
||||
<small>算一算</small>
|
||||
<h1>孕期计算器</h1>
|
||||
<p>14 个计算器:花多少钱、能领多少补贴、产检哪天去,算明白心里才有底</p>
|
||||
<p>19 个计算器:花多少钱、能领多少补贴、产检哪天去,算明白心里才有底</p>
|
||||
</section>
|
||||
<div class="list" id="list"></div>
|
||||
<div class="more">更多计算器陆续上线中</div>
|
||||
@@ -87,7 +87,12 @@ button{font:inherit;border:0;background:none;color:inherit;cursor:pointer}
|
||||
yz: '<svg viewBox="0 0 24 24"><path d="M3.5 10.5L12 4l8.5 6.5V20h-17z"/><path d="M12 17.5s-3-1.8-3-3.7c0-1 .8-1.7 1.6-1.7.6 0 1.1.3 1.4.8.3-.5.8-.8 1.4-.8.8 0 1.6.7 1.6 1.7 0 1.9-3 3.7-3 3.7z"/></svg>',
|
||||
ht: '<svg viewBox="0 0 24 24"><path d="M6 3v18M6 5h3M6 9h2M6 13h3M6 17h2"/><circle cx="15" cy="7" r="2.5"/><path d="M15 9.5v6M12 21l3-5.5 3 5.5M12 12.5h6"/></svg>',
|
||||
xx: '<svg viewBox="0 0 24 24"><path d="M12 3s-6.5 7.2-6.5 11.6a6.5 6.5 0 0013 0C18.5 10.2 12 3 12 3z"/><path d="M9.5 15.5a2.6 2.6 0 002.4 2.4"/></svg>',
|
||||
sx: '<svg viewBox="0 0 24 24"><rect x="4" y="3.5" width="16" height="17" rx="2.5"/><path d="M8 8.5h8M8 12.5h8M8 16.5h5"/></svg>'
|
||||
sx: '<svg viewBox="0 0 24 24"><rect x="4" y="3.5" width="16" height="17" rx="2.5"/><path d="M8 8.5h8M8 12.5h8M8 16.5h5"/></svg>',
|
||||
rz: '<svg viewBox="0 0 24 24"><rect x="3.5" y="5" width="17" height="15.5" rx="3"/><path d="M8 3v4M16 3v4M3.5 10h17"/><path d="M12 12.5l1 2 2.2.3-1.6 1.5.4 2.2-2-1.1-2 1.1.4-2.2-1.6-1.5 2.2-.3z"/></svg>',
|
||||
nb: '<svg viewBox="0 0 24 24"><path d="M4 7h16v3.5c0 4.5-3.6 8-8 8s-8-3.5-8-8z"/><path d="M4 10.5c2.5 0 4 1.6 4.5 4M20 10.5c-2.5 0-4 1.6-4.5 4M9 7v2.5M15 7v2.5"/></svg>',
|
||||
nf: '<svg viewBox="0 0 24 24"><path d="M9.5 3h5v2.5l1.5 2.5V20a1.5 1.5 0 01-1.5 1.5h-5A1.5 1.5 0 018 20V8l1.5-2.5z"/><path d="M8 12h8M11 15.5h2M8.5 5.5h7"/></svg>',
|
||||
yc: '<svg viewBox="0 0 24 24"><path d="M2.5 12s3.5-5.5 9.5-5.5 9.5 5.5 9.5 5.5-3.5 5.5-9.5 5.5S2.5 12 2.5 12z"/><circle cx="12" cy="12" r="2.6"/><path d="M5 8.5C8 5 16 5 19 8.5"/></svg>',
|
||||
jy: '<svg viewBox="0 0 24 24"><path d="M2.5 9L12 4.5 21.5 9 12 13.5z"/><path d="M6.5 11v4.5c1.5 1.6 3.5 2.5 5.5 2.5s4-.9 5.5-2.5V11M21.5 9v5"/></svg>'
|
||||
};
|
||||
var L = [
|
||||
{ n: '生娃花费计算器', tag: '最多人用', d: '产检、分娩、月子、宝宝第一年,一共要花多少钱', u: '../huafei/', heat: .118, c: '#F07A2E', bg: '#FFF0E4', ic: SV.money },
|
||||
@@ -104,7 +109,13 @@ button{font:inherit;border:0;background:none;color:inherit;cursor:pointer}
|
||||
{ n: '月子花费计算器', tag: '新', d: '月子中心、请月嫂、在家坐,各要花多少', u: '../yuezi-js/', heat: .064, c: '#C9658F', bg: '#FCEEF4', ic: SV.yz },
|
||||
{ n: '出生后手续时间线', tag: '新', d: '出生证、上户口、医保、社保卡,每件截止哪天', u: '../shouxu-js/', heat: .043, c: '#4E7FD8', bg: '#EDF3FF', ic: SV.sx },
|
||||
{ n: '宝宝身高预测', tag: '新', d: '按爸妈身高,推算宝宝长大后多高', u: '../shengao-js/', heat: .079, c: '#1F9BA8', bg: '#E6F7F8', ic: SV.ht },
|
||||
{ n: '宝宝血型推算', tag: '新', d: '爸妈血型配一配,宝宝可能是什么型', u: '../xuexing-js/', heat: .066, c: '#D9475A', bg: '#FFEDEF', ic: SV.xx }
|
||||
{ n: '宝宝血型推算', tag: '新', d: '爸妈血型配一配,宝宝可能是什么型', u: '../xuexing-js/', heat: .066, c: '#D9475A', bg: '#FFEDEF', ic: SV.xx },
|
||||
/* 11-06 用户从 20 个备选里选了 5 个:满月百天周岁、纸尿裤、奶粉、双眼皮酒窝、教育金(人数同为模拟数,AGENTS.md 12b) */
|
||||
{ n: '满月、百天、周岁是哪天', tag: '新', d: '公历、农历、星期几一起排好,提前订酒席约拍照', u: '../rizi-js/', heat: .061, c: '#E8774E', bg: '#FFF1EA', ic: SV.rz },
|
||||
{ n: '纸尿裤要囤多少', tag: '新', d: '每个码用多少片、买几包、一年花多少钱', u: '../niaobu-js/', heat: .052, c: '#3E8FD8', bg: '#EAF4FF', ic: SV.nb },
|
||||
{ n: '奶粉一罐能吃几天', tag: '新', d: '每天喝多少、一罐吃几天、一年花多少钱', u: '../naifen-js/', heat: .048, c: '#D9893A', bg: '#FFF4E6', ic: SV.nf },
|
||||
{ n: '会有双眼皮、酒窝吗', tag: '新', d: '选选爸妈的长相特征,看宝宝像谁多一点', u: '../yichuan-js/', heat: .057, c: '#9A6BD8', bg: '#F4EEFF', ic: SV.yc },
|
||||
{ n: '教育金每月存多少', tag: '新', d: '从现在开始存,到宝宝上大学能攒够吗', u: '../jiaoyujin-js/', heat: .039, c: '#2E9C8A', bg: '#E6F7F3', ic: SV.jy }
|
||||
];
|
||||
$('#list').innerHTML = L.map(function (x, i) {
|
||||
var lk = x.gate && week && week < x.gate;
|
||||
|
||||
89
topic/naifen-js/index.html
Normal file
89
topic/naifen-js/index.html
Normal file
@@ -0,0 +1,89 @@
|
||||
<!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 个,本页是其中之一)。
|
||||
每天奶量 ML(纯奶粉喂养,按月龄,参考 6 月内约 150ml/kg/天、上限约 1000ml;6 月后加辅食逐渐减少;1~3 岁按每天 400~600ml 奶取 500),
|
||||
填了体重且在 6 个月内就按 150ml/kg 算当月;混合喂养 ×0.5、母乳为主偶尔补 ×0.1;双胞胎 ×2。冲调按每 100ml 约 14.5 克粉(多数罐上「30ml 水 + 1 平勺约 4.4 克」)。
|
||||
价格按 800 克罐的常见价位 PR,其它规格按克数折算;用户自己填了单价就用自己的。不是报价,只帮用户估量级。
|
||||
共用 ../_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>#res .row b{font-size:17px;white-space:nowrap}:root{--c:#D9893A;--c2:#F5B872;--cbg:#FFF4E6}</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">选完马上算出来</div></div>
|
||||
<div class="fld"><span class="lb">打算怎么喂</span><div class="seg" id="cFeed"><button type="button" data-v="1">纯奶粉</button><button type="button" data-v="0.5">混合喂养</button><button type="button" data-v="0.1">母乳为主,偶尔补</button></div>
|
||||
<span class="hint">世界卫生组织建议 6 个月内纯母乳喂养;母乳不够或不方便时,奶粉是很好的补充</span></div>
|
||||
<div class="fld"><span class="lb">宝宝现在多大</span><div class="seg" id="cAge"><button type="button" data-v="0">还没出生</button><button type="button" data-v="0.5">不满 1 个月</button><button type="button" data-v="2">1~3 个月</button><button type="button" data-v="4.5">3~6 个月</button><button type="button" data-v="9">6~12 个月</button><button type="button" data-v="24">1~3 岁</button></div></div>
|
||||
<div class="fld" data-opt><label class="lb" for="cKg">宝宝现在的体重<small>选填,6 个月内填了更准</small></label><div class="inw"><input class="in num" type="number" inputmode="decimal" id="cKg" placeholder="比如 5.5"><em>公斤</em></div></div>
|
||||
<div class="fld"><span class="lb">一胎几个宝宝</span><div class="seg s2" id="cN"><button type="button" data-v="1">一个</button><button type="button" data-v="2">双胞胎</button></div></div>
|
||||
<div class="fld"><span class="lb">买多大一罐</span><div class="seg" id="cCan"><button type="button" data-v="400">400 克</button><button type="button" data-v="800">800 克</button><button type="button" data-v="900">900 克</button></div></div>
|
||||
<div class="fld"><span class="lb">什么价位</span><div class="seg" id="cLv"><button type="button" data-v="0">国产常规</button><button type="button" data-v="1">国产高端</button><button type="button" data-v="2">进口 / 有机</button></div>
|
||||
<span class="hint">800 克一罐大约:国产常规 220 元、国产高端 320 元、进口或有机 420 元(2026 年电商常见到手价)</span></div>
|
||||
<div class="fld" data-opt><label class="lb" for="cPr">已经选好牌子了?填一罐的价格<small>选填</small></label><div class="inw"><input class="in num" type="number" inputmode="decimal" id="cPr" placeholder="不填按上面的价位算"><em>元/罐</em></div></div>
|
||||
</section>
|
||||
|
||||
<section class="sec">
|
||||
<h2>不同月龄喝多少</h2>
|
||||
<p class="lead" id="lead"></p>
|
||||
<table class="tbl" id="tbl"><thead><tr><th>月龄</th><th>每天奶量</th><th>每月几罐</th><th>每月花费</th></tr></thead><tbody></tbody></table>
|
||||
</section>
|
||||
|
||||
<div class="tip"><b>按需喂,别硬凑数:</b>表里是平均量,宝宝吃饱的信号是自己松开奶嘴、扭头;每天尿湿 6 片以上、体重稳步长,就说明吃够了。<br><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.$;
|
||||
function Y(x) { var s = C.money(x); return /万$/.test(s) ? s + '元' : s + ' 元'; } /* 金额 + 单位:1,058 元 / 1.65 万元 */
|
||||
C.shell();
|
||||
/* 纯奶粉每天奶量(ml),按第几个月 0~11;12~35 月按 500 */
|
||||
var ML = [600, 720, 850, 900, 900, 900, 800, 800, 800, 700, 700, 700];
|
||||
var G100 = 14.5, PR = [220, 320, 420];
|
||||
function ml(m) { return m >= 12 ? 500 : ML[Math.floor(m)]; }
|
||||
var st = C.store('mmbox.calc.naifen', { feed: '', age: '', kg: '', n: '', can: '', lv: '', pr: '' });
|
||||
['Feed', 'Age', 'N', 'Can', 'Lv'].forEach(function (k) { C.seg($('#c' + k), st, k.toLowerCase(), paint); });
|
||||
[['#cKg', 'kg'], ['#cPr', 'pr']].forEach(function (p) { var e = $(p[0]); e.value = st[p[1]]; e.addEventListener('input', function () { st[p[1]] = e.value; paint(); }); });
|
||||
function paint() {
|
||||
st.save();
|
||||
var R = $('#res'), tb = $('#tbl tbody');
|
||||
if (st.feed === '' || st.age === '' || st.n === '' || st.can === '' || st.lv === '') { R.innerHTML = '<div class="empty">选完马上算出来</div>'; tb.innerHTML = ''; return; }
|
||||
var price = +st.pr >= 30 ? +st.pr : PR[st.lv] * st.can / 800, f = st.feed * st.n;
|
||||
var kg = +st.kg, a = st.age;
|
||||
var day = (a > 0 && a < 6 && kg > 1.5 && kg < 15 ? Math.min(kg * 150, 1000) : ml(a)) * f; /* 还没出生按头一个月算 */
|
||||
var g = day * G100 / 100, can = st.can / g;
|
||||
var y1 = 0, y3 = 0;
|
||||
for (var m = 0; m < 36; m++) { var c = ml(m) * f * G100 / 100 * 30.4 / st.can * price; if (m < 12) y1 += c; y3 += c; }
|
||||
R.innerHTML = '<small>' + (a === 0 ? '宝宝出生后头一个月,' : '') + (st.n === 2 ? '两个宝宝' : '') + '每天大约喝 ' + Math.round(day / 10) * 10 + 'ml,' + st.can + ' 克一罐能吃</small><span class="big num">' + (can >= 10 ? Math.round(can) : can.toFixed(1)) + '<u>天</u></span>' +
|
||||
'<div class="row"><div><small>每月大约</small><b class="num">' + (30.4 / can).toFixed(1) + ' 罐</b></div><div><small>每月花</small><b class="num">' + Y(30.4 / can * price) + '</b></div><div><small>第一年</small><b class="num">' + Y(y1) + '</b></div></div>' +
|
||||
'<span class="note">每天约用 ' + Math.round(g) + ' 克粉;按同样的喂法,喝到 3 岁一共约 ' + Y(y3) + (st.feed < 1 ? '(母乳越多,花得越少)' : '') + '。</span>';
|
||||
$('#lead').textContent = (st.feed === 1 ? '纯奶粉' : st.feed === .5 ? '混合喂养按一半算' : '母乳为主按一成算') + (st.n === 2 ? ',两个宝宝' : '') + ',一罐 ' + st.can + ' 克、' + Math.round(price) + ' 元';
|
||||
tb.innerHTML = [['0~1 个月', 0], ['1~3 个月', 1.5], ['3~6 个月', 4], ['6~9 个月', 7], ['9~12 个月', 10], ['1~3 岁', 20]].map(function (r) {
|
||||
var d = ml(r[1]) * f, cm = 30.4 * d * G100 / 100 / st.can;
|
||||
var on = a > 0 && ((a < 1 && r[1] === 0) || (a === 2 && r[1] === 1.5) || (a === 4.5 && r[1] === 4) || (a === 9 && r[1] >= 7 && r[1] < 12) || (a === 24 && r[1] === 20));
|
||||
return '<tr' + (on ? ' class="on"' : '') + '><td><b>' + r[0] + '</b></td><td class="num">' + Math.round(d / 10) * 10 + ' ml</td><td class="num">' + cm.toFixed(1) + ' 罐</td><td class="num">' + Y(cm * price) + '</td></tr>';
|
||||
}).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/naifen-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>
|
||||
</body>
|
||||
</html>
|
||||
104
topic/niaobu-js/index.html
Normal file
104
topic/niaobu-js/index.html
Normal file
@@ -0,0 +1,104 @@
|
||||
<!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 个,本页是其中之一)。
|
||||
按月累加:每天片数 U(按月龄)× 30.4 天,按尺码 SZ(出生体重决定每个码穿到几个月)分到 NB / S / M / L;
|
||||
母乳宝宝头 3 个月便便多,每天 +1 片;白天混用棉尿布 ×0.7;双胞胎 ×2。单价 P 是 2026 年电商常见到手价估算(元/片),包装片数 PK 取常见大包。
|
||||
不是报价,只帮用户估量级、别囤错码。改数只改下面 U / SZ / P / PK。
|
||||
共用 ../_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>#res .row b{font-size:17px;white-space:nowrap}:root{--c:#3E8FD8;--c2:#7BB8F0;--cbg:#EAF4FF}</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">选完马上算出来</div></div>
|
||||
<div class="fld"><span class="lb">宝宝出生体重(没出生就选预估的)</span><div class="seg" id="cW"><button type="button" data-v="0">不到 5 斤</button><button type="button" data-v="1">5~7 斤</button><button type="button" data-v="2">7 斤以上</button></div>
|
||||
<span class="hint">不知道就选 5~7 斤,大多数宝宝在这个范围;B 超估重可以参考</span></div>
|
||||
<div class="fld"><span class="lb">一胎几个宝宝</span><div class="seg s2" id="cN"><button type="button" data-v="1">一个</button><button type="button" data-v="2">双胞胎</button></div></div>
|
||||
<div class="fld"><span class="lb">打算怎么喂</span><div class="seg" id="cFeed"><button type="button" data-v="m">母乳为主</button><button type="button" data-v="h">混合喂养</button><button type="button" data-v="f">奶粉为主</button></div>
|
||||
<span class="hint">母乳宝宝头几个月便便次数多,换得更勤</span></div>
|
||||
<div class="fld"><span class="lb">白天会用棉尿布吗</span><div class="seg s2" id="cCloth"><button type="button" data-v="0">全用纸尿裤</button><button type="button" data-v="1">白天混着用</button></div></div>
|
||||
<div class="fld"><span class="lb">想买什么价位的</span><div class="seg" id="cLv"><button type="button" data-v="0">平价</button><button type="button" data-v="1">中档</button><button type="button" data-v="2">高端进口</button></div>
|
||||
<span class="hint">平价约 1.2~1.7 元/片,中档约 1.8~2.4 元,高端约 2.8~3.6 元(2026 年电商常见到手价)</span></div>
|
||||
<div class="fld"><span class="lb">想先算到宝宝几个月</span><div class="seg" id="cTo"><button type="button" data-v="3">3 个月</button><button type="button" data-v="6">6 个月</button><button type="button" data-v="12">1 岁</button></div></div>
|
||||
</section>
|
||||
|
||||
<section class="sec">
|
||||
<h2>每个码用多少</h2>
|
||||
<p class="lead" id="lead"></p>
|
||||
<table class="tbl" id="tbl"><thead><tr><th>尺码</th><th>大约穿到</th><th>片数</th><th>约几包</th></tr></thead><tbody></tbody></table>
|
||||
</section>
|
||||
|
||||
<section class="sec">
|
||||
<h2>囤货提醒</h2>
|
||||
<div class="cards">
|
||||
<div class="cd"><div class="k"><b>NB 码别囤多</b></div><p>宝宝长得快,体重大的出生没几天就换 S 码。NB 先买 1~2 包,不够再补。</p></div>
|
||||
<div class="cd"><div class="k"><b>先买小包试用</b></div><p>同一个牌子不一定适合每个宝宝,红屁股、侧漏就换。试好了再囤大包,赶上大促更划算。</p></div>
|
||||
<div class="cd"><div class="k"><b>看体重换码,别看月龄</b></div><p>腰上勒出红印、大腿根勒紧、经常侧漏,就该换大一码了。</p></div>
|
||||
<div class="cd"><div class="k"><b>1 岁后可以换拉拉裤</b></div><p>宝宝会爬会站后,穿脱方便的拉拉裤更省事,单价略贵一点。</p></div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<p class="foot">片数和价格是估算,每个宝宝差别不小,以实际用量为准。</p>
|
||||
</div>
|
||||
<script src="../_shared/calc.js?v=26110464"></script>
|
||||
<script>
|
||||
(function () {
|
||||
'use strict';
|
||||
var C = window.CK, $ = C.$;
|
||||
function Y(x) { var s = C.money(x); return /万$/.test(s) ? s + '元' : s + ' 元'; } /* 金额 + 单位:1,058 元 / 1.65 万元 */
|
||||
C.shell();
|
||||
/* 每天片数,按第几个月(0 起):新生儿 10~12 片,1~3 月 8~10,3~6 月 7~8,6~12 月 5~6 */
|
||||
var U = [11, 9.5, 9, 8, 7.5, 7, 6, 6, 5.5, 5.5, 5, 5];
|
||||
/* 各码穿到第几个月末(出生体重 0 小 / 1 中 / 2 大):[NB, S, M, L] 的结束月 */
|
||||
var SZ = [[2, 5, 10, 12], [1, 4, 9, 12], [0.5, 3, 7, 12]];
|
||||
var P = [[1.2, 1.3, 1.5, 1.7], [1.8, 1.9, 2.1, 2.4], [2.8, 3.0, 3.2, 3.6]];
|
||||
var PK = [84, 80, 64, 54], NM = ['NB', 'S', 'M', 'L'], KG = ['5 公斤以内', '4~8 公斤', '6~11 公斤', '9~14 公斤'];
|
||||
var st = C.store('mmbox.calc.niaobu', { w: '', n: '', feed: '', cloth: '', lv: '', to: '' });
|
||||
['W', 'N', 'Feed', 'Cloth', 'Lv', 'To'].forEach(function (k) { C.seg($('#c' + k), st, k.toLowerCase(), paint); });
|
||||
function paint() {
|
||||
st.save();
|
||||
var R = $('#res'), tb = $('#tbl tbody');
|
||||
if (st.w === '' || st.n === '' || st.feed === '' || st.cloth === '' || st.lv === '' || st.to === '') { R.innerHTML = '<div class="empty">选完马上算出来</div>'; tb.innerHTML = ''; $('#lead').textContent = ''; return; }
|
||||
var sz = SZ[st.w], pcs = [0, 0, 0, 0], step = 0.25;
|
||||
for (var m = 0; m < st.to; m += step) {
|
||||
var day = U[Math.floor(m)] + (m < 3 && st.feed === 'm' ? 1 : m < 3 && st.feed === 'h' ? .5 : 0);
|
||||
var k = 0; while (k < 3 && m >= sz[k]) k++;
|
||||
pcs[k] += day * 30.4 * step;
|
||||
}
|
||||
var f = (st.cloth === 1 ? .7 : 1) * st.n;
|
||||
pcs = pcs.map(function (x) { return Math.round(x * f / 10) * 10; });
|
||||
var tot = pcs.reduce(function (a, x) { return a + x; }, 0), cost = pcs.reduce(function (a, x, i) { return a + x * P[st.lv][i]; }, 0);
|
||||
var mon = cost / st.to;
|
||||
R.innerHTML = '<small>到宝宝' + (st.to === 12 ? ' 1 岁' : ' ' + st.to + ' 个月') + ',' + (st.n === 2 ? '两个宝宝' : '') + '一共大约要</small><span class="big num">' + tot.toLocaleString('zh-CN') + '<u>片</u></span>' +
|
||||
'<div class="row"><div><small>大约花</small><b class="num">' + Y(cost) + '</b></div><div><small>平均每月</small><b class="num">' + Y(mon) + '</b></div><div><small>头月每天</small><b class="num">' + Math.round((U[0] + (st.feed === 'm' ? 1 : st.feed === 'h' ? .5 : 0)) * (st.cloth === 1 ? .7 : 1) * st.n) + ' 片</b></div></div>' +
|
||||
'<span class="note">NB 码只要 ' + pcs[0] + ' 片左右,' + (pcs[0] <= 100 ? '一包就够' : '别一次囤太多') + ';用量最大的是 ' + NM[pcs.indexOf(Math.max.apply(null, pcs))] + ' 码。</span>';
|
||||
var end = function (i) { var e = sz[i]; return e < 1 ? '出生后 2 周左右' : e >= 12 ? '1 岁左右' : e + ' 个月左右'; };
|
||||
$('#lead').textContent = KG.map(function (k, i) { return NM[i] + ' ' + k; }).join(',') + '(各牌子略有差别)';
|
||||
tb.innerHTML = pcs.map(function (x, i) {
|
||||
if (!x) return '';
|
||||
var pk = Math.max(1, Math.ceil(x / PK[i] - .15)); /* 整包,略超一点不多买一包 */
|
||||
return '<tr><td><b>' + NM[i] + '</b></td><td>' + end(i) + '</td><td class="num">' + x + ' 片</td><td class="num">' + pk + ' 包</td></tr>';
|
||||
}).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/niaobu-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>
|
||||
</body>
|
||||
</html>
|
||||
121
topic/rizi-js/index.html
Normal file
121
topic/rizi-js/index.html
Normal file
@@ -0,0 +1,121 @@
|
||||
<!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 个,本页是其中之一)。
|
||||
按生日(没出生就按预产期)排出满月、双满月、百天、半岁、周岁:公历、星期、农历、还有几天;可选「不是周末就给附近的周末」。
|
||||
怎么数天两种习惯都给:出生当天算第 1 天(满月 = 生日 + 29 天、百天 = 生日 + 99 天),或第二天算第 1 天(各 +1)。半岁、周岁按日历月。
|
||||
农历用下面 LN 表(2024-02-10 ~ 2031-12 每个农历月初一,[距 1970-01-01 的天数, 农历年, 月, 闰],由 python lunardate 生成);超出范围就不显示农历。
|
||||
共用 ../_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:#E8774E;--c2:#FFAA85;--cbg:#FFF1EA}#res .row b{font-size:17px;white-space:nowrap}.res .row b small{display:block;font-size:11.5px;font-weight:600;opacity:.9}.tl .m span.lu{color:var(--c);font-weight:700}</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">填好日期,马上排出来</div></div>
|
||||
<div class="fld"><span class="lb">宝宝出生了吗</span><div class="seg s2" id="cBorn"><button type="button" data-v="1">已经出生</button><button type="button" data-v="0">还没出生</button></div></div>
|
||||
<div class="fld"><label class="lb" for="cD" id="lbD">宝宝生日</label><input class="in num" type="date" id="cD">
|
||||
<span class="hint" id="hD">还没出生就填预产期;预产期前后 2 周出生都正常,生了以后回来改成生日就行</span></div>
|
||||
<div class="fld"><span class="lb">从哪天开始数</span><div class="seg s2" id="cCnt"><button type="button" data-v="1">出生当天算第 1 天</button><button type="button" data-v="2">出生第二天算第 1 天</button></div>
|
||||
<span class="hint">各地习惯不一样,多数地方按出生当天算;拿不准就问问家里老人</span></div>
|
||||
<div class="fld"><span class="lb">打算怎么过</span><div class="seg s2" id="cPlan"><button type="button" data-v="jiu">办酒席</button><button type="button" data-v="pai">拍照留念</button><button type="button" data-v="all">酒席、拍照都要</button><button type="button" data-v="jian">家里简单过</button></div></div>
|
||||
<div class="fld"><span class="lb">正日子不是周末,要不要找附近的周末</span><div class="seg s2" id="cWk"><button type="button" data-v="1">要,方便亲戚来</button><button type="button" data-v="0">不用,就按正日子</button></div></div>
|
||||
</section>
|
||||
|
||||
<section class="sec">
|
||||
<h2>宝宝的大日子</h2>
|
||||
<p class="lead" id="lead">按你填的日期排</p>
|
||||
<ul class="tl" id="tl"></ul>
|
||||
</section>
|
||||
|
||||
<section class="sec">
|
||||
<h2>提前要做的事</h2>
|
||||
<div class="cards" id="todo"></div>
|
||||
</section>
|
||||
|
||||
<p class="foot">日期按北京时间计算;各地风俗不同,以家里习惯为准。</p>
|
||||
</div>
|
||||
<script src="../_shared/calc.js?v=26110464"></script>
|
||||
<script>
|
||||
(function () {
|
||||
'use strict';
|
||||
var C = window.CK, $ = C.$, DAY = C.DAY;
|
||||
C.shell();
|
||||
var LN = [[19763,2024,1],[19792,2024,2],[19822,2024,3],[19851,2024,4],[19880,2024,5],[19910,2024,6],[19939,2024,7],[19969,2024,8],[19999,2024,9],[20028,2024,10],[20058,2024,11],[20088,2024,12],[20117,2025,1],[20147,2025,2],[20176,2025,3],[20206,2025,4],[20235,2025,5],[20264,2025,6],[20294,2025,6,1],[20323,2025,7],[20353,2025,8],[20382,2025,9],[20412,2025,10],[20442,2025,11],[20472,2025,12],[20501,2026,1],[20531,2026,2],[20560,2026,3],[20590,2026,4],[20619,2026,5],[20648,2026,6],[20678,2026,7],[20707,2026,8],[20736,2026,9],[20766,2026,10],[20796,2026,11],[20826,2026,12],[20855,2027,1],[20885,2027,2],[20915,2027,3],[20944,2027,4],[20974,2027,5],[21003,2027,6],[21032,2027,7],[21062,2027,8],[21091,2027,9],[21120,2027,10],[21150,2027,11],[21180,2027,12],[21209,2028,1],[21239,2028,2],[21269,2028,3],[21299,2028,4],[21328,2028,5],[21358,2028,5,1],[21387,2028,6],[21416,2028,7],[21446,2028,8],[21475,2028,9],[21504,2028,10],[21534,2028,11],[21564,2028,12],[21593,2029,1],[21623,2029,2],[21653,2029,3],[21682,2029,4],[21712,2029,5],[21741,2029,6],[21771,2029,7],[21800,2029,8],[21830,2029,9],[21859,2029,10],[21888,2029,11],[21918,2029,12],[21948,2030,1],[21977,2030,2],[22007,2030,3],[22036,2030,4],[22066,2030,5],[22096,2030,6],[22125,2030,7],[22155,2030,8],[22184,2030,9],[22214,2030,10],[22243,2030,11],[22273,2030,12],[22302,2031,1],[22331,2031,2],[22361,2031,3],[22391,2031,3,1],[22420,2031,4],[22450,2031,5],[22479,2031,6],[22509,2031,7],[22539,2031,8],[22568,2031,9],[22598,2031,10],[22627,2031,11]];
|
||||
var MN = ['', '正', '二', '三', '四', '五', '六', '七', '八', '九', '十', '冬', '腊'];
|
||||
var DN = ['初一', '初二', '初三', '初四', '初五', '初六', '初七', '初八', '初九', '初十', '十一', '十二', '十三', '十四', '十五', '十六', '十七', '十八', '十九', '二十', '廿一', '廿二', '廿三', '廿四', '廿五', '廿六', '廿七', '廿八', '廿九', '三十'];
|
||||
function lunar(t) {
|
||||
var d = Math.round(t / DAY), k = -1;
|
||||
for (var i = 0; i < LN.length; i++) { if (LN[i][0] <= d) k = i; else break; }
|
||||
if (k < 0 || k === LN.length - 1) return '';
|
||||
var m = LN[k];
|
||||
return '农历' + (m[3] ? '闰' : '') + MN[m[2]] + '月' + DN[d - m[0]];
|
||||
}
|
||||
var st = C.store('mmbox.calc.rizi', { born: '', d: '', cnt: 1, plan: '', wk: '' });
|
||||
if (!st.d && st.born !== 1) { var sd = C.savedDue(); if (!isNaN(sd)) st.d = C.fmt(sd); }
|
||||
var inp = $('#cD'); inp.value = st.d;
|
||||
inp.addEventListener('input', function () { st.d = inp.value; paint(); });
|
||||
C.seg($('#cBorn'), st, 'born', paint); C.seg($('#cCnt'), st, 'cnt', paint); C.seg($('#cPlan'), st, 'plan', paint); C.seg($('#cWk'), st, 'wk', paint);
|
||||
/* 离 t 最近的周六或周日(同样近取前面那个) */
|
||||
function wkend(t) {
|
||||
var w = new Date(t).getUTCDay(); if (w === 0 || w === 6) return t;
|
||||
var back = w, fwd = 6 - w; /* 往前到上个周日要 w 天,往后到周六要 6-w 天 */
|
||||
return fwd <= back ? t + fwd * DAY : t - back * DAY;
|
||||
}
|
||||
function left(t) { var n = Math.round((t - C.today()) / DAY); return n > 0 ? '还有 ' + n + ' 天' : n === 0 ? '就是今天' : '已过 ' + (-n) + ' 天'; }
|
||||
function md(t) { var d = new Date(t); return (d.getUTCMonth() + 1) + ' 月 ' + d.getUTCDate() + ' 日'; }
|
||||
function paint() {
|
||||
st.save();
|
||||
$('#lbD').textContent = st.born === 0 ? '预产期' : '宝宝生日';
|
||||
var b = C.parse(st.d), R = $('#res');
|
||||
if (isNaN(b)) { R.innerHTML = '<div class="empty">填好日期,马上排出来</div>'; $('#tl').innerHTML = ''; $('#todo').innerHTML = ''; return; }
|
||||
var off = st.cnt === 2 ? 1 : 0;
|
||||
var L = [
|
||||
['满月', b + (29 + off) * DAY, '出生第 30 天', '办满月酒、给亲友报喜;宝宝 42 天还要去医院体检'],
|
||||
['双满月', b + (59 + off) * DAY, '出生第 60 天', '宝宝开始会对着人笑,适合拍第一组表情照'],
|
||||
['百天', b + (99 + off) * DAY, '出生第 100 天', '百天照、百日宴;宝宝能抬头了,拍照最好拍'],
|
||||
['半岁', C.addMonths(b, 6), '满 6 个月', '开始添加辅食的时候,也可以拍半岁纪念照'],
|
||||
['周岁', C.addMonths(b, 12), '满 1 周岁', '抓周、周岁宴、全家福']
|
||||
];
|
||||
var wk = st.wk === 1;
|
||||
$('#lead').textContent = (st.born === 0 ? '按预产期 ' : '按生日 ') + C.cn(b, 1) + ' 排' + (st.born === 0 ? ',生了以后回来改成生日会更准' : '');
|
||||
$('#tl').innerHTML = L.map(function (x) {
|
||||
var t = x[1], we = wkend(t), now = Math.round((t - C.today()) / DAY), lu = lunar(t);
|
||||
return '<li class="' + (now < 0 ? 'done' : '') + '"><span class="d"></span><div class="m"><b>' + x[0] + '<em>' + x[2] + '</em></b>' +
|
||||
'<span><i>' + C.cn(t, 1) + ' ' + C.wd(t) + '</i> · ' + left(t) + '</span>' + (lu ? '<span class="lu">' + lu + '</span>' : '') +
|
||||
(wk && we !== t ? '<span>附近的周末:<i>' + md(we) + ' ' + C.wd(we) + '</i></span>' : '') + '<span>' + x[3] + '</span></div></li>';
|
||||
}).join('');
|
||||
var nx = L.filter(function (x) { return x[1] >= C.today(); })[0] || L[4];
|
||||
R.innerHTML = '<small>' + (nx[1] >= C.today() ? '下一个大日子:' : '') + nx[0] + (C.cn(nx[1], 1).slice(0, 4) !== C.cn(C.today(), 1).slice(0, 4) ? '(' + C.cn(nx[1], 1).slice(0, 4) + ' 年)' : '') + '是</small><span class="big num">' + md(nx[1]) + '<u>' + C.wd(nx[1]) + '</u></span>' +
|
||||
'<div class="row">' + [L[0], L[2], L[4]].map(function (x) { return '<div><small>' + x[0] + '</small><b class="num">' + md(x[1]).replace(/ /g, '') + '<small>' + C.wd(x[1]) + (lunar(x[1]) ? '<br>' + lunar(x[1]).replace('农历', '') : '') + '</small></b></div>'; }).join('') + '</div>' +
|
||||
'<span class="note">' + nx[0] + left(nx[1]) + (wk && wkend(nx[1]) !== nx[1] ? ';想办在周末可以定 ' + md(wkend(nx[1])) + C.wd(wkend(nx[1])) : '') + '。</span>';
|
||||
var td = [];
|
||||
var plan = st.plan;
|
||||
if (plan === 'jiu' || plan === 'all') td.push(['订酒店', '满月酒提前 1 个月左右订,周末的好日子更抢手;百日宴、周岁宴提前 1~2 个月。满月时妈妈刚出月子,酒席别太累,也可以和百天合办。']);
|
||||
if (plan === 'pai' || plan === 'all') td.push(['约拍照', '百天照、周岁照提前 2~4 周约摄影;百天宝宝能抬头、会笑,最好拍。约上午宝宝睡醒吃饱的时段,带两套换洗衣服。']);
|
||||
if (plan === 'jian') td.push(['家里过也有仪式感', '拍张和满月、百天数字牌的合照,写几句话给宝宝;周岁可以在家抓周。']);
|
||||
td.push(['42 天体检', '满月后别忘了出生第 42 天左右,妈妈和宝宝一起去医院做产后复查。']);
|
||||
if (st.born === 0) td.push(['先别订死', '预产期只是估算,提前或推后两周都常见;酒店可以先问档期,生了以后再按真实生日定。']);
|
||||
$('#todo').innerHTML = td.map(function (x) { return '<div class="cd"><div class="k"><b>' + x[0] + '</b></div><p>' + x[1] + '</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/rizi-js.jpg', '满月、百天、周岁是哪天:公历农历星期几一起排好'); /* 11-06 微信转发图 */</script>
|
||||
<!-- 分步模式:一步一题、最后出结果(同生娃计算器),见 ../_shared/wizard.js -->
|
||||
<script src="../_shared/wizard.js?v=26110464"></script>
|
||||
<script>CKW.init({ root: '.calc', res: '#res', after: '#scroll > section.calc ~ *' });</script>
|
||||
</body>
|
||||
</html>
|
||||
99
topic/yichuan-js/index.html
Normal file
99
topic/yichuan-js/index.html
Normal file
@@ -0,0 +1,99 @@
|
||||
<!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 1 - pr(st[x[0] + 'f'], x[3]) * pr(st[x[0] + 'm'], x[3]); });
|
||||
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>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user