0bb48d3f04
Капстоун-бой из 6 испытаний (по одному из каждой главы: десятичные, проценты, множества, рациональные, координаты, геометрия) с HP-баром. Победа 5/6 → +150 XP (LS.xp) + звание «Математик 6 класса» (зажигается ачивка-strip, флаг localStorage math6_course_done). Тесты math6: 17/17. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
383 lines
26 KiB
HTML
383 lines
26 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="ru">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
|
||
<meta http-equiv="Pragma" content="no-cache">
|
||
<meta http-equiv="Expires" content="0">
|
||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||
<title>Математика 6 класс — учебник</title>
|
||
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700;800;900&family=Inter:wght@400;500;600;700&family=Unbounded:wght@400;700;800;900&display=swap" rel="stylesheet">
|
||
<script src="/js/api.js" defer></script>
|
||
<script src="/js/xp.js" defer></script>
|
||
<style>
|
||
:root{
|
||
--bg:#f5f6ff; --card:#fff;
|
||
--text:#16162e; --muted:#5b5b78;
|
||
--border:#e4e6f7;
|
||
--pri:#4f46e5; --pri-d:#3730a3;
|
||
--pri-soft:#e0e7ff;
|
||
--c1:#4f46e5; --c1-d:#3730a3; /* гл.1 — indigo */
|
||
--c2:#0891b2; --c2-d:#0e7490; /* гл.2 — cyan */
|
||
--c3:#7c3aed; --c3-d:#6d28d9; /* гл.3 — violet */
|
||
--c4:#e11d48; --c4-d:#be123c; /* гл.4 — rose */
|
||
--c5:#059669; --c5-d:#047857; /* гл.5 — emerald */
|
||
--c6:#d97706; --c6-d:#b45309; /* гл.6 — amber */
|
||
--sh:0 4px 16px rgba(79,70,229,.10);
|
||
--sh-h:0 12px 36px rgba(79,70,229,.18);
|
||
}
|
||
html.dark{
|
||
--bg:#0a0a16; --card:#13131f;
|
||
--text:#e8eaf6; --muted:#9aa0c0;
|
||
--border:#26263a;
|
||
--pri-soft:rgba(79,70,229,.16);
|
||
}
|
||
*{margin:0;padding:0;box-sizing:border-box}
|
||
html,body{min-height:100vh}
|
||
body{font-family:'Inter',system-ui,sans-serif;background:var(--bg);color:var(--text);line-height:1.55;transition:background .25s,color .25s}
|
||
|
||
.hdr{position:relative;background:linear-gradient(110deg,#312e81 0%,#4f46e5 55%,#818cf8 100%);color:#fff;padding:32px 24px 28px;overflow:hidden;border-bottom:2px solid rgba(199,210,254,.18)}
|
||
.hdr::before{content:'6';position:absolute;right:24px;top:-30%;font-family:'Unbounded',sans-serif;font-size:clamp(7rem,20vw,15rem);font-weight:900;letter-spacing:-.04em;color:transparent;-webkit-text-stroke:1.5px rgba(224,231,255,.16);line-height:1;pointer-events:none;user-select:none}
|
||
.hdr-inner{position:relative;z-index:1;max-width:1100px;margin:0 auto;display:flex;align-items:center;gap:18px;flex-wrap:wrap}
|
||
.hdr-back{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;background:rgba(255,255,255,.16);border-radius:9px;color:#fff;text-decoration:none;font-size:.85rem;font-weight:600;transition:background .15s}
|
||
.hdr-back:hover{background:rgba(255,255,255,.26)}
|
||
.hdr h1{font-family:'Outfit',sans-serif;font-size:1.85rem;font-weight:900;letter-spacing:-.01em}
|
||
.hdr-sub{font-size:.92rem;opacity:.9;margin-top:4px}
|
||
.hdr-side{margin-left:auto;display:flex;gap:8px}
|
||
.hdr-btn{padding:8px 12px;background:rgba(255,255,255,.16);border:none;color:#fff;border-radius:9px;cursor:pointer;font-weight:600;font-size:.82rem;display:inline-flex;align-items:center;gap:6px;transition:background .15s;font-family:inherit}
|
||
.hdr-btn:hover{background:rgba(255,255,255,.26)}
|
||
.ic{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
|
||
|
||
main{max-width:1100px;margin:0 auto;padding:32px 24px 60px}
|
||
|
||
.prog-overall{background:linear-gradient(135deg,var(--pri-soft),rgba(124,58,237,.10));border:1px solid var(--border);border-radius:14px;padding:14px 18px;margin-bottom:28px;display:flex;gap:14px;align-items:center;flex-wrap:wrap}
|
||
.po-icon{width:46px;height:46px;border-radius:12px;background:linear-gradient(135deg,#4f46e5,#7c3aed);color:#fff;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-family:'Outfit',sans-serif;font-size:1.4rem;font-weight:900}
|
||
.po-text{flex:1;min-width:160px}
|
||
.po-label{font-size:.78rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:4px}
|
||
.po-bar{height:8px;background:rgba(79,70,229,.14);border-radius:5px;overflow:hidden;margin-top:6px}
|
||
.po-fill{height:100%;background:linear-gradient(90deg,var(--pri),#7c3aed);border-radius:5px;transition:width .5s}
|
||
.po-xp{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;background:linear-gradient(135deg,#f59e0b,var(--pri));color:#fff;border-radius:99px;font-size:.8rem;font-weight:800;font-family:'Unbounded',sans-serif;letter-spacing:.02em;box-shadow:0 4px 12px rgba(79,70,229,.22)}
|
||
|
||
.ch-grid{display:grid;grid-template-columns:1fr;gap:18px;margin-bottom:30px}
|
||
@media(min-width:620px){.ch-grid{grid-template-columns:1fr 1fr}}
|
||
@media(min-width:980px){.ch-grid{grid-template-columns:1fr 1fr 1fr}}
|
||
|
||
.ch-card{background:var(--card);border:1.5px solid var(--border);border-radius:18px;overflow:hidden;display:flex;flex-direction:column;transition:transform .2s,box-shadow .2s,border-color .2s;cursor:pointer;text-decoration:none;color:inherit}
|
||
.ch-card:hover{transform:translateY(-4px);box-shadow:var(--sh-h)}
|
||
.ch-cover{padding:22px 22px 18px;color:#fff;position:relative;overflow:hidden;min-height:118px}
|
||
.ch-cover-wm{position:absolute;right:2px;top:-14px;font-size:4.2rem;font-weight:900;font-family:'Unbounded',sans-serif;line-height:1;color:rgba(255,255,255,.20);pointer-events:none;letter-spacing:-.03em}
|
||
.ch-num{display:inline-block;padding:4px 10px;background:rgba(255,255,255,.24);border-radius:99px;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;margin-bottom:8px;position:relative;z-index:1}
|
||
.ch-title{font-family:'Outfit',sans-serif;font-size:1.1rem;font-weight:800;letter-spacing:-.01em;position:relative;z-index:1;line-height:1.3}
|
||
.ch-range{font-size:.84rem;opacity:.92;margin-top:4px;position:relative;z-index:1;font-weight:500}
|
||
|
||
.ch-cover.cc1{background:linear-gradient(135deg,#312e81,#4f46e5 60%,#818cf8)}
|
||
.ch-cover.cc2{background:linear-gradient(135deg,#164e63,#0891b2 60%,#22d3ee)}
|
||
.ch-cover.cc3{background:linear-gradient(135deg,#4c1d95,#7c3aed 60%,#a78bfa)}
|
||
.ch-cover.cc4{background:linear-gradient(135deg,#881337,#e11d48 60%,#fb7185)}
|
||
.ch-cover.cc5{background:linear-gradient(135deg,#064e3b,#059669 60%,#34d399)}
|
||
.ch-cover.cc6{background:linear-gradient(135deg,#92400e,#d97706 60%,#fbbf24)}
|
||
|
||
.ch-body{padding:16px 20px 18px;display:flex;flex-direction:column;flex:1}
|
||
.ch-desc{font-size:.88rem;color:var(--text);opacity:.84;flex:1;margin-bottom:12px;line-height:1.55}
|
||
.ch-prog{margin-bottom:12px}
|
||
.ch-prog-label{display:flex;justify-content:space-between;font-size:.74rem;color:var(--muted);font-weight:600;margin-bottom:4px}
|
||
.ch-prog-bar{height:6px;background:rgba(0,0,0,.07);border-radius:4px;overflow:hidden}
|
||
.ch-prog-fill{height:100%;border-radius:4px;transition:width .5s}
|
||
.ch-card.k1 .ch-prog-fill{background:linear-gradient(90deg,var(--c1),var(--c1-d))}
|
||
.ch-card.k2 .ch-prog-fill{background:linear-gradient(90deg,var(--c2),var(--c2-d))}
|
||
.ch-card.k3 .ch-prog-fill{background:linear-gradient(90deg,var(--c3),var(--c3-d))}
|
||
.ch-card.k4 .ch-prog-fill{background:linear-gradient(90deg,var(--c4),var(--c4-d))}
|
||
.ch-card.k5 .ch-prog-fill{background:linear-gradient(90deg,var(--c5),var(--c5-d))}
|
||
.ch-card.k6 .ch-prog-fill{background:linear-gradient(90deg,var(--c6),var(--c6-d))}
|
||
|
||
.ch-action{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-radius:11px;font-weight:700;font-size:.9rem;color:#fff;transition:filter .15s}
|
||
.ch-action:hover{filter:brightness(1.08)}
|
||
.ch-card.k1 .ch-action{background:linear-gradient(135deg,var(--c1),#818cf8)}
|
||
.ch-card.k2 .ch-action{background:linear-gradient(135deg,var(--c2),#22d3ee)}
|
||
.ch-card.k3 .ch-action{background:linear-gradient(135deg,var(--c3),#a78bfa)}
|
||
.ch-card.k4 .ch-action{background:linear-gradient(135deg,var(--c4),#fb7185)}
|
||
.ch-card.k5 .ch-action{background:linear-gradient(135deg,var(--c5),#34d399)}
|
||
.ch-card.k6 .ch-action{background:linear-gradient(135deg,var(--c6),#fbbf24)}
|
||
|
||
.ach-strip{background:var(--card);border:1.5px solid var(--border);border-radius:16px;padding:18px 22px;margin-bottom:28px;display:flex;align-items:center;gap:16px;transition:border-color .4s,box-shadow .4s}
|
||
.ach-strip.lit{border-color:#f59e0b;box-shadow:0 0 0 3px rgba(245,158,11,.18)}
|
||
.ach-icon{width:52px;height:52px;border-radius:14px;background:rgba(0,0,0,.06);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .4s}
|
||
.ach-strip.lit .ach-icon{background:linear-gradient(135deg,#fbbf24,#f59e0b)}
|
||
.ach-icon svg{width:28px;height:28px;stroke:var(--muted);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
|
||
.ach-strip.lit .ach-icon svg{stroke:#fff}
|
||
.ach-text{flex:1}
|
||
.ach-title{font-weight:800;font-size:1.02rem;color:var(--text)}
|
||
.ach-sub{font-size:.85rem;color:var(--muted);margin-top:2px}
|
||
.ach-strip.lit .ach-title{color:#92400e}
|
||
|
||
/* COURSE FINAL */
|
||
.cf-wrap{background:var(--card);border:1.5px solid var(--border);border-radius:18px;overflow:hidden;margin-bottom:28px;box-shadow:var(--sh)}
|
||
.cf-head{padding:18px 22px;background:linear-gradient(135deg,#312e81,#4f46e5 55%,#7c3aed);color:#fff;cursor:pointer;display:flex;align-items:center;gap:14px;user-select:none}
|
||
.cf-head:hover{filter:brightness(1.07)}
|
||
.cf-hi{width:46px;height:46px;border-radius:12px;background:rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;flex-shrink:0}
|
||
.cf-hi svg{width:26px;height:26px;stroke:#fff;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
|
||
.cf-ht{flex:1;min-width:0}
|
||
.cf-tag{display:inline-block;padding:3px 9px;background:rgba(255,255,255,.24);border-radius:99px;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;margin-bottom:4px}
|
||
.cf-title{font-family:'Outfit',sans-serif;font-size:1.18rem;font-weight:800;line-height:1.25}
|
||
.cf-sub{font-size:.84rem;opacity:.9;margin-top:2px}
|
||
.cf-chev{flex-shrink:0;transition:transform .25s}
|
||
.cf-chev svg{width:24px;height:24px;stroke:#fff;fill:none;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
|
||
.cf-wrap.open .cf-chev{transform:rotate(180deg)}
|
||
.cf-body{display:none;padding:22px}
|
||
.cf-wrap.open .cf-body{display:block}
|
||
.cf-hp{height:14px;background:rgba(220,38,38,.12);border-radius:9px;overflow:hidden;border:1px solid #fecaca;margin:6px 0 12px}
|
||
.cf-hp-fill{height:100%;background:linear-gradient(90deg,#dc2626,#f59e0b);border-radius:9px;transition:width .5s}
|
||
.cf-meta{display:flex;gap:16px;font-size:.9rem;color:var(--muted);margin-bottom:10px;font-weight:600}
|
||
.cf-name{font-weight:800;color:#4338ca;text-align:center;margin-bottom:6px}
|
||
.cf-q{font-size:1.05rem;line-height:1.5;padding:12px 14px;background:var(--pri-soft);border-radius:9px;margin-bottom:10px;text-align:center}
|
||
.cf-row{display:flex;gap:10px;justify-content:center;align-items:center;flex-wrap:wrap}
|
||
.cf-inp{padding:9px 12px;border:1.5px solid var(--border);border-radius:8px;background:var(--card);color:var(--text);width:140px;text-align:center;font-family:'Outfit',monospace;font-size:1rem}
|
||
.cf-btn{padding:9px 18px;border-radius:9px;background:linear-gradient(135deg,#4f46e5,#7c3aed);color:#fff;font-weight:700;border:none;cursor:pointer}
|
||
.cf-fb{margin-top:10px;padding:10px 14px;border-radius:9px;font-weight:600;font-size:.9rem;display:none}
|
||
.cf-fb.ok{display:block;background:#d1fae5;color:#065f46}
|
||
.cf-fb.bad{display:block;background:#fee2e2;color:#7f1d1d}
|
||
.foot{text-align:center;padding:24px 16px;color:var(--muted);font-size:.78rem;border-top:1px solid var(--border)}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
|
||
<header class="hdr">
|
||
<div class="hdr-inner">
|
||
<div>
|
||
<a href="/textbooks" class="hdr-back">
|
||
<svg class="ic" viewBox="0 0 24 24"><polyline points="15 18 9 12 15 6"/></svg>
|
||
К каталогу
|
||
</a>
|
||
</div>
|
||
<div>
|
||
<h1>Математика — 6 класс</h1>
|
||
<div class="hdr-sub">Десятичные дроби · проценты · множества · рациональные числа · координаты · геометрия</div>
|
||
</div>
|
||
<div class="hdr-side">
|
||
<button id="theme-btn" class="hdr-btn" title="Сменить тему">
|
||
<svg class="ic" viewBox="0 0 24 24"><path d="M21 12.8A9 9 0 1 1 11.2 3a7 7 0 0 0 9.8 9.8z"/></svg>
|
||
<span id="theme-lab">Тёмная</span>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</header>
|
||
|
||
<main>
|
||
|
||
<section class="prog-overall">
|
||
<div class="po-icon">∑</div>
|
||
<div class="po-text">
|
||
<div class="po-label">Общий прогресс по курсу</div>
|
||
<div id="overall-text" style="font-size:1.05rem;font-weight:700">Загрузка...</div>
|
||
<div class="po-bar"><div id="overall-fill" class="po-fill" style="width:0%"></div></div>
|
||
</div>
|
||
<div id="hero-xp-badge" class="po-xp" style="display:none" data-gamified>0 XP</div>
|
||
</section>
|
||
|
||
<div class="ch-grid">
|
||
|
||
<a href="/textbook/math-6-ch1" class="ch-card k1" id="ch-1">
|
||
<div class="ch-cover cc1"><div class="ch-cover-wm">0,5</div>
|
||
<div class="ch-num">Глава 1</div>
|
||
<div class="ch-title">Десятичные дроби</div>
|
||
<div class="ch-range">§1–§12</div>
|
||
</div>
|
||
<div class="ch-body">
|
||
<div class="ch-desc">Запись и разряды, сравнение и округление, координатный луч, все действия, бесконечные дроби, преобразования выражений.</div>
|
||
<div class="ch-prog"><div class="ch-prog-label"><span>Прогресс</span><span id="prog-1">0%</span></div><div class="ch-prog-bar"><div class="ch-prog-fill" id="fill-1" style="width:0%"></div></div></div>
|
||
<div class="ch-action"><span id="btn-1">Открыть главу</span><svg class="ic" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"/></svg></div>
|
||
</div>
|
||
</a>
|
||
|
||
<a href="/textbook/math-6-ch2" class="ch-card k2" id="ch-2">
|
||
<div class="ch-cover cc2"><div class="ch-cover-wm">%</div>
|
||
<div class="ch-num">Глава 2</div>
|
||
<div class="ch-title">Проценты и пропорции</div>
|
||
<div class="ch-range">§1–§9</div>
|
||
</div>
|
||
<div class="ch-body">
|
||
<div class="ch-desc">Проценты, три основные задачи, пропорция и её свойство, прямая и обратная зависимости, масштаб, круговые диаграммы.</div>
|
||
<div class="ch-prog"><div class="ch-prog-label"><span>Прогресс</span><span id="prog-2">0%</span></div><div class="ch-prog-bar"><div class="ch-prog-fill" id="fill-2" style="width:0%"></div></div></div>
|
||
<div class="ch-action"><span id="btn-2">Открыть главу</span><svg class="ic" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"/></svg></div>
|
||
</div>
|
||
</a>
|
||
|
||
<a href="/textbook/math-6-ch3" class="ch-card k3" id="ch-3">
|
||
<div class="ch-cover cc3"><div class="ch-cover-wm">∪</div>
|
||
<div class="ch-num">Глава 3</div>
|
||
<div class="ch-title">Множество</div>
|
||
<div class="ch-range">§1–§5</div>
|
||
</div>
|
||
<div class="ch-body">
|
||
<div class="ch-desc">Множество и его элементы, пустое множество, способы задания, пересечение и объединение, круги Эйлера.</div>
|
||
<div class="ch-prog"><div class="ch-prog-label"><span>Прогресс</span><span id="prog-3">0%</span></div><div class="ch-prog-bar"><div class="ch-prog-fill" id="fill-3" style="width:0%"></div></div></div>
|
||
<div class="ch-action"><span id="btn-3">Открыть главу</span><svg class="ic" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"/></svg></div>
|
||
</div>
|
||
</a>
|
||
|
||
<a href="/textbook/math-6-ch4" class="ch-card k4" id="ch-4">
|
||
<div class="ch-cover cc4"><div class="ch-cover-wm">−5</div>
|
||
<div class="ch-num">Глава 4</div>
|
||
<div class="ch-title">Рациональные числа</div>
|
||
<div class="ch-range">§1–§11</div>
|
||
</div>
|
||
<div class="ch-body">
|
||
<div class="ch-desc">Отрицательные числа, координатная прямая, модуль, множества Z и Q, сравнение и все действия, законы сложения.</div>
|
||
<div class="ch-prog"><div class="ch-prog-label"><span>Прогресс</span><span id="prog-4">0%</span></div><div class="ch-prog-bar"><div class="ch-prog-fill" id="fill-4" style="width:0%"></div></div></div>
|
||
<div class="ch-action"><span id="btn-4">Открыть главу</span><svg class="ic" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"/></svg></div>
|
||
</div>
|
||
</a>
|
||
|
||
<a href="/textbook/math-6-ch5" class="ch-card k5" id="ch-5">
|
||
<div class="ch-cover cc5"><div class="ch-cover-wm">xy</div>
|
||
<div class="ch-num">Глава 5</div>
|
||
<div class="ch-title">Координатная плоскость</div>
|
||
<div class="ch-range">§1–§5</div>
|
||
</div>
|
||
<div class="ch-body">
|
||
<div class="ch-desc">Декартова система координат, графики реальных процессов, графики прямой и обратной пропорциональности.</div>
|
||
<div class="ch-prog"><div class="ch-prog-label"><span>Прогресс</span><span id="prog-5">0%</span></div><div class="ch-prog-bar"><div class="ch-prog-fill" id="fill-5" style="width:0%"></div></div></div>
|
||
<div class="ch-action"><span id="btn-5">Открыть главу</span><svg class="ic" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"/></svg></div>
|
||
</div>
|
||
</a>
|
||
|
||
<a href="/textbook/math-6-ch6" class="ch-card k6" id="ch-6">
|
||
<div class="ch-cover cc6"><div class="ch-cover-wm">△</div>
|
||
<div class="ch-num">Глава 6</div>
|
||
<div class="ch-title">Наглядная геометрия</div>
|
||
<div class="ch-range">§1–§5</div>
|
||
</div>
|
||
<div class="ch-body">
|
||
<div class="ch-desc">Тела и их развёртки, окружность и круг (длина и площадь), виды треугольников, центральная и осевая симметрия.</div>
|
||
<div class="ch-prog"><div class="ch-prog-label"><span>Прогресс</span><span id="prog-6">0%</span></div><div class="ch-prog-bar"><div class="ch-prog-fill" id="fill-6" style="width:0%"></div></div></div>
|
||
<div class="ch-action"><span id="btn-6">Открыть главу</span><svg class="ic" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"/></svg></div>
|
||
</div>
|
||
</a>
|
||
|
||
</div>
|
||
|
||
<div class="cf-wrap" id="cf-wrap">
|
||
<div class="cf-head" id="cf-head">
|
||
<div class="cf-hi"><svg viewBox="0 0 24 24"><polygon points="12 2 15 9 22 9 17 14 19 22 12 17 5 22 7 14 2 9 9 9"/></svg></div>
|
||
<div class="cf-ht">
|
||
<span class="cf-tag">Курсовой финал</span>
|
||
<div class="cf-title">6 испытаний — по одному из каждой главы</div>
|
||
<div class="cf-sub">Победи 5 из 6 и получи звание «Математик 6 класса» (+150 XP)</div>
|
||
</div>
|
||
<div class="cf-chev"><svg viewBox="0 0 24 24"><polyline points="6 9 12 15 18 9"/></svg></div>
|
||
</div>
|
||
<div class="cf-body">
|
||
<div class="cf-hp"><div class="cf-hp-fill" id="cf-hp" style="width:100%"></div></div>
|
||
<div class="cf-meta"><span>Испытание <b id="cf-i">1</b> / 6</span><span>Пройдено: <b id="cf-s">0</b> / 6</span></div>
|
||
<div class="cf-name" id="cf-name"></div>
|
||
<div class="cf-q" id="cf-q"></div>
|
||
<div class="cf-row"><input type="text" id="cf-a" class="cf-inp" placeholder="ответ"><button class="cf-btn" id="cf-go">Ответить</button></div>
|
||
<div class="cf-fb" id="cf-fb"></div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="ach-strip" id="ach-strip">
|
||
<div class="ach-icon">
|
||
<svg viewBox="0 0 24 24"><path d="M6 9H4l-1-3h18l-1 3h-2M6 9l1 6h10l1-6M6 9h12"/><path d="M9 21h6M12 15v6"/></svg>
|
||
</div>
|
||
<div class="ach-text">
|
||
<div class="ach-title">Математик 6 класса</div>
|
||
<div class="ach-sub" id="ach-sub">Пройдите все 38 параграфов шести глав, чтобы получить достижение</div>
|
||
</div>
|
||
</div>
|
||
|
||
</main>
|
||
|
||
<footer class="foot">Интерактивный учебник «Математика — 6 класс» · LearnSpace</footer>
|
||
|
||
<script>
|
||
'use strict';
|
||
(function(){
|
||
var saved = localStorage.getItem('math6_theme') || localStorage.getItem('theme') || 'light';
|
||
if (saved === 'dark') document.documentElement.classList.add('dark');
|
||
var lab = document.getElementById('theme-lab'); if (lab) lab.textContent = saved === 'dark' ? 'Светлая' : 'Тёмная';
|
||
document.getElementById('theme-btn').addEventListener('click', function(){
|
||
document.documentElement.classList.toggle('dark');
|
||
var dark = document.documentElement.classList.contains('dark');
|
||
localStorage.setItem('math6_theme', dark ? 'dark' : 'light'); localStorage.setItem('theme', dark ? 'dark' : 'light');
|
||
if (lab) lab.textContent = dark ? 'Светлая' : 'Тёмная';
|
||
});
|
||
})();
|
||
|
||
var TOTAL = 48;
|
||
var CH_IDX = { 'math-6-ch1':1,'math-6-ch2':2,'math-6-ch3':3,'math-6-ch4':4,'math-6-ch5':5,'math-6-ch6':6 };
|
||
var CH_PARA = { 'math-6-ch1':12,'math-6-ch2':9,'math-6-ch3':5,'math-6-ch4':11,'math-6-ch5':5,'math-6-ch6':6 };
|
||
|
||
function setChProg(idx, read, total){
|
||
var pct = total ? Math.round(read*100/total) : 0;
|
||
var l=document.getElementById('prog-'+idx),f=document.getElementById('fill-'+idx),b=document.getElementById('btn-'+idx);
|
||
if(l)l.textContent=pct+'%'; if(f)f.style.width=pct+'%';
|
||
if(b){ if(read>0&&read<total)b.textContent='Продолжить'; else if(read>=total)b.textContent='Открыть снова'; else b.textContent='Открыть главу'; }
|
||
}
|
||
function renderProgress(children){
|
||
var totalRead=0;
|
||
for(var i=0;i<children.length;i++){ var ch=children[i],idx=CH_IDX[ch.slug]; if(!idx)continue; var read=ch.progress?ch.progress.read.length:0; var total=ch.para_count||CH_PARA[ch.slug]||1; totalRead+=read; setChProg(idx,read,total); }
|
||
var pct=Math.round(totalRead*100/TOTAL);
|
||
var o=document.getElementById('overall-text'),f=document.getElementById('overall-fill');
|
||
if(o)o.textContent=totalRead+' из '+TOTAL+' параграфов · '+pct+'%'; if(f)f.style.width=pct+'%';
|
||
var xpBadge=document.getElementById('hero-xp-badge'),xp=parseInt(localStorage.getItem('math6_xp')||'0',10)||0;
|
||
if(xpBadge&&xp>0){ xpBadge.style.display=''; xpBadge.textContent=xp+' XP'; }
|
||
if(totalRead>=TOTAL){ var s=document.getElementById('ach-strip'),sub=document.getElementById('ach-sub'); if(s)s.classList.add('lit'); if(sub)sub.textContent='Выполнено! Вы прошли весь курс математики 6 класса.'; }
|
||
}
|
||
function loadProgress(){
|
||
if(typeof window.LS==='undefined'||typeof window.LS.api!=='function'){ renderProgress([]); return; }
|
||
window.LS.api('/api/textbooks/math-6/children').then(function(data){ renderProgress(data&&data.children?data.children:[]); }).catch(function(){ renderProgress([]); });
|
||
}
|
||
if(document.readyState==='loading') document.addEventListener('DOMContentLoaded', loadProgress); else loadProgress();
|
||
window.addEventListener('focus', loadProgress);
|
||
|
||
/* ===================== КУРСОВОЙ ФИНАЛ ===================== */
|
||
(function(){
|
||
function _ri(a,b){ return a + Math.floor(Math.random()*(b-a+1)); }
|
||
function _pick(a){ return a[_ri(0,a.length-1)]; }
|
||
function comma(x){ return String(x).replace('.',','); }
|
||
var head=document.getElementById('cf-head'), wrap=document.getElementById('cf-wrap');
|
||
if(!head) return;
|
||
head.addEventListener('click', function(){ wrap.classList.toggle('open'); });
|
||
|
||
function litAch(text){ var s=document.getElementById('ach-strip'), sub=document.getElementById('ach-sub'); if(s)s.classList.add('lit'); if(sub)sub.textContent=text||'Звание «Математик 6 класса» получено!'; }
|
||
if(localStorage.getItem('math6_course_done')==='1') litAch();
|
||
|
||
var bosses=[
|
||
function(){ var p=_pick([[1.2,0.5,0.6],[2.5,0.4,1],[0.3,6,1.8],[0.2,0.4,0.08],[1.5,0.2,0.3]]); return {name:'Глава 1 · Десятичные дроби', q:'Вычисли '+comma(p[0])+' · '+comma(p[1])+'.', ans:p[2]}; },
|
||
function(){ var n=_pick([40,60,80,200]), m=_pick([10,20,25,5]); return {name:'Глава 2 · Проценты', q:'Найди '+m+'% от '+n+'.', ans:n*m/100}; },
|
||
function(){ var c=_ri(2,6), a=c+_ri(3,8), b=c+_ri(3,8); return {name:'Глава 3 · Множество', q:'|A|='+a+', |B|='+b+', |A∩B|='+c+'. Найди |A∪B|.', ans:a+b-c}; },
|
||
function(){ var a=_pick([-7,-4,-9,8,-12]), b=_pick([12,15,-3,-6,20]); return {name:'Глава 4 · Рациональные числа', q:'Вычисли '+a+' + ('+b+').', ans:a+b}; },
|
||
function(){ var k=_pick([2,3,4,5]), a=_pick([2,3,4]); return {name:'Глава 5 · Координаты', q:'Прямая y=kx проходит через ('+a+'; '+(k*a)+'). Найди k.', ans:k}; },
|
||
function(){ var r=_pick([2,3,4,5]); return {name:'Глава 6 · Геометрия', q:'Площадь круга S=πr² при r='+r+' (π=3,14).', ans:Math.round(3.14*r*r*100)/100}; }
|
||
];
|
||
var i=0, score=0, cur=null, done=false;
|
||
function show(){
|
||
if(i>=6){ done=true;
|
||
document.getElementById('cf-name').textContent='';
|
||
document.getElementById('cf-q').innerHTML=(score>=5?'<b>Победа!</b> Звание «Математик 6 класса» ваше!':'<b>Бой окончен.</b> Пройдено '+score+' / 6. Попробуйте ещё раз!');
|
||
document.getElementById('cf-hp').style.width=(score>=5?0:35)+'%';
|
||
document.querySelector('.cf-row').style.display='none';
|
||
if(score>=5){ if(localStorage.getItem('math6_course_done')!=='1'){ localStorage.setItem('math6_course_done','1'); if(window.LS&&window.LS.xp)window.LS.xp.add(150,'math6-course'); } litAch(); }
|
||
return; }
|
||
cur=bosses[i](); document.getElementById('cf-i').textContent=i+1; document.getElementById('cf-s').textContent=score;
|
||
document.getElementById('cf-name').textContent=cur.name;
|
||
document.getElementById('cf-hp').style.width=(100-i*100/6)+'%';
|
||
document.getElementById('cf-q').textContent=cur.q;
|
||
document.getElementById('cf-a').value=''; document.getElementById('cf-fb').style.display='none';
|
||
}
|
||
function go(){ if(done||i>=6)return; var fb=document.getElementById('cf-fb'), v=parseFloat(document.getElementById('cf-a').value.replace(',','.').trim());
|
||
if(isNaN(v)){ fb.className='cf-fb bad'; fb.textContent='Введите число.'; return; }
|
||
if(Math.abs(v-cur.ans)<0.011){ score++; fb.className='cf-fb ok'; fb.textContent='✓ Верно! Ответ '+comma(cur.ans)+'.'; }
|
||
else { fb.className='cf-fb bad'; fb.textContent='✗ Неверно. Правильно: '+comma(cur.ans)+'.'; }
|
||
document.getElementById('cf-s').textContent=score; i++; setTimeout(show,1300);
|
||
}
|
||
document.getElementById('cf-go').addEventListener('click', go);
|
||
document.getElementById('cf-a').addEventListener('keydown', function(e){ if(e.key==='Enter')go(); });
|
||
show();
|
||
})();
|
||
</script>
|
||
|
||
</body>
|
||
</html>
|