/
Cooolprogrammers
/
web-nodejs-labs
Обзор
Документация
Войти
/
Cooolprogrammers
/
web-nodejs-labs
Код
Запросы
0
Задачи
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
public/lab7/task1/index.html
257 строк
6 KB
darkvoid6@mail.ru
ЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫ
18 дек 2025, 07:59
18 дек 2025, 07:59
f2c4f06
Код
Авторство
О чём код?
<!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <title>Задание 1 — Калькулятор</title> <style> body { margin: 0; min-height: 100vh; display: flex; justify-content: center; align-items: center; background: linear-gradient(135deg, #0a0f0a, #121a12); font-family: 'Roboto Mono', 'Courier New', monospace; } .calculator { background: rgba(15, 25, 15, 0.95); border-radius: 20px; box-shadow: 0 20px 40px rgba(0, 0, 0, 0.4); width: 360px; padding: 25px; display: flex; flex-direction: column; align-items: center; border: 2px solid rgba(0, 204, 102, 0.3); } .display { width: 100%; background: rgba(10, 15, 10, 0.9); color: #7aff7a; font-family: 'Roboto Mono', monospace; font-size: 2.4rem; text-align: right; border-radius: 12px; padding: 20px; margin-bottom: 25px; box-shadow: inset 0 0 15px rgba(0, 0, 0, 0.5); border: 1px solid rgba(42, 74, 42, 0.8); text-shadow: 0 0 10px rgba(122, 255, 122, 0.4); letter-spacing: 2px; min-height: 80px; display: flex; align-items: center; justify-content: flex-end; overflow: hidden; } .buttons { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; width: 100%; } button { font-family: 'Roboto Mono', 'Courier New', monospace; font-size: 1.4rem; border: none; border-radius: 12px; padding: 20px 0; cursor: pointer; transition: all 0.2s ease; color: #0a0f0a; font-weight: 600; letter-spacing: 1px; position: relative; overflow: hidden; box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3); } button::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent); transition: left 0.5s; } button:hover::before { left: 100%; } button:hover { transform: translateY(-3px); box-shadow: 0 8px 25px rgba(0, 0, 0, 0.4); } button:active { transform: translateY(0); } .btn-num { background: linear-gradient(135deg, #2a4a2a, #1e3a1e); color: #d0f0d0; } .btn-num:hover { background: linear-gradient(135deg, #3a5a3a, #2a4a2a); } .btn-op { background: linear-gradient(135deg, #00cc66, #00994d); color: #0a0f0a; } .btn-op:hover { background: linear-gradient(135deg, #00ff73, #00cc66); } .btn-clear { background: linear-gradient(135deg, #ff4d4d, #cc0000); color: #ffd0d0; } .btn-clear:hover { background: linear-gradient(135deg, #ff6666, #ff3333); } .btn-equal { background: linear-gradient(135deg, #7aff7a, #00cc66); color: #0a0f0a; grid-column: span 2; } .btn-equal:hover { background: linear-gradient(135deg, #9aff9a, #00ff73); } h1 { color: #7aff7a; font-size: 1.3rem; margin-bottom: 15px; text-align: center; text-shadow: 0 0 10px rgba(122, 255, 122, 0.3); text-transform: uppercase; letter-spacing: 1.5px; border-bottom: 2px solid rgba(0, 204, 102, 0.5); padding-bottom: 10px; width: 100%; } @media (max-width: 400px) { .calculator { width: 320px; padding: 20px; } .display { font-size: 2rem; padding: 15px; } button { font-size: 1.2rem; padding: 18px 0; } h1 { font-size: 1.1rem; } } </style> </head> <body> <div class="calculator"> <h1>🧮 Лабораторная №7 — Калькулятор</h1> <div id="display" class="display">0</div> <div class="buttons"> <button class="btn-num">7</button> <button class="btn-num">8</button> <button class="btn-num">9</button> <button class="btn-op" data-op="divide">÷</button> <button class="btn-num">4</button> <button class="btn-num">5</button> <button class="btn-num">6</button> <button class="btn-op" data-op="multiply">×</button> <button class="btn-num">1</button> <button class="btn-num">2</button> <button class="btn-num">3</button> <button class="btn-op" data-op="subtract">−</button> <button class="btn-num">0</button> <button class="btn-clear">C</button> <button class="btn-equal">=</button> <button class="btn-op" data-op="add">+</button> </div> </div> <script> const display = document.getElementById('display'); let current = ''; let a = null; let op = null; function updateDisplay(value) { display.textContent = value.toString().substring(0, 14); } document.querySelectorAll('.btn-num').forEach(btn => { btn.addEventListener('click', () => { current += btn.textContent; updateDisplay(current); }); }); document.querySelectorAll('.btn-op').forEach(btn => { btn.addEventListener('click', () => { if (current === '') return; a = current; op = btn.dataset.op; current = ''; updateDisplay(btn.textContent); }); }); document.querySelector('.btn-clear').addEventListener('click', () => { current = ''; a = null; op = null; updateDisplay(0); }); document.querySelector('.btn-equal').addEventListener('click', async () => { if (a === null || current === '' || !op) return; try { const res = await fetch(`/api/lab7/task1/calc?a=${a}&b=${current}&operation=${op}`); const data = await res.json(); if (data.error) { display.style.color = '#ff7a7a'; display.textContent = 'ERR'; setTimeout(() => { display.style.color = '#7aff7a'; updateDisplay(0); }, 1000); } else { current = data.result.toString(); updateDisplay(current); a = null; op = null; } } catch { display.style.color = '#ff7a7a'; display.textContent = 'ERR'; setTimeout(() => { display.style.color = '#7aff7a'; updateDisplay(0); }, 1000); } }); </script> </body> </html>