{"id":2268,"date":"2026-11-04T15:31:50","date_gmt":"2026-11-04T07:31:50","guid":{"rendered":"https:\/\/www.funpt.cn\/?page_id=2268"},"modified":"2026-11-04T15:40:51","modified_gmt":"2026-11-04T07:40:51","slug":"%e5%87%8f%e8%84%82%e8%ae%a1%e5%88%92%e8%ae%a1%e7%ae%97%e5%99%a8","status":"publish","type":"page","link":"https:\/\/www.funpt.cn\/?page_id=2268","title":{"rendered":"\u51cf\u8102\u8ba1\u5212\u8ba1\u7b97\u5668"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2268\" class=\"elementor elementor-2268\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-22d0734 e-flex e-con-boxed e-con e-parent\" data-id=\"22d0734\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f354fbc elementor-widget elementor-widget-html\" data-id=\"f354fbc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div class=\"flc\" id=\"flc\">\r\n<style>\r\n  #flc, #flc *, #flc *::before, #flc *::after { box-sizing: border-box; }\r\n  #flc [hidden] { display: none !important; }\r\n\r\n  #flc {\r\n    max-width: 1400px;\r\n    width: 96%;\r\n    margin: 28px auto 48px;\r\n    background: #ffffff;\r\n    border: 1px solid #e2e8f0;\r\n    border-radius: 16px;\r\n    box-shadow: 0 12px 32px -22px rgba(15, 23, 42, .35), 0 2px 6px rgba(15, 23, 42, .04);\r\n    overflow: hidden;\r\n    font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"PingFang SC\",\r\n                 \"Hiragino Sans GB\", \"Microsoft YaHei\", sans-serif;\r\n    color: #0f172a;\r\n    -webkit-font-smoothing: antialiased;\r\n    text-align: left;\r\n    line-height: 1.5;\r\n  }\r\n\r\n  \/* ---------- \u6807\u9898\u5e26 ---------- *\/\r\n  #flc .flc-head {\r\n    background: linear-gradient(135deg, #0f172a 0%, #1e3a8a 100%);\r\n    color: #fff;\r\n    padding: 24px 40px;\r\n  }\r\n  #flc .flc-head h2 {\r\n    margin: 0 0 6px;\r\n    font-size: 22px;\r\n    font-weight: 700;\r\n    letter-spacing: .3px;\r\n    color: #fff;\r\n    line-height: 1.35;\r\n  }\r\n  #flc .flc-head p {\r\n    margin: 0;\r\n    font-size: 14px;\r\n    color: #cbd5e1;\r\n  }\r\n\r\n  \/* ---------- \u4e3b\u4f53 ---------- *\/\r\n  #flc .flc-body { padding: 26px 40px 34px; }\r\n\r\n  #flc .flc-grid {\r\n    display: grid;\r\n    grid-template-columns: minmax(0, 1.18fr) minmax(0, 1fr);\r\n    gap: 24px;\r\n    align-items: stretch;\r\n  }\r\n  #flc .flc-left, #flc .flc-right { display: flex; flex-direction: column; }\r\n  #flc .flc-stats { flex: 1 1 auto; display: flex; flex-direction: column; justify-content: space-between; }\r\n\r\n  \/* ---------- \u533a\u5757 ---------- *\/\r\n  #flc .flc-block {\r\n    background: #f8fafc;\r\n    border: 1px solid #e2e8f0;\r\n    border-radius: 12px;\r\n    padding: 18px 20px 20px;\r\n    margin-bottom: 16px;\r\n  }\r\n  #flc .flc-block:last-child { margin-bottom: 0; }\r\n\r\n  #flc .flc-title {\r\n    margin: 0 0 2px;\r\n    font-size: 15px;\r\n    font-weight: 700;\r\n    color: #0f172a;\r\n  }\r\n  #flc .flc-sub {\r\n    margin: 0;\r\n    font-size: 12.5px;\r\n    color: #94a3b8;\r\n  }\r\n\r\n  \/* ---------- \u6027\u522b\u5207\u6362 ---------- *\/\r\n  #flc .segmented {\r\n    display: flex;\r\n    gap: 4px;\r\n    padding: 4px;\r\n    background: #eef2f7;\r\n    border-radius: 12px;\r\n  }\r\n  #flc .segmented button {\r\n    flex: 1;\r\n    padding: 10px 0;\r\n    border: none;\r\n    border-radius: 9px;\r\n    background: transparent;\r\n    font-family: inherit;\r\n    font-size: 14.5px;\r\n    font-weight: 600;\r\n    color: #64748b;\r\n    cursor: pointer;\r\n    transition: all .2s ease;\r\n  }\r\n  #flc .segmented button.active {\r\n    background: #fff;\r\n    color: #2563eb;\r\n    box-shadow: 0 2px 8px rgba(15, 23, 42, .1);\r\n  }\r\n\r\n  \/* ---------- \u5b57\u6bb5 ---------- *\/\r\n  #flc .field { margin-top: 18px; }\r\n  #flc .field:first-child { margin-top: 0; }\r\n  #flc .field-head {\r\n    display: flex;\r\n    justify-content: space-between;\r\n    align-items: center;\r\n    margin-bottom: 9px;\r\n    gap: 10px;\r\n  }\r\n  #flc .field-head label {\r\n    font-size: 13.5px;\r\n    font-weight: 600;\r\n    color: #334155;\r\n  }\r\n\r\n  #flc .value-box {\r\n    display: flex;\r\n    align-items: baseline;\r\n    gap: 2px;\r\n    padding: 4px 10px;\r\n    background: #fff;\r\n    border: 1px solid #cbd5e1;\r\n    border-radius: 8px;\r\n    transition: border-color .2s, box-shadow .2s;\r\n  }\r\n  #flc .value-box:focus-within {\r\n    border-color: #2563eb;\r\n    box-shadow: 0 0 0 3px rgba(37, 99, 235, .12);\r\n  }\r\n  #flc .value-box input {\r\n    width: 62px;\r\n    border: none;\r\n    background: transparent;\r\n    outline: none;\r\n    text-align: right;\r\n    font-family: inherit;\r\n    font-size: 14.5px;\r\n    font-weight: 700;\r\n    color: #1d4ed8;\r\n    font-variant-numeric: tabular-nums;\r\n  }\r\n  #flc .value-box span { font-size: 12px; font-weight: 600; color: #94a3b8; }\r\n\r\n  #flc input[type=number]::-webkit-outer-spin-button,\r\n  #flc input[type=number]::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }\r\n  #flc input[type=number] { -moz-appearance: textfield; appearance: textfield; }\r\n\r\n  \/* ---------- \u6ed1\u5757 ---------- *\/\r\n  #flc input[type=range] {\r\n    -webkit-appearance: none;\r\n    appearance: none;\r\n    display: block;\r\n    width: 100%;\r\n    height: 6px;\r\n    margin: 6px 0 0;\r\n    border-radius: 99px;\r\n    background: #e2e8f0;\r\n    outline: none;\r\n    cursor: pointer;\r\n  }\r\n  #flc input[type=range]::-webkit-slider-thumb {\r\n    -webkit-appearance: none;\r\n    width: 20px;\r\n    height: 20px;\r\n    border-radius: 50%;\r\n    background: #2563eb;\r\n    border: 3px solid #fff;\r\n    box-shadow: 0 2px 8px rgba(37, 99, 235, .5);\r\n    cursor: grab;\r\n    transition: transform .15s ease;\r\n  }\r\n  #flc input[type=range]::-webkit-slider-thumb:active { transform: scale(1.1); cursor: grabbing; }\r\n  #flc input[type=range]::-moz-range-thumb {\r\n    width: 15px;\r\n    height: 15px;\r\n    border-radius: 50%;\r\n    background: #2563eb;\r\n    border: 3px solid #fff;\r\n    box-shadow: 0 2px 8px rgba(37, 99, 235, .5);\r\n    cursor: grab;\r\n  }\r\n\r\n  #flc .hint {\r\n    margin-top: 8px;\r\n    font-size: 12px;\r\n    color: #94a3b8;\r\n    text-align: right;\r\n  }\r\n  #flc .hint b { color: #1d4ed8; }\r\n\r\n  \/* ---------- \u4e0b\u62c9\u6846 ---------- *\/\r\n  #flc .select-wrap { position: relative; }\r\n  #flc .select-wrap::after {\r\n    content: '';\r\n    position: absolute;\r\n    right: 16px;\r\n    top: 50%;\r\n    width: 7px;\r\n    height: 7px;\r\n    border-right: 2px solid #94a3b8;\r\n    border-bottom: 2px solid #94a3b8;\r\n    transform: translateY(-70%) rotate(45deg);\r\n    pointer-events: none;\r\n  }\r\n  #flc select {\r\n    width: 100%;\r\n    padding: 11px 38px 11px 13px;\r\n    border: 1px solid #cbd5e1;\r\n    border-radius: 9px;\r\n    background: #fff;\r\n    font-family: inherit;\r\n    font-size: 13.5px;\r\n    font-weight: 600;\r\n    color: #334155;\r\n    outline: none;\r\n    appearance: none;\r\n    -webkit-appearance: none;\r\n    cursor: pointer;\r\n    transition: border-color .2s, box-shadow .2s;\r\n  }\r\n  #flc select:focus {\r\n    border-color: #2563eb;\r\n    box-shadow: 0 0 0 3px rgba(37, 99, 235, .12);\r\n  }\r\n\r\n  \/* ---------- \u5468\u671f\u80f6\u56ca ---------- *\/\r\n  #flc .chip-group { display: flex; gap: 8px; }\r\n  #flc .chip-group button {\r\n    flex: 1;\r\n    padding: 10px 4px;\r\n    border: 1px solid #cbd5e1;\r\n    border-radius: 9px;\r\n    background: #fff;\r\n    font-family: inherit;\r\n    font-size: 13px;\r\n    font-weight: 600;\r\n    color: #64748b;\r\n    cursor: pointer;\r\n    white-space: nowrap;\r\n    transition: all .2s ease;\r\n  }\r\n  #flc .chip-group button.active {\r\n    background: linear-gradient(135deg, #1e3a8a, #2563eb);\r\n    border-color: transparent;\r\n    color: #fff;\r\n    box-shadow: 0 6px 16px -8px rgba(37, 99, 235, .9);\r\n  }\r\n  #flc .custom-days {\r\n    margin-top: 12px;\r\n    display: flex;\r\n    justify-content: flex-end;\r\n  }\r\n  #flc .custom-days input { width: 84px; }\r\n\r\n  \/* ---------- \u7ed3\u679c\u5361 ---------- *\/\r\n  #flc .flc-result {\r\n    position: relative;\r\n    overflow: hidden;\r\n    padding: 26px 22px;\r\n    border-radius: 14px;\r\n    text-align: center;\r\n    color: #fff;\r\n    background: linear-gradient(135deg, #1e3a8a 0%, #2563eb 100%);\r\n    box-shadow: 0 16px 34px -20px rgba(30, 58, 138, .9);\r\n    margin-bottom: 16px;\r\n  }\r\n  #flc .flc-result::after {\r\n    content: '';\r\n    position: absolute;\r\n    top: -95px;\r\n    right: -70px;\r\n    width: 190px;\r\n    height: 190px;\r\n    border-radius: 50%;\r\n    background: rgba(255, 255, 255, .1);\r\n  }\r\n  #flc .res-label {\r\n    position: relative;\r\n    font-size: 12.5px;\r\n    font-weight: 600;\r\n    letter-spacing: 1.5px;\r\n    opacity: .88;\r\n  }\r\n  #flc .big {\r\n    position: relative;\r\n    margin: 6px 0 4px;\r\n    display: flex;\r\n    align-items: baseline;\r\n    justify-content: center;\r\n    gap: 6px;\r\n  }\r\n  #flc .big span {\r\n    font-size: 46px;\r\n    font-weight: 800;\r\n    letter-spacing: -2px;\r\n    line-height: 1.1;\r\n    font-variant-numeric: tabular-nums;\r\n  }\r\n  #flc .big small { font-size: 14px; font-weight: 600; opacity: .82; }\r\n  #flc .res-desc {\r\n    position: relative;\r\n    font-size: 12.5px;\r\n    line-height: 1.65;\r\n    opacity: .85;\r\n  }\r\n\r\n  \/* ---------- \u63d0\u793a\u6761 ---------- *\/\r\n  #flc .flc-banner {\r\n    display: flex;\r\n    gap: 10px;\r\n    padding: 13px 15px;\r\n    border-radius: 12px;\r\n    font-size: 12.8px;\r\n    line-height: 1.7;\r\n    margin-bottom: 16px;\r\n    border: 1px solid transparent;\r\n    animation: flcFadeUp .3s ease;\r\n  }\r\n  #flc .flc-banner .ic { font-size: 15px; line-height: 1.4; flex: none; }\r\n  #flc .flc-banner b { font-weight: 700; }\r\n  #flc .flc-banner.ok   { background: #ecfdf5; color: #047857; border-color: #a7f3d0; }\r\n  #flc .flc-banner.warn { background: #fffbeb; color: #b45309; border-color: #fde68a; }\r\n  #flc .flc-banner.err  { background: #fef2f2; color: #b91c1c; border-color: #fecaca; }\r\n\r\n  @keyframes flcFadeUp {\r\n    from { opacity: 0; transform: translateY(4px); }\r\n    to   { opacity: 1; transform: translateY(0); }\r\n  }\r\n\r\n  \/* ---------- \u660e\u7ec6\u884c ---------- *\/\r\n  #flc .stat-row {\r\n    display: flex;\r\n    justify-content: space-between;\r\n    align-items: center;\r\n    gap: 12px;\r\n    padding: 10px 0;\r\n    border-bottom: 1px solid #eef2f7;\r\n    font-size: 13.5px;\r\n  }\r\n  #flc .stat-row:first-child { padding-top: 0; }\r\n  #flc .stat-row:last-child { border-bottom: none; padding-bottom: 0; }\r\n  #flc .stat-row span { color: #64748b; }\r\n  #flc .stat-row b {\r\n    color: #1e293b;\r\n    font-weight: 700;\r\n    font-variant-numeric: tabular-nums;\r\n    white-space: nowrap;\r\n  }\r\n  #flc .stat-row b.hl { color: #1d4ed8; }\r\n  #flc .stat-row b.good { color: #059669; }\r\n  #flc .stat-row b.bad { color: #dc2626; }\r\n\r\n  #flc .flc-footnote {\r\n    margin: 18px 0 0;\r\n    font-size: 11.5px;\r\n    line-height: 1.75;\r\n    color: #94a3b8;\r\n    text-align: center;\r\n  }\r\n\r\n  \/* ---------- \u5e73\u677f \/ \u624b\u673a ---------- *\/\r\n  @media (max-width: 1024px) {\r\n    #flc .flc-head { padding: 20px 24px; }\r\n    #flc .flc-head h2 { font-size: 20px; }\r\n    #flc .flc-body { padding: 20px 24px 26px; }\r\n    #flc .flc-grid { grid-template-columns: minmax(0, 1fr); gap: 16px; }\r\n  }\r\n  @media (max-width: 600px) {\r\n    #flc { width: 96%; margin: 16px auto 32px; border-radius: 14px; }\r\n    #flc .flc-head { padding: 18px 18px; }\r\n    #flc .flc-head h2 { font-size: 18px; }\r\n    #flc .flc-head p { font-size: 12.5px; }\r\n    #flc .flc-body { padding: 16px 12px 22px; }\r\n    #flc .flc-block { padding: 16px 12px 18px; }\r\n    #flc .big span { font-size: 38px; }\r\n    #flc .flc-result { padding: 22px 16px; }\r\n    #flc .res-desc { font-size: 11.5px; }\r\n    #flc .chip-group { flex-wrap: wrap; }\r\n    #flc .chip-group button { flex: 1 1 44%; }\r\n    #flc .stat-row { font-size: 12.5px; gap: 8px; padding: 9px 0; }\r\n    #flc .flc-banner { font-size: 12.2px; padding: 12px 13px; }\r\n    #flc .segmented button { font-size: 13.5px; }\r\n    #flc select { font-size: 12.5px; padding: 10px 28px 10px 10px; }\r\n    #flc .select-wrap::after { right: 12px; }\r\n    #flc .value-box { padding: 3px 8px; }\r\n    #flc .value-box input { width: 54px; font-size: 13.5px; }\r\n  }\r\n<\/style>\r\n\r\n<div class=\"flc-head\">\r\n  <h2>\u51cf\u8102\u8ba1\u5212\u8ba1\u7b97\u5668<\/h2>\r\n  <p>\u57fa\u7840\u4ee3\u8c22 \u00b7 \u6bcf\u65e5\u6d88\u8017 \u00b7 \u79d1\u5b66\u70ed\u91cf\u7f3a\u53e3<\/p>\r\n<\/div>\r\n\r\n<div class=\"flc-body\">\r\n  <div class=\"flc-grid\">\r\n\r\n    <!-- ============ \u5de6\u5217\uff1a\u8f93\u5165 ============ -->\r\n    <div class=\"flc-left\">\r\n\r\n      <section class=\"flc-block\">\r\n        <div class=\"segmented\" id=\"flc-genderSeg\">\r\n          <button type=\"button\" class=\"active\" data-g=\"male\">\u2642 \u7537\u6027<\/button>\r\n          <button type=\"button\" data-g=\"female\">\u2640 \u5973\u6027<\/button>\r\n        <\/div>\r\n\r\n        <div class=\"field\">\r\n          <div class=\"field-head\">\r\n            <label for=\"flc-age\">\u5e74\u9f84<\/label>\r\n            <div class=\"value-box\"><input type=\"number\" id=\"flc-age\" value=\"28\" min=\"10\" max=\"100\"><span>\u5c81<\/span><\/div>\r\n          <\/div>\r\n          <input type=\"range\" id=\"flc-ageR\" min=\"10\" max=\"100\" step=\"1\" value=\"28\">\r\n        <\/div>\r\n\r\n        <div class=\"field\">\r\n          <div class=\"field-head\">\r\n            <label for=\"flc-height\">\u8eab\u9ad8<\/label>\r\n            <div class=\"value-box\"><input type=\"number\" id=\"flc-height\" value=\"175\" min=\"130\" max=\"220\"><span>cm<\/span><\/div>\r\n          <\/div>\r\n          <input type=\"range\" id=\"flc-heightR\" min=\"130\" max=\"220\" step=\"1\" value=\"175\">\r\n        <\/div>\r\n\r\n        <div class=\"field\">\r\n          <div class=\"field-head\">\r\n            <label for=\"flc-weight\">\u4f53\u91cd<\/label>\r\n            <div class=\"value-box\"><input type=\"number\" id=\"flc-weight\" value=\"70\" min=\"30\" max=\"200\" step=\"0.1\"><span>kg<\/span><\/div>\r\n          <\/div>\r\n          <input type=\"range\" id=\"flc-weightR\" min=\"30\" max=\"200\" step=\"0.5\" value=\"70\">\r\n        <\/div>\r\n\r\n        <div class=\"field\">\r\n          <div class=\"field-head\"><label for=\"flc-activity\">\u6d3b\u52a8\u6c34\u5e73<\/label><\/div>\r\n          <div class=\"select-wrap\">\r\n            <select id=\"flc-activity\">\r\n              <option value=\"1.2\">\ud83e\ude91 \u4e45\u5750\u4e0d\u52a8 \u00b7 \u51e0\u4e4e\u4e0d\u8fd0\u52a8<\/option>\r\n              <option value=\"1.375\" selected>\ud83d\udeb6 \u8f7b\u5ea6\u6d3b\u52a8 \u00b7 \u6bcf\u5468\u8fd0\u52a8 1\u20133 \u5929<\/option>\r\n              <option value=\"1.55\">\ud83c\udfc3 \u4e2d\u5ea6\u6d3b\u52a8 \u00b7 \u6bcf\u5468\u8fd0\u52a8 3\u20135 \u5929<\/option>\r\n              <option value=\"1.725\">\ud83d\udcaa \u9ad8\u5ea6\u6d3b\u52a8 \u00b7 \u6bcf\u5468\u8fd0\u52a8 6\u20137 \u5929<\/option>\r\n              <option value=\"1.9\">\ud83d\udd25 \u6781\u9ad8\u5f3a\u5ea6 \u00b7 \u4f53\u529b\u52b3\u52a8 \/ \u6bcf\u5929\u4e24\u7ec3<\/option>\r\n            <\/select>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"field\">\r\n          <div class=\"field-head\"><label for=\"flc-formula\">BMR \u8ba1\u7b97\u516c\u5f0f<\/label><\/div>\r\n          <div class=\"select-wrap\">\r\n            <select id=\"flc-formula\">\r\n              <option value=\"mifflin\">Mifflin-St Jeor\uff08\u63a8\u8350\uff09<\/option>\r\n              <option value=\"harris\">Harris-Benedict\uff08\u4fee\u8ba2\u7248\uff09<\/option>\r\n              <option value=\"katch\">Katch-McArdle\uff08\u9700\u4f53\u8102\u7387\uff09<\/option>\r\n            <\/select>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"field\" id=\"flc-bfField\" hidden>\r\n          <div class=\"field-head\">\r\n            <label for=\"flc-bodyfat\">\u4f53\u8102\u7387<\/label>\r\n            <div class=\"value-box\"><input type=\"number\" id=\"flc-bodyfat\" value=\"20\" min=\"3\" max=\"60\" step=\"0.1\"><span>%<\/span><\/div>\r\n          <\/div>\r\n          <input type=\"range\" id=\"flc-bodyfatR\" min=\"3\" max=\"60\" step=\"0.5\" value=\"20\">\r\n        <\/div>\r\n      <\/section>\r\n\r\n      <section class=\"flc-block\">\r\n        <h3 class=\"flc-title\">\u51cf\u8102\u76ee\u6807<\/h3>\r\n        <p class=\"flc-sub\">\u8bbe\u5b9a\u60f3\u51cf\u6389\u7684\u4f53\u91cd\u548c\u5468\u671f\uff0c\u81ea\u52a8\u8ba1\u7b97\u70ed\u91cf\u7f3a\u53e3<\/p>\r\n\r\n        <div class=\"field\">\r\n          <div class=\"field-head\">\r\n            <label for=\"flc-loss\">\u76ee\u6807\u51cf\u91cd<\/label>\r\n            <div class=\"value-box\"><input type=\"number\" id=\"flc-loss\" value=\"6\" min=\"0.5\" max=\"40\" step=\"0.5\"><span>kg<\/span><\/div>\r\n          <\/div>\r\n          <input type=\"range\" id=\"flc-lossR\" min=\"0.5\" max=\"40\" step=\"0.5\" value=\"6\">\r\n          <div class=\"hint\" id=\"flc-targetHint\">\u76ee\u6807\u4f53\u91cd <b>64.0<\/b> kg<\/div>\r\n        <\/div>\r\n\r\n        <div class=\"field\">\r\n          <div class=\"field-head\"><label>\u8ba1\u5212\u5468\u671f<\/label><\/div>\r\n          <div class=\"chip-group\" id=\"flc-periodGroup\">\r\n            <button type=\"button\" data-days=\"90\">3\u4e2a\u6708<\/button>\r\n            <button type=\"button\" data-days=\"180\" class=\"active\">6\u4e2a\u6708<\/button>\r\n            <button type=\"button\" data-days=\"365\">1\u5e74<\/button>\r\n            <button type=\"button\" data-days=\"custom\">\u81ea\u5b9a\u4e49<\/button>\r\n          <\/div>\r\n          <div class=\"custom-days\" id=\"flc-customDaysWrap\" hidden>\r\n            <div class=\"value-box\"><input type=\"number\" id=\"flc-customDays\" value=\"120\" min=\"14\" max=\"1095\"><span>\u5929<\/span><\/div>\r\n          <\/div>\r\n        <\/div>\r\n      <\/section>\r\n\r\n    <\/div>\r\n\r\n    <!-- ============ \u53f3\u5217\uff1a\u7ed3\u679c ============ -->\r\n    <div class=\"flc-right\">\r\n\r\n      <section class=\"flc-result\">\r\n        <div class=\"res-label\">\u6bcf\u65e5\u5efa\u8bae\u6444\u5165<\/div>\r\n        <div class=\"big\"><span id=\"flc-intakeBig\">0<\/span><small>kcal<\/small><\/div>\r\n        <div class=\"res-desc\" id=\"flc-intakeDesc\">\u2014<\/div>\r\n      <\/section>\r\n\r\n      <div class=\"flc-banner ok\" id=\"flc-banner\">\r\n        <span class=\"ic\">\u2713<\/span>\r\n        <span id=\"flc-bannerText\">\u2014<\/span>\r\n      <\/div>\r\n\r\n      <section class=\"flc-block flc-stats\">\r\n        <div class=\"stat-row\"><span>\u57fa\u7840\u4ee3\u8c22 BMR<\/span><b id=\"flc-sBmr\">\u2014<\/b><\/div>\r\n        <div class=\"stat-row\"><span>\u6bcf\u65e5\u603b\u6d88\u8017 TDEE<\/span><b id=\"flc-sTdee\">\u2014<\/b><\/div>\r\n        <div class=\"stat-row\"><span>\u7406\u8bba\u65e5\u5747\u7f3a\u53e3<\/span><b id=\"flc-sReq\">\u2014<\/b><\/div>\r\n        <div class=\"stat-row\"><span>\u5b89\u5168\u7f3a\u53e3\u4e0a\u9650<\/span><b id=\"flc-sMax\">\u2014<\/b><\/div>\r\n        <div class=\"stat-row\"><span>\u91c7\u7528\u65e5\u5747\u7f3a\u53e3<\/span><b class=\"hl\" id=\"flc-sUse\">\u2014<\/b><\/div>\r\n        <div class=\"stat-row\"><span>\u9884\u8ba1\u6bcf\u5468\u51cf\u91cd<\/span><b id=\"flc-sWeekly\">\u2014<\/b><\/div>\r\n        <div class=\"stat-row\"><span>\u9884\u8ba1\u8fbe\u6210\u65f6\u95f4<\/span><b id=\"flc-sEta\">\u2014<\/b><\/div>\r\n      <\/section>\r\n\r\n      <p class=\"flc-footnote\">\r\n        \u7ed3\u679c\u4e3a\u516c\u5f0f\u4f30\u7b97\u503c\uff0c\u5b9e\u9645\u53d7\u808c\u8089\u91cf\u3001\u6fc0\u7d20\u3001\u57fa\u56e0\u3001\u996e\u98df\u6267\u884c\u5ea6\u7b49\u5f71\u54cd\uff0c\u8bef\u5dee\u7ea6 \u00b110%\u3002<br>\r\n        \u672c\u5de5\u5177\u4ec5\u4f9b\u5065\u5eb7\u53c2\u8003\uff0c\u4e0d\u4f5c\u4e3a\u533b\u7597\u5efa\u8bae\u3002\r\n      <\/p>\r\n\r\n    <\/div>\r\n\r\n  <\/div>\r\n<\/div>\r\n\r\n<script>\r\n(function () {\r\n  'use strict';\r\n\r\n  const $ = id => document.getElementById('flc-' + id);\r\n  const KCAL_PER_KG = 7700;      \/\/ \u51cf 1 kg \u8102\u80aa\u7ea6\u9700 7700 kcal \u7f3a\u53e3\r\n  const MAX_DEFICIT = 750;       \/\/ \u5355\u65e5\u7f3a\u53e3\u786c\u4e0a\u9650\r\n  const DEFICIT_RATIO = 0.25;    \/\/ \u7f3a\u53e3\u4e0d\u8d85\u8fc7 TDEE \u7684 25%\r\n\r\n  const state = {\r\n    gender: 'male',\r\n    formula: 'mifflin',\r\n    periodDays: 180\r\n  };\r\n\r\n  \/* ================= \u5de5\u5177 ================= *\/\r\n\r\n  const fmt = n => Math.round(n).toLocaleString('en-US');\r\n\r\n  const shown = new WeakMap();\r\n  function setNum(el, target) {\r\n    const from = shown.has(el) ? shown.get(el) : 0;\r\n    shown.set(el, target);\r\n    if (el._raf) cancelAnimationFrame(el._raf);\r\n    if (Math.abs(target - from) < 0.5) { el.textContent = fmt(target); return; }\r\n    const start = performance.now(), dur = 420;\r\n    const step = t => {\r\n      const p = Math.min((t - start) \/ dur, 1);\r\n      const e = 1 - Math.pow(1 - p, 3);\r\n      el.textContent = fmt(from + (target - from) * e);\r\n      if (p < 1) el._raf = requestAnimationFrame(step);\r\n    };\r\n    el._raf = requestAnimationFrame(step);\r\n  }\r\n\r\n  function fillRange(r) {\r\n    if (!r) return;\r\n    const p = ((r.value - r.min) \/ (r.max - r.min)) * 100;\r\n    r.style.background = `linear-gradient(to right, #2563eb ${p}%, #e2e8f0 ${p}%)`;\r\n  }\r\n\r\n  function getVal(numId, rangeId) {\r\n    const n = $(numId), r = $(rangeId);\r\n    const v = parseFloat(n.value);\r\n    const val = isNaN(v) ? +r.value : v;\r\n    return Math.min(Math.max(val, +r.min), +r.max);\r\n  }\r\n\r\n  \/* ================= \u8f93\u5165\u8054\u52a8 ================= *\/\r\n\r\n  function setupPair(numId, rangeId, onChange) {\r\n    const n = $(numId), r = $(rangeId);\r\n\r\n    n.addEventListener('input', () => {\r\n      const v = parseFloat(n.value);\r\n      if (!isNaN(v) && v >= +r.min && v <= +r.max) {\r\n        r.value = v;\r\n        fillRange(r);\r\n      }\r\n      if (onChange) onChange();\r\n      update();\r\n    });\r\n\r\n    n.addEventListener('blur', () => {\r\n      let v = parseFloat(n.value);\r\n      if (isNaN(v)) v = +r.value;\r\n      v = Math.min(Math.max(v, +r.min), +r.max);\r\n      n.value = v;\r\n      r.value = v;\r\n      fillRange(r);\r\n      if (onChange) onChange();\r\n      update();\r\n    });\r\n\r\n    r.addEventListener('input', () => {\r\n      n.value = r.value;\r\n      fillRange(r);\r\n      if (onChange) onChange();\r\n      update();\r\n    });\r\n\r\n    fillRange(r);\r\n  }\r\n\r\n  \/* ================= \u6838\u5fc3\u8ba1\u7b97 ================= *\/\r\n\r\n  function computeBMR() {\r\n    const age = getVal('age', 'ageR');\r\n    const h   = getVal('height', 'heightR');\r\n    const w   = getVal('weight', 'weightR');\r\n    const male = state.gender === 'male';\r\n    let bmr;\r\n\r\n    if (state.formula === 'mifflin') {\r\n      bmr = 10 * w + 6.25 * h - 5 * age + (male ? 5 : -161);\r\n    } else if (state.formula === 'harris') {\r\n      bmr = male\r\n        ? 88.362 + 13.397 * w + 4.799 * h - 5.677 * age\r\n        : 447.593 + 9.247 * w + 3.098 * h - 4.330 * age;\r\n    } else {\r\n      const bf  = getVal('bodyfat', 'bodyfatR') \/ 100;\r\n      const lbm = w * (1 - bf);\r\n      bmr = 370 + 21.6 * lbm;\r\n    }\r\n    return Math.max(bmr, 0);\r\n  }\r\n\r\n  function computePlan(bmr, tdee) {\r\n    const weight = getVal('weight', 'weightR');\r\n    const loss   = getVal('loss', 'lossR');\r\n    const days   = state.periodDays;\r\n    const minIntake = state.gender === 'male' ? 1500 : 1200;\r\n\r\n    const targetWeight = Math.max(weight - loss, 0);\r\n    const totalDeficit = loss * KCAL_PER_KG;\r\n    const reqDeficit   = totalDeficit \/ days;\r\n\r\n    const maxDeficit   = Math.min(MAX_DEFICIT, tdee * DEFICIT_RATIO);\r\n    const floorRoom    = Math.max(tdee - minIntake, 0);\r\n    const capDeficit   = Math.min(maxDeficit, floorRoom);\r\n\r\n    const useDeficit   = Math.max(Math.min(reqDeficit, capDeficit), 0);\r\n    const intake       = Math.round(Math.max(tdee - useDeficit, Math.min(minIntake, tdee)));\r\n\r\n    const feasible     = capDeficit > 0 && reqDeficit <= capDeficit + 0.5;\r\n    const weeklyLoss   = useDeficit * 7 \/ KCAL_PER_KG;\r\n    const weeklyPct    = weeklyLoss \/ weight * 100;\r\n\r\n    let suggestDays = Infinity;\r\n    if (capDeficit > 0.5) suggestDays = Math.ceil(totalDeficit \/ capDeficit);\r\n    const suggestLoss = capDeficit * days \/ KCAL_PER_KG;\r\n\r\n    const etaDays = useDeficit > 0.5 ? Math.ceil(totalDeficit \/ useDeficit) : Infinity;\r\n\r\n    return {\r\n      weight, loss, targetWeight, days, minIntake,\r\n      totalDeficit, reqDeficit, maxDeficit, floorRoom, capDeficit,\r\n      useDeficit, intake, feasible, weeklyLoss, weeklyPct,\r\n      suggestDays, suggestLoss, etaDays\r\n    };\r\n  }\r\n\r\n  \/* ================= \u6e32\u67d3 ================= *\/\r\n\r\n  function monthText(d) {\r\n    if (!isFinite(d)) return '\u2014';\r\n    const m = Math.round(d \/ 30);\r\n    if (d < 30) return `\u7ea6 ${d} \u5929`;\r\n    return `\u7ea6 ${d} \u5929\uff08${m} \u4e2a\u6708\uff09`;\r\n  }\r\n\r\n  function render(p, bmr, tdee) {\r\n    $('targetHint').innerHTML =\r\n      `\u76ee\u6807\u4f53\u91cd <b>${p.targetWeight.toFixed(1)}<\/b> kg\uff08\u5f53\u524d ${p.weight.toFixed(1)} kg\uff09`;\r\n\r\n    setNum($('intakeBig'), p.intake);\r\n    $('intakeDesc').textContent = p.feasible\r\n      ? `\u6bcf\u5929\u7ea6 ${Math.round(p.useDeficit)} kcal \u7f3a\u53e3 \u00b7 \u6bcf\u5468\u9884\u8ba1\u51cf ${p.weeklyLoss.toFixed(2)}\\u00A0kg`\r\n      : `\u6309\u5b89\u5168\u7f3a\u53e3 ${Math.round(p.useDeficit)} kcal \u8ba1\u7b97 \u00b7 \u6bcf\u5468\u7ea6\u51cf ${p.weeklyLoss.toFixed(2)}\\u00A0kg`;\r\n\r\n    const banner = $('banner');\r\n    const bText = $('bannerText');\r\n    banner.className = 'flc-banner';\r\n\r\n    if (p.capDeficit <= 0.5) {\r\n      banner.classList.add('err');\r\n      banner.querySelector('.ic').textContent = '\u2715';\r\n      bText.innerHTML =\r\n        `\u4f60\u7684\u6bcf\u65e5\u603b\u6d88\u8017\uff08${fmt(tdee)} kcal\uff09\u5df2\u63a5\u8fd1\u6216\u4f4e\u4e8e\u5efa\u8bae\u6700\u4f4e\u6444\u5165\u91cf\uff08${p.minIntake} kcal\uff09\uff0c` +\r\n        `\u5728\u4e0d\u4f4e\u4e8e\u5b89\u5168\u6444\u5165\u7684\u524d\u63d0\u4e0b\u65e0\u6cd5\u5236\u9020\u6709\u6548\u7f3a\u53e3\u3002\u5efa\u8bae\u54a8\u8be2\u4e13\u4e1a\u8425\u517b\u5e08\u5236\u5b9a\u65b9\u6848\u3002`;\r\n    } else if (p.feasible) {\r\n      banner.classList.add('ok');\r\n      banner.querySelector('.ic').textContent = '\u2713';\r\n      let extra = '';\r\n      if (p.weeklyPct > 1) {\r\n        extra = ` \u6ce8\u610f\uff1a\u5f53\u524d\u901f\u5ea6\u8d85\u8fc7\u6bcf\u5468\u4f53\u91cd\u7684 1%\uff0c\u5efa\u8bae\u9002\u5f53\u653e\u6162\u8282\u594f\u3002`;\r\n      }\r\n      bText.innerHTML =\r\n        `\u8ba1\u5212\u53ef\u884c\uff1a\u6bcf\u5929\u7ea6 <b>${Math.round(p.useDeficit)} kcal<\/b> \u7f3a\u53e3\uff0c` +\r\n        `\u9884\u8ba1 <b>${monthText(p.etaDays)}<\/b> \u8fbe\u6210\u76ee\u6807\u3002` +\r\n        `\u6bcf\u65e5\u6444\u5165\u4e0d\u4f4e\u4e8e ${p.minIntake} kcal\uff0c\u5b89\u5168\u3002${extra}`;\r\n    } else {\r\n      banner.classList.add('warn');\r\n      banner.querySelector('.ic').textContent = '\u26a0';\r\n      bText.innerHTML =\r\n        `\u76ee\u6807\u504f\u6fc0\u8fdb\uff1a\u9700\u8981\u6bcf\u5929 <b>${Math.round(p.reqDeficit)} kcal<\/b> \u7f3a\u53e3\uff0c` +\r\n        `\u4f46\u5b89\u5168\u4e0a\u9650\u53ea\u6709 <b>${Math.round(p.capDeficit)} kcal<\/b>\u3002<br>` +\r\n        `\u5efa\u8bae\u628a\u5468\u671f\u5ef6\u957f\u5230 <b>${monthText(p.suggestDays)}<\/b>\uff0c` +\r\n        `\u6216\u628a\u76ee\u6807\u51cf\u91cd\u8c03\u6574\u4e3a <b>${p.suggestLoss.toFixed(1)} kg<\/b>\u3002`;\r\n    }\r\n\r\n    $('sBmr').textContent    = `${fmt(bmr)} kcal`;\r\n    $('sTdee').textContent   = `${fmt(tdee)} kcal`;\r\n    $('sReq').textContent    = `${Math.round(p.reqDeficit)} kcal \/ \u5929`;\r\n    $('sMax').textContent    = `${Math.round(p.capDeficit)} kcal \/ \u5929`;\r\n\r\n    const useEl = $('sUse');\r\n    useEl.textContent = `${Math.round(p.useDeficit)} kcal \/ \u5929`;\r\n    useEl.className = 'hl';\r\n\r\n    const wEl = $('sWeekly');\r\n    wEl.textContent = `-${p.weeklyLoss.toFixed(2)} kg\uff08${p.weeklyPct.toFixed(2)}%\uff09`;\r\n    wEl.className = p.weeklyPct > 1 ? 'bad' : 'good';\r\n\r\n    $('sEta').textContent = isFinite(p.etaDays) ? monthText(p.etaDays) : '\u2014';\r\n  }\r\n\r\n  \/* ================= \u76ee\u6807\u51cf\u91cd\u8303\u56f4\u81ea\u9002\u5e94 ================= *\/\r\n\r\n  function syncLossRange() {\r\n    const w = getVal('weight', 'weightR');\r\n    const raw = Math.min(40, w * 0.4);\r\n    const m = Math.max(1, Math.round(raw * 2) \/ 2);\r\n    const lossR = $('lossR'), lossN = $('loss');\r\n\r\n    lossR.max = m;\r\n    lossN.max = m;\r\n\r\n    if (parseFloat(lossR.value) > m) { lossR.value = m; lossN.value = m; }\r\n    if (parseFloat(lossN.value) > m) { lossN.value = m; lossR.value = m; }\r\n\r\n    fillRange(lossR);\r\n  }\r\n\r\n  \/* ================= \u4e3b\u66f4\u65b0 ================= *\/\r\n\r\n  function update() {\r\n    syncLossRange();\r\n\r\n    const bmr = computeBMR();\r\n    const pal = parseFloat($('activity').value) || 1.2;\r\n    const tdee = bmr * pal;\r\n\r\n    const plan = computePlan(bmr, tdee);\r\n    render(plan, bmr, tdee);\r\n  }\r\n\r\n  \/* ================= \u4e8b\u4ef6\u7ed1\u5b9a ================= *\/\r\n\r\n  document.querySelectorAll('#flc-genderSeg button').forEach(btn => {\r\n    btn.addEventListener('click', () => {\r\n      document.querySelectorAll('#flc-genderSeg button')\r\n        .forEach(b => b.classList.remove('active'));\r\n      btn.classList.add('active');\r\n      state.gender = btn.dataset.g;\r\n      update();\r\n    });\r\n  });\r\n\r\n  $('formula').addEventListener('change', e => {\r\n    state.formula = e.target.value;\r\n    $('bfField').hidden = state.formula !== 'katch';\r\n    update();\r\n  });\r\n\r\n  $('activity').addEventListener('change', update);\r\n\r\n  document.querySelectorAll('#flc-periodGroup button').forEach(btn => {\r\n    btn.addEventListener('click', () => {\r\n      document.querySelectorAll('#flc-periodGroup button')\r\n        .forEach(b => b.classList.remove('active'));\r\n      btn.classList.add('active');\r\n\r\n      const d = btn.dataset.days;\r\n      if (d === 'custom') {\r\n        $('customDaysWrap').hidden = false;\r\n        let v = parseInt($('customDays').value, 10);\r\n        if (isNaN(v)) { v = 90; $('customDays').value = 90; }\r\n        state.periodDays = Math.min(Math.max(v, 14), 1095);\r\n      } else {\r\n        $('customDaysWrap').hidden = true;\r\n        state.periodDays = parseInt(d, 10);\r\n      }\r\n      update();\r\n    });\r\n  });\r\n\r\n  $('customDays').addEventListener('input', () => {\r\n    let v = parseInt($('customDays').value, 10);\r\n    if (isNaN(v)) return;\r\n    v = Math.min(Math.max(v, 14), 1095);\r\n    state.periodDays = v;\r\n    update();\r\n  });\r\n\r\n  \/* ================= \u521d\u59cb\u5316 ================= *\/\r\n\r\n  setupPair('age', 'ageR');\r\n  setupPair('height', 'heightR');\r\n  setupPair('weight', 'weightR', syncLossRange);\r\n  setupPair('bodyfat', 'bodyfatR');\r\n  setupPair('loss', 'lossR');\r\n\r\n  syncLossRange();\r\n  update();\r\n\r\n})();\r\n<\/script>\r\n<\/div>\r\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\u51cf\u8102\u8ba1\u5212\u8ba1\u7b97\u5668 \u57fa\u7840\u4ee3\u8c22 \u00b7 \u6bcf\u65e5\u6d88\u8017 \u00b7 \u79d1\u5b66\u70ed\u91cf\u7f3a\u53e3 \u2642 \u7537\u6027 \u2640 \u5973\u6027 \u5e74\u9f84 \u5c81 \u8eab\u9ad8 cm \u4f53\u91cd kg [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":2070,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2268","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.funpt.cn\/index.php?rest_route=\/wp\/v2\/pages\/2268","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.funpt.cn\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.funpt.cn\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.funpt.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.funpt.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2268"}],"version-history":[{"count":16,"href":"https:\/\/www.funpt.cn\/index.php?rest_route=\/wp\/v2\/pages\/2268\/revisions"}],"predecessor-version":[{"id":2284,"href":"https:\/\/www.funpt.cn\/index.php?rest_route=\/wp\/v2\/pages\/2268\/revisions\/2284"}],"up":[{"embeddable":true,"href":"https:\/\/www.funpt.cn\/index.php?rest_route=\/wp\/v2\/pages\/2070"}],"wp:attachment":[{"href":"https:\/\/www.funpt.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2268"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}