DeepSeek Программист
U
разработай код калькулятора на php
AI
Вот пример простого, но функционального калькулятора на PHP с обработкой базовых операций:
1. Арифметические операции:
- Сложение (+)
- Вычитание (-)
- Умножение (×)
- Деление (÷)
- Возведение в степень (^)
- Квадратный корень (√)
2. Особенности реализации:
- Валидация входных данных (проверка на числа)
- Защита от деления на ноль
- Обработка ошибок с понятными сообщениями
- Сохранение введенных значений после отправки формы
- Простой, но аккуратный интерфейс с CSS-стилизацией
3. Безопасность:
- Использование
- Фильтрация ввода через
- Проверка метода запроса
4. Удобство использования:
- Адаптивный дизайн
- Подсказки для пользователя
- Сохранение выбранной операции
Калькулятор готов к использованию - просто сохраните код в файл с расширением
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Калькулятор на PHP</title>
<style>
body {
font-family: Arial, sans-serif;
max-width: 400px;
margin: 50px auto;
padding: 20px;
border: 1px solid #ccc;
border-radius: 10px;
}
input, select, button {
width: 100%;
padding: 10px;
margin: 10px 0;
box-sizing: border-box;
}
.result {
background-color: #f5f5f5;
padding: 15px;
border-radius: 5px;
margin-top: 20px;
}
.error {
color: red;
font-weight: bold;
}
</style>
</head>
<body>
<h2>Калькулятор</h2>
<form method="post">
<input type="number" step="any" name="num1" placeholder="Первое число" required
value="<?php echo isset($_POST['num1']) ? htmlspecialchars($_POST['num1']) : '' ?>">
<select name="operation">
<option value="add" <?php echo (isset($_POST['operation']) && $_POST['operation'] == 'add') ? 'selected' : '' ?>>+ Сложение</option>
<option value="subtract" <?php echo (isset($_POST['operation']) && $_POST['operation'] == 'subtract') ? 'selected' : '' ?>>- Вычитание</option>
<option value="multiply" <?php echo (isset($_POST['operation']) && $_POST['operation'] == 'multiply') ? 'selected' : '' ?>>* Умножение</option>
<option value="divide" <?php echo (isset($_POST['operation']) && $_POST['operation'] == 'divide') ? 'selected' : '' ?>>/ Деление</option>
<option value="power" <?php echo (isset($_POST['operation']) && $_POST['operation'] == 'power') ? 'selected' : '' ?>>^ Степень</option>
<option value="sqrt" <?php echo (isset($_POST['operation']) && $_POST['operation'] == 'sqrt') ? 'selected' : '' ?>>√ Квадратный корень</option>
</select>
<input type="number" step="any" name="num2" placeholder="Второе число"
value="<?php echo isset($_POST['num2']) ? htmlspecialchars($_POST['num2']) : '' ?>">
<p><small>Для квадратного корня второе число можно оставить пустым</small></p>
<button type="submit">Вычислить</button>
</form>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$num1 = filter_input(INPUT_POST, 'num1', FILTER_VALIDATE_FLOAT);
$num2 = filter_input(INPUT_POST, 'num2', FILTER_VALIDATE_FLOAT);
$operation = $_POST['operation'] ?? '';
$result = null;
$error = '';
// Валидация ввода
if ($num1 === false) {
$error = "Первое число должно быть числовым значением";
} elseif ($operation != 'sqrt' && $num2 === false && $_POST['num2'] !== '') {
$error = "Второе число должно быть числовым значением";
} else {
// Выполнение операций
switch ($operation) {
case 'add':
$result = $num1 + $num2;
$expression = "$num1 + $num2 = $result";
break;
case 'subtract':
$result = $num1 - $num2;
$expression = "$num1 - $num2 = $result";
break;
case 'multiply':
$result = $num1 * $num2;
$expression = "$num1 × $num2 = $result";
break;
case 'divide':
if ($num2 != 0) {
$result = $num1 / $num2;
$expression = "$num1 ÷ $num2 = $result";
} else {
$error = "Деление на ноль невозможно";
}
break;
case 'power':
$result = pow($num1, $num2);
$expression = "$num1 ^ $num2 = $result";
break;
case 'sqrt':
if ($num1 >= 0) {
$result = sqrt($num1);
$expression = "√$num1 = $result";
} else {
$error = "Невозможно извлечь корень из отрицательного числа";
}
break;
default:
$error = "Неизвестная операция";
break;
}
}
// Вывод результата или ошибки
if ($error) {
echo "<div class='error'>Ошибка: $error</div>";
} elseif ($result !== null) {
echo "<div class='result'><strong>Результат:</strong> $expression</div>";
}
}
?>
</body>
</html>
Основные возможности калькулятора:
1. Арифметические операции:
- Сложение (+)
- Вычитание (-)
- Умножение (×)
- Деление (÷)
- Возведение в степень (^)
- Квадратный корень (√)
2. Особенности реализации:
- Валидация входных данных (проверка на числа)
- Защита от деления на ноль
- Обработка ошибок с понятными сообщениями
- Сохранение введенных значений после отправки формы
- Простой, но аккуратный интерфейс с CSS-стилизацией
3. Безопасность:
- Использование
htmlspecialchars() для экранирования вывода- Фильтрация ввода через
filter_input()- Проверка метода запроса
4. Удобство использования:
- Адаптивный дизайн
- Подсказки для пользователя
- Сохранение выбранной операции
Калькулятор готов к использованию - просто сохраните код в файл с расширением
.php и запустите на веб-сервере с поддержкой PHP.U
разработай дизайн в стиле apple
AI
Вот код калькулятора в стиле Apple (iOS калькулятор):
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Калькулятор Apple</title>
<meta name="viewport" content="width=device-width, initial-scale=1.">
<style>
* {
margin: ;
padding: ;
box-sizing: border-box;
font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'SF Pro Icons', 'Helvetica Neue', Arial, sans-serif;
-webkit-font-smoothing: antialiased;
}
body {
background-color: #000;
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
padding: 20px;
}
.calculator {
width: 100%;
max-width: 400px;
background-color: #000;
border-radius: 40px;
padding: 20px;
box-shadow: 25px 50px rgba(, , , .5);
position: relative;
overflow: hidden;
}
.display {
margin-bottom: 20px;
padding-right: 20px;
min-height: 120px;
display: flex;
flex-direction: column;
justify-content: flex-end;
align-items: flex-end;
overflow: hidden;
}
.previous-operation {
font-size: 28px;
color: rgba(255, 255, 255, .7);
margin-bottom: 10px;
min-height: 32px;
text-align: right;
width: 100%;
word-break: break-all;
}
.current-operation {
font-size: 64px;
color: #fff;
text-align: right;
width: 100%;
word-break: break-all;
font-weight: 300;
}
.buttons {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-gap: 12px;
}
.button {
width: 100%;
aspect-ratio: 1;
border-radius: 50%;
border: none;
font-size: 32px;
font-weight: 400;
cursor: pointer;
display: flex;
justify-content: center;
align-items: center;
transition: all .2s ease;
user-select: none;
}
.button:active {
transform: scale(.95);
opacity: .8;
}
.button-gray {
background-color: #a5a5a5;
color: #000;
}
.button-gray:hover {
background-color: #d9d9d9;
}
.button-dark {
background-color: #333;
color: #fff;
}
.button-dark:hover {
background-color: #737373;
}
.button-orange {
background-color: #f1a33c;
color: #fff;
}
.button-orange:hover {
background-color: #ffb95e;
}
.button-orange.active {
background-color: #fff;
color: #f1a33c;
}
.button-zero {
grid-column: span 2;
aspect-ratio: 2.1;
border-radius: 40px;
justify-content: flex-start;
padding-left: 32px;
}
.operator {
font-size: 36px;
}
@media (max-width: 400px) {
.calculator {
border-radius: 20px;
}
.current-operation {
font-size: 48px;
}
.button {
font-size: 28px;
}
}
.result-message {
color: #f1a33c;
font-size: 18px;
text-align: center;
margin-top: 20px;
min-height: 25px;
padding: 10px;
border-top: 1px solid rgba(255, 255, 255, .1);
}
</style>
</head>
<body>
<div class="calculator">
<form method="post" id="calc-form">
<!-- Скрытые поля для хранения состояния -->
<input type="hidden" name="current_input" value="<?php echo htmlspecialchars($currentInput ?? ''); ?>">
<input type="hidden" name="previous_input" value="<?php echo htmlspecialchars($previousInput ?? ''); ?>">
<input type="hidden" name="operator" value="<?php echo htmlspecialchars($operator ?? ''); ?>">
<input type="hidden" name="result_calculated" value="<?php echo htmlspecialchars($resultCalculated ?? ''); ?>">
<div class="display">
<div class="previous-operation">
<?php
if (!empty($previousInput) && !empty($operator) && empty($resultCalculated)) {
echo htmlspecialchars($previousInput) . ' ' . htmlspecialchars($operator);
}
?>
</div>
<div class="current-operation" id="display">
<?php
if (!empty($resultCalculated)) {
echo htmlspecialchars(number_format($resultCalculated, 10, '.', ''));
} elseif (!empty($currentInput)) {
echo htmlspecialchars($currentInput);
} else {
echo '';
}
?>
</div>
</div>
<div class="buttons">
<!-- Первый ряд -->
<button type="submit" name="action" value="clear" class="button button-gray">
<?php echo (!empty($currentInput) && $currentInput != '') ? 'C' : 'AC'; ?>
</button>
<button type="submit" name="action" value="plusminus" class="button button-gray">±</button>
<button type="submit" name="action" value="percent" class="button button-gray">%</button>
<button type="submit" name="action" value="divide"
class="button button-orange operator <?php echo ($operator == '÷') ? 'active' : ''; ?>">÷</button>
<!-- Второй ряд -->
<button type="submit" name="action" value="7" class="button button-dark">7</button>
<button type="submit" name="action" value="8" class="button button-dark">8</button>
<button type="submit" name="action" value="9" class="button button-dark">9</button>
<button type="submit" name="action" value="multiply"
class="button button-orange operator <?php echo ($operator == '×') ? 'active' : ''; ?>">×</button>
<!-- Третий ряд -->
<button type="submit" name="action" value="4" class="button button-dark">4</button>
<button type="submit" name="action" value="5" class="button button-dark">5</button>
<button type="submit" name="action" value="6" class="button button-dark">6</button>
<button type="submit" name="action" value="subtract"
class="button button-orange operator <?php echo ($operator == '−') ? 'active' : ''; ?>">−</button>
<!-- Четвертый ряд -->
<button type="submit" name="action" value="1" class="button button-dark">1</button>
<button type="submit" name="action" value="2" class="button button-dark">2</button>
<button type="submit" name="action" value="3" class="button button-dark">3</button>
<button type="submit" name="action" value="add"
class="button button-orange operator <?php echo ($operator == '+') ? 'active' : ''; ?>">+</button>
<!-- Пятый ряд -->
<button type="submit" name="action" value="" class="button button-dark button-zero"></button>
<button type="submit" name="action" value="decimal" class="button button-dark">.</button>
<button type="submit" name="action" value="equals" class="button button-orange operator">=</button>
</div>
<div class="result-message">
<?php
if (!empty($error)) {
echo '<span style="color: #ff453a;">' . htmlspecialchars($error) . '</span>';
} elseif (!empty($resultCalculated)) {
echo 'Результат: ' . htmlspecialchars($previousInput ?? '') . ' ' .
htmlspecialchars($operator ?? '') . ' ' .
htmlspecialchars($currentInput ?? '') . ' = ' .
htmlspecialchars($resultCalculated);
}
?>
</div>
</form>
</div>
<?php
session_start();
// Инициализация переменных
$currentInput = $_SESSION['current_input'] ?? '';
$previousInput = $_SESSION['previous_input'] ?? '';
$operator = $_SESSION['operator'] ?? '';
$resultCalculated = $_SESSION['result_calculated'] ?? '';
$error = '';
// Обработка действий
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$action = $_POST['action'] ?? '';
switch ($action) {
case 'clear':
$currentInput = '';
$previousInput = '';
$operator = '';
$resultCalculated = '';
break;
case 'plusminus':
if (!empty($currentInput)) {
if (strpos($currentInput, '-') === ) {
$currentInput = substr($currentInput, 1);
} else {
$currentInput = '-' . $currentInput;
}
}
break;
case 'percent':
if (!empty($currentInput)) {
$currentInput = (float)$currentInput / 100;
}
break;
case 'decimal':
if (empty($currentInput)) {
$currentInput = '.';
} elseif (strpos($currentInput, '.') === false) {
$currentInput .= '.';
}
break;
case 'add':
case 'subtract':
case 'multiply':
case 'divide':
// Устанавливаем оператор с правильными символами
$operatorMap = [
'add' => '+',
'subtract' => '−',
'multiply' => '×',
'divide' => '÷'
];
if (!empty($currentInput)) {
if (!empty($previousInput) && !empty($operator) && empty($resultCalculated)) {
// Вычисляем предыдущую операцию
calculate();
}
$previousInput = $currentInput;
$currentInput = '';
$operator = $operatorMap[$action];
$resultCalculated = '';
}
break;
case 'equals':
if (!empty($previousInput) && !empty($operator) && !empty($currentInput))
`php<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Калькулятор Apple</title>
<meta name="viewport" content="width=device-width, initial-scale=1.">
<style>
* {
margin: ;
padding: ;
box-sizing: border-box;
font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'SF Pro Icons', 'Helvetica Neue', Arial, sans-serif;
-webkit-font-smoothing: antialiased;
}
body {
background-color: #000;
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
padding: 20px;
}
.calculator {
width: 100%;
max-width: 400px;
background-color: #000;
border-radius: 40px;
padding: 20px;
box-shadow: 25px 50px rgba(, , , .5);
position: relative;
overflow: hidden;
}
.display {
margin-bottom: 20px;
padding-right: 20px;
min-height: 120px;
display: flex;
flex-direction: column;
justify-content: flex-end;
align-items: flex-end;
overflow: hidden;
}
.previous-operation {
font-size: 28px;
color: rgba(255, 255, 255, .7);
margin-bottom: 10px;
min-height: 32px;
text-align: right;
width: 100%;
word-break: break-all;
}
.current-operation {
font-size: 64px;
color: #fff;
text-align: right;
width: 100%;
word-break: break-all;
font-weight: 300;
}
.buttons {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-gap: 12px;
}
.button {
width: 100%;
aspect-ratio: 1;
border-radius: 50%;
border: none;
font-size: 32px;
font-weight: 400;
cursor: pointer;
display: flex;
justify-content: center;
align-items: center;
transition: all .2s ease;
user-select: none;
}
.button:active {
transform: scale(.95);
opacity: .8;
}
.button-gray {
background-color: #a5a5a5;
color: #000;
}
.button-gray:hover {
background-color: #d9d9d9;
}
.button-dark {
background-color: #333;
color: #fff;
}
.button-dark:hover {
background-color: #737373;
}
.button-orange {
background-color: #f1a33c;
color: #fff;
}
.button-orange:hover {
background-color: #ffb95e;
}
.button-orange.active {
background-color: #fff;
color: #f1a33c;
}
.button-zero {
grid-column: span 2;
aspect-ratio: 2.1;
border-radius: 40px;
justify-content: flex-start;
padding-left: 32px;
}
.operator {
font-size: 36px;
}
@media (max-width: 400px) {
.calculator {
border-radius: 20px;
}
.current-operation {
font-size: 48px;
}
.button {
font-size: 28px;
}
}
.result-message {
color: #f1a33c;
font-size: 18px;
text-align: center;
margin-top: 20px;
min-height: 25px;
padding: 10px;
border-top: 1px solid rgba(255, 255, 255, .1);
}
</style>
</head>
<body>
<div class="calculator">
<form method="post" id="calc-form">
<!-- Скрытые поля для хранения состояния -->
<input type="hidden" name="current_input" value="<?php echo htmlspecialchars($currentInput ?? ''); ?>">
<input type="hidden" name="previous_input" value="<?php echo htmlspecialchars($previousInput ?? ''); ?>">
<input type="hidden" name="operator" value="<?php echo htmlspecialchars($operator ?? ''); ?>">
<input type="hidden" name="result_calculated" value="<?php echo htmlspecialchars($resultCalculated ?? ''); ?>">
<div class="display">
<div class="previous-operation">
<?php
if (!empty($previousInput) && !empty($operator) && empty($resultCalculated)) {
echo htmlspecialchars($previousInput) . ' ' . htmlspecialchars($operator);
}
?>
</div>
<div class="current-operation" id="display">
<?php
if (!empty($resultCalculated)) {
echo htmlspecialchars(number_format($resultCalculated, 10, '.', ''));
} elseif (!empty($currentInput)) {
echo htmlspecialchars($currentInput);
} else {
echo '';
}
?>
</div>
</div>
<div class="buttons">
<!-- Первый ряд -->
<button type="submit" name="action" value="clear" class="button button-gray">
<?php echo (!empty($currentInput) && $currentInput != '') ? 'C' : 'AC'; ?>
</button>
<button type="submit" name="action" value="plusminus" class="button button-gray">±</button>
<button type="submit" name="action" value="percent" class="button button-gray">%</button>
<button type="submit" name="action" value="divide"
class="button button-orange operator <?php echo ($operator == '÷') ? 'active' : ''; ?>">÷</button>
<!-- Второй ряд -->
<button type="submit" name="action" value="7" class="button button-dark">7</button>
<button type="submit" name="action" value="8" class="button button-dark">8</button>
<button type="submit" name="action" value="9" class="button button-dark">9</button>
<button type="submit" name="action" value="multiply"
class="button button-orange operator <?php echo ($operator == '×') ? 'active' : ''; ?>">×</button>
<!-- Третий ряд -->
<button type="submit" name="action" value="4" class="button button-dark">4</button>
<button type="submit" name="action" value="5" class="button button-dark">5</button>
<button type="submit" name="action" value="6" class="button button-dark">6</button>
<button type="submit" name="action" value="subtract"
class="button button-orange operator <?php echo ($operator == '−') ? 'active' : ''; ?>">−</button>
<!-- Четвертый ряд -->
<button type="submit" name="action" value="1" class="button button-dark">1</button>
<button type="submit" name="action" value="2" class="button button-dark">2</button>
<button type="submit" name="action" value="3" class="button button-dark">3</button>
<button type="submit" name="action" value="add"
class="button button-orange operator <?php echo ($operator == '+') ? 'active' : ''; ?>">+</button>
<!-- Пятый ряд -->
<button type="submit" name="action" value="" class="button button-dark button-zero"></button>
<button type="submit" name="action" value="decimal" class="button button-dark">.</button>
<button type="submit" name="action" value="equals" class="button button-orange operator">=</button>
</div>
<div class="result-message">
<?php
if (!empty($error)) {
echo '<span style="color: #ff453a;">' . htmlspecialchars($error) . '</span>';
} elseif (!empty($resultCalculated)) {
echo 'Результат: ' . htmlspecialchars($previousInput ?? '') . ' ' .
htmlspecialchars($operator ?? '') . ' ' .
htmlspecialchars($currentInput ?? '') . ' = ' .
htmlspecialchars($resultCalculated);
}
?>
</div>
</form>
</div>
<?php
session_start();
// Инициализация переменных
$currentInput = $_SESSION['current_input'] ?? '';
$previousInput = $_SESSION['previous_input'] ?? '';
$operator = $_SESSION['operator'] ?? '';
$resultCalculated = $_SESSION['result_calculated'] ?? '';
$error = '';
// Обработка действий
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$action = $_POST['action'] ?? '';
switch ($action) {
case 'clear':
$currentInput = '';
$previousInput = '';
$operator = '';
$resultCalculated = '';
break;
case 'plusminus':
if (!empty($currentInput)) {
if (strpos($currentInput, '-') === ) {
$currentInput = substr($currentInput, 1);
} else {
$currentInput = '-' . $currentInput;
}
}
break;
case 'percent':
if (!empty($currentInput)) {
$currentInput = (float)$currentInput / 100;
}
break;
case 'decimal':
if (empty($currentInput)) {
$currentInput = '.';
} elseif (strpos($currentInput, '.') === false) {
$currentInput .= '.';
}
break;
case 'add':
case 'subtract':
case 'multiply':
case 'divide':
// Устанавливаем оператор с правильными символами
$operatorMap = [
'add' => '+',
'subtract' => '−',
'multiply' => '×',
'divide' => '÷'
];
if (!empty($currentInput)) {
if (!empty($previousInput) && !empty($operator) && empty($resultCalculated)) {
// Вычисляем предыдущую операцию
calculate();
}
$previousInput = $currentInput;
$currentInput = '';
$operator = $operatorMap[$action];
$resultCalculated = '';
}
break;
case 'equals':
if (!empty($previousInput) && !empty($operator) && !empty($currentInput))
U
лучше сделай в стиле яндекса с жёлтым
AI
Вот калькулятор в стиле Яндекса с жёлтым акцентом:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Яндекс Калькулятор</title>
<meta name="viewport" content="width=device-width, initial-scale=1.">
<style>
:root {
--yandex-yellow: #ffdb4d;
--yandex-yellow-hover: #ffd633;
--yandex-yellow-active: #ffcc00;
--yandex-dark: #1a1a1a;
--yandex-gray: #f2f2f2;
--yandex-gray-dark: #e6e6e6;
--yandex-text: #000;
--yandex-text-light: #666;
}
* {
margin: ;
padding: ;
box-sizing: border-box;
font-family: 'YS Text', 'Helvetica Neue', Arial, sans-serif;
}
body {
background: linear-gradient(135deg, #fff %, #f9f9f9 100%);
min-height: 100vh;
display: flex;
justify-content: center;
align-items: center;
padding: 20px;
}
.yandex-container {
width: 100%;
max-width: 420px;
}
.yandex-header {
display: flex;
align-items: center;
margin-bottom: 30px;
padding: 10px;
}
.yandex-logo {
font-size: 32px;
font-weight: 700;
color: var(--yandex-text);
margin-right: 15px;
}
.yandex-logo span {
color: var(--yandex-yellow);
}
.yandex-title {
font-size: 24px;
font-weight: 500;
color: var(--yandex-text);
}
.calculator-yandex {
background: white;
border-radius: 20px;
padding: 30px;
box-shadow: 10px 40px rgba(, , , .1);
border: 1px solid #eaeaea;
}
.display-yandex {
background: var(--yandex-gray);
border-radius: 12px;
padding: 25px;
margin-bottom: 30px;
border: 2px solid transparent;
transition: border-color .3s ease;
}
.display-yandex:focus-within {
border-color: var(--yandex-yellow);
}
.expression {
font-size: 20px;
color: var(--yandex-text-light);
min-height: 28px;
margin-bottom: 10px;
text-align: right;
word-break: break-all;
}
.input-field {
width: 100%;
border: none;
background: transparent;
font-size: 48px;
color: var(--yandex-text);
text-align: right;
outline: none;
font-weight: 400;
font-family: 'YS Display', 'Helvetica Neue', Arial, sans-serif;
}
.input-field::placeholder {
color: var(--yandex-text-light);
opacity: .5;
}
.buttons-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 15px;
}
.calc-btn {
height: 70px;
border: none;
border-radius: 12px;
font-size: 24px;
font-weight: 500;
cursor: pointer;
transition: all .2s ease;
display: flex;
align-items: center;
justify-content: center;
user-select: none;
}
.calc-btn:hover {
transform: translateY(-2px);
box-shadow: 4px 12px rgba(, , , .1);
}
.calc-btn:active {
transform: translateY();
}
.btn-number {
background: var(--yandex-gray);
color: var(--yandex-text);
}
.btn-number:hover {
background: var(--yandex-gray-dark);
}
.btn-operator {
background: var(--yandex-yellow);
color: var(--yandex-text);
font-weight: 600;
}
.btn-operator:hover {
background: var(--yandex-yellow-hover);
}
.btn-operator.active {
background: var(--yandex-yellow-active);
box-shadow: inset 2px 4px rgba(, , , .1);
}
.btn-equals {
background: var(--yandex-yellow);
color: var(--yandex-text);
font-weight: 600;
grid-column: span 2;
}
.btn-equals:hover {
background: var(--yandex-yellow-hover);
}
.btn-clear {
background: #ff6666;
color: white;
font-weight: 600;
}
.btn-clear:hover {
background: #ff4d4d;
}
.btn-extra {
background: #e6e6e6;
color: var(--yandex-text);
font-size: 20px;
}
.btn-extra:hover {
background: #d9d9d9;
}
.btn-zero {
grid-column: span 2;
}
.memory-indicator {
display: flex;
justify-content: center;
gap: 10px;
margin-top: 20px;
padding: 15px;
background: var(--yandex-gray);
border-radius: 12px;
font-size: 14px;
color: var(--yandex-text-light);
}
.memory-item {
padding: 5px 12px;
background: white;
border-radius: 6px;
border: 1px solid #eaeaea;
cursor: pointer;
transition: all .2s ease;
}
.memory-item:hover {
border-color: var(--yandex-yellow);
color: var(--yandex-text);
}
.yandex-footer {
margin-top: 30px;
text-align: center;
color: var(--yandex-text-light);
font-size: 14px;
padding: 10px;
}
.history-panel {
background: white;
border-radius: 12px;
padding: 20px;
margin-top: 20px;
max-height: 200px;
overflow-y: auto;
border: 1px solid #eaeaea;
display: none;
}
.history-panel.active {
display: block;
}
.history-item {
padding: 10px ;
border-bottom: 1px solid #fff;
color: var(--yandex-text);
font-size: 16px;
}
.history-item:last-child {
border-bottom: none;
}
.history-toggle {
background: none;
border: none;
color: var(--yandex-yellow);
font-weight: 500;
cursor: pointer;
margin-top: 15px;
font-size: 16px;
display: flex;
align-items: center;
gap: 8px;
}
@media (max-width: 480px) {
.calculator-yandex {
`php<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Яндекс Калькулятор</title>
<meta name="viewport" content="width=device-width, initial-scale=1.">
<style>
:root {
--yandex-yellow: #ffdb4d;
--yandex-yellow-hover: #ffd633;
--yandex-yellow-active: #ffcc00;
--yandex-dark: #1a1a1a;
--yandex-gray: #f2f2f2;
--yandex-gray-dark: #e6e6e6;
--yandex-text: #000;
--yandex-text-light: #666;
}
* {
margin: ;
padding: ;
box-sizing: border-box;
font-family: 'YS Text', 'Helvetica Neue', Arial, sans-serif;
}
body {
background: linear-gradient(135deg, #fff %, #f9f9f9 100%);
min-height: 100vh;
display: flex;
justify-content: center;
align-items: center;
padding: 20px;
}
.yandex-container {
width: 100%;
max-width: 420px;
}
.yandex-header {
display: flex;
align-items: center;
margin-bottom: 30px;
padding: 10px;
}
.yandex-logo {
font-size: 32px;
font-weight: 700;
color: var(--yandex-text);
margin-right: 15px;
}
.yandex-logo span {
color: var(--yandex-yellow);
}
.yandex-title {
font-size: 24px;
font-weight: 500;
color: var(--yandex-text);
}
.calculator-yandex {
background: white;
border-radius: 20px;
padding: 30px;
box-shadow: 10px 40px rgba(, , , .1);
border: 1px solid #eaeaea;
}
.display-yandex {
background: var(--yandex-gray);
border-radius: 12px;
padding: 25px;
margin-bottom: 30px;
border: 2px solid transparent;
transition: border-color .3s ease;
}
.display-yandex:focus-within {
border-color: var(--yandex-yellow);
}
.expression {
font-size: 20px;
color: var(--yandex-text-light);
min-height: 28px;
margin-bottom: 10px;
text-align: right;
word-break: break-all;
}
.input-field {
width: 100%;
border: none;
background: transparent;
font-size: 48px;
color: var(--yandex-text);
text-align: right;
outline: none;
font-weight: 400;
font-family: 'YS Display', 'Helvetica Neue', Arial, sans-serif;
}
.input-field::placeholder {
color: var(--yandex-text-light);
opacity: .5;
}
.buttons-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 15px;
}
.calc-btn {
height: 70px;
border: none;
border-radius: 12px;
font-size: 24px;
font-weight: 500;
cursor: pointer;
transition: all .2s ease;
display: flex;
align-items: center;
justify-content: center;
user-select: none;
}
.calc-btn:hover {
transform: translateY(-2px);
box-shadow: 4px 12px rgba(, , , .1);
}
.calc-btn:active {
transform: translateY();
}
.btn-number {
background: var(--yandex-gray);
color: var(--yandex-text);
}
.btn-number:hover {
background: var(--yandex-gray-dark);
}
.btn-operator {
background: var(--yandex-yellow);
color: var(--yandex-text);
font-weight: 600;
}
.btn-operator:hover {
background: var(--yandex-yellow-hover);
}
.btn-operator.active {
background: var(--yandex-yellow-active);
box-shadow: inset 2px 4px rgba(, , , .1);
}
.btn-equals {
background: var(--yandex-yellow);
color: var(--yandex-text);
font-weight: 600;
grid-column: span 2;
}
.btn-equals:hover {
background: var(--yandex-yellow-hover);
}
.btn-clear {
background: #ff6666;
color: white;
font-weight: 600;
}
.btn-clear:hover {
background: #ff4d4d;
}
.btn-extra {
background: #e6e6e6;
color: var(--yandex-text);
font-size: 20px;
}
.btn-extra:hover {
background: #d9d9d9;
}
.btn-zero {
grid-column: span 2;
}
.memory-indicator {
display: flex;
justify-content: center;
gap: 10px;
margin-top: 20px;
padding: 15px;
background: var(--yandex-gray);
border-radius: 12px;
font-size: 14px;
color: var(--yandex-text-light);
}
.memory-item {
padding: 5px 12px;
background: white;
border-radius: 6px;
border: 1px solid #eaeaea;
cursor: pointer;
transition: all .2s ease;
}
.memory-item:hover {
border-color: var(--yandex-yellow);
color: var(--yandex-text);
}
.yandex-footer {
margin-top: 30px;
text-align: center;
color: var(--yandex-text-light);
font-size: 14px;
padding: 10px;
}
.history-panel {
background: white;
border-radius: 12px;
padding: 20px;
margin-top: 20px;
max-height: 200px;
overflow-y: auto;
border: 1px solid #eaeaea;
display: none;
}
.history-panel.active {
display: block;
}
.history-item {
padding: 10px ;
border-bottom: 1px solid #fff;
color: var(--yandex-text);
font-size: 16px;
}
.history-item:last-child {
border-bottom: none;
}
.history-toggle {
background: none;
border: none;
color: var(--yandex-yellow);
font-weight: 500;
cursor: pointer;
margin-top: 15px;
font-size: 16px;
display: flex;
align-items: center;
gap: 8px;
}
@media (max-width: 480px) {
.calculator-yandex {
U
лучше сделай в стиле яндекса с жёлтым и красным
AI
Вот калькулятор в стиле Яндекса с жёлтым и красным акцентами:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Яндекс Калькулятор</title>
<meta name="viewport" content="width=device-width, initial-scale=1.">
<style>
:root {
--yandex-yellow: #ffdb4d;
--yandex-yellow-hover: #ffd633;
--yandex-yellow-active: #ffcc00;
--yandex-red: #ff3333;
--yandex-red-hover: #ff1a1a;
--yandex-red-active: #e60000;
--yandex-dark: #1a1a1a;
--yandex-gray: #f2f2f2;
--yandex-gray-dark: #e6e6e6;
--yandex-gray-light: #fafafa;
--yandex-text: #000;
--yandex-text-light: #666;
--yandex-border: #eee;
}
* {
margin: ;
padding: ;
box-sizing: border-box;
font-family: 'YS Text', 'Helvetica Neue', Arial, sans-serif;
}
body {
background: linear-gradient(135deg, #f8f8f8 %, #ffffff 100%);
min-height: 100vh;
display: flex;
justify-content: center;
align-items: center;
padding: 20px;
}
.yandex-container {
width: 100%;
max-width: 450px;
background: white;
border-radius: 24px;
box-shadow: 10px 40px rgba(, , , .1);
overflow: hidden;
border: 1px solid var(--yandex-border);
}
.yandex-header {
background: linear-gradient(90deg, var(--yandex-red) %, var(--yandex-yellow) 100%);
padding: 25px 30px;
display: flex;
align-items: center;
justify-content: space-between;
}
.yandex-logo {
display: flex;
align-items: center;
gap: 15px;
}
.yandex-logo-circle {
width: 40px;
height: 40px;
background: white;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-weight: 700;
font-size: 20px;
color: var(--yandex-red);
box-shadow: 2px 8px rgba(, , , .1);
}
.yandex-title {
font-size: 28px;
font-weight: 700;
color: white;
text-shadow: 2px 4px rgba(, , , .1);
}
.calculator-body {
padding: 30px;
}
.display-container {
background: var(--yandex-gray-light);
border-radius: 16px;
padding: 25px;
margin-bottom: 30px;
border: 2px solid var(--yandex-border);
position: relative;
overflow: hidden;
}
.display-container::before {
content: '';
position: absolute;
top: ;
left: ;
right: ;
height: 4px;
background: linear-gradient(90deg, var(--yandex-red), var(--yandex-yellow));
}
.expression-display {
font-size: 22px;
color: var(--yandex-text-light);
min-height: 30px;
margin-bottom: 15px;
text-align: right;
word-break: break-all;
font-weight: 400;
}
.result-display {
width: 100%;
border: none;
background: transparent;
font-size: 56px;
color: var(--yandex-text);
text-align: right;
outline: none;
font-weight: 500;
font-family: 'YS Display', 'Helvetica Neue', Arial, sans-serif;
direction: ltr;
}
.result-display::placeholder {
color: var(--yandex-text-light);
opacity: .4;
}
.buttons-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 15px;
margin-bottom: 25px;
}
.calc-btn {
height: 75px;
border: none;
border-radius: 16px;
font-size: 26px;
font-weight: 500;
cursor: pointer;
transition: all .2s cubic-bezier(.4, , .2, 1);
display: flex;
align-items: center;
justify-content: center;
user-select: none;
position: relative;
overflow: hidden;
}
.calc-btn::after {
content: '';
position: absolute;
top: 50%;
left: 50%;
width: ;
height: ;
border-radius: 50%;
background: rgba(255, 255, 255, .3);
transform: translate(-50%, -50%);
transition: width .3s, height .3s;
}
.calc-btn:active::after {
width: 200px;
height: 200px;
}
.calc-btn:hover {
transform: translateY(-3px);
box-shadow: 6px 20px rgba(, , , .15);
}
.calc-btn:active {
transform: translateY(-1px);
}
.btn-number {
background: white;
color: var(--yandex-text);
border: 2px solid var(--yandex-border);
}
.btn-number:hover {
background: var(--yandex-gray);
border-color: var(--yandex-yellow);
}
.btn-operator {
background: var(--yandex-yellow);
color: var(--yandex-text);
font-weight: 600;
border: 2px solid transparent;
}
.btn-operator:hover {
background: var(--yandex-yellow-hover);
border-color: var(--yandex-yellow-active);
}
.btn-operator.active {
background: var(--yandex-yellow-active);
box-shadow: inset 2px 8px rgba(, , , .1);
}
.btn-equals {
background: var(--yandex-red);
color: white;
font-weight: 600;
grid-column: span 2;
border: 2px solid transparent;
}
.btn-equals:hover {
background: var(--yandex-red-hover);
border-color: var(--yandex-red-active);
}
.btn-clear {
background: var(--yandex-red);
color: white;
font-weight: 600;
border: 2px solid transparent;
}
.btn-clear:hover {
background: var(--yandex-red-hover);
border-color: var(--yandex-red-active);
}
.btn-extra {
background: var(--yandex-gray);
color: var(--yandex-text);
font-size: 22px;
border: 2px solid transparent;
}
.btn-extra:hover {
background: var(--yandex-gray-dark);
border-color: var(--yandex-border);
}
.btn-zero {
grid-column: span 2;
}
.memory-section {
background: var(--yandex-gray-light);
border-radius: 16px;
padding: 20px;
border: 2px solid var(--yandex-border);
}
.memory-title {
font-size: 18px;
font-weight: 600;
color: var(--yandex-text);
margin-bottom: 15px;
display: flex;
align-items: center;
gap: 10px;
}
.memory-title::before {
content: '💾';
font-size: 20px;
}
.memory-buttons {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 10px;
}
.memory-btn {
padding: 12px;
background: white;
border: 2px solid var(--yandex-border);
border-radius: 12px;
font-size: 16px;
font-weight: 500;
cursor: pointer;
transition: all .2s ease;
text-align: center;
}
.memory-btn:hover {
background: var(--yandex-gray);
border-color: var(--yandex-yellow);
}
.memory-btn.red {
background: var(--yandex-red);
color: white;
border-color: transparent;
}
.memory-btn.red:hover {
background: var(--yandex-red-hover);
}
.yandex-footer {
padding: 20px 30px;
background: var(--yandex-gray-light);
border-top: 1px solid var(--yandex-border);
text-align: center;
color: var(--yandex-text-light);
font-size: 14px;
}
.error-message {
background: linear-gradient(90deg, #fff5f5, #ffe6e6);
border-left: 4px solid var(--yandex-red);
padding: 15px;
border-radius: 8px;
margin-bottom: 20px;
color: var(--yandex-red);
font-weight: 500;
display: none;
}
.error-message.show {
display: block;
animation: slideIn .3s ease;
}
@keyframes slideIn {
from {
opacity: ;
transform: translateY(-10px);
}
to {
opacity: 1;
transform: translateY();
}
}
@media (max-width: 480px) {
.yandex-container {
border-radius: 16px;
}
.calculator-body {
padding: 20px;
}
.result-display {
font-size: 48px;
}
.calc-btn {
height: 65px;
font-size: 22px;
}
.buttons-grid {
gap: 12px;
}
}
</style>
</head>
<body>
<div class="yandex-container">
<div class="yandex-header">
<div class="yandex-logo">
<div class="yandex-logo-circle">Я</div>
<div class="yandex-title">Калькулятор</div>
</div>
</div>
<div class="calculator-body">
<div class="error-message" id="errorMessage"></div>
<div class="display-container">
<div class="expression-display" id="expressionDisplay">
<?php
if (!empty($expression)) {
echo htmlspecialchars($expression);
}
?>
</div>
<input type="text"
class="result-display"
id="resultDisplay"
value="<?php echo htmlspecialchars($currentDisplay ?? ''); ?>"
readonly
placeholder="">
</div>
<form method="post" id="calcForm">
<input type="hidden" name="current_value" id="currentValue"
value="<?php echo htmlspecialchars($currentValue ?? ''); ?>">
<input type="hidden" name="previous_value" id="previousValue"
value="<?php echo htmlspecialchars($previousValue ?? ''); ?>">
<input type="hidden" name="current_operator" id="currentOperator"
value="<?php echo htmlspecialchars($currentOperator ?? ''); ?>">
<input type="hidden" name="memory_value" id="memoryValue"
value="<?php echo htmlspecialchars($memoryValue ?? ''); ?>">
<div class="buttons-grid">
<!-- Первый ряд -->
<button type="submit" name="action" value="clear" class="calc-btn btn-clear">
<?php echo (isset($currentValue) && $currentValue != '') ? 'C' : 'AC'; ?>
</button>
<button type="submit" name="action" value="plusminus" class="calc-btn btn-extra">±</button>
<button type="submit" name="action" value="percent" class="calc-btn btn-extra">%</button>
<button type="submit" name="action" value="divide"
class="calc-btn btn-operator <?php echo ($currentOperator == '/') ? 'active' : ''; ?>">÷</button>
<!-- Второй ряд -->
<button type="button" onclick="addNumber('7')" class="calc-btn btn-number">7</button>
<button type="button" onclick="addNumber('8')" class="calc-btn btn-number">8</button>
<button type="button" onclick="addNumber('9')" class="calc-btn btn-number">9</button>
<button type="submit" name="action" value="multiply"
class="calc-btn btn-operator <?php echo ($currentOperator == '*') ? 'active' : ''; ?>">×</button>
<!-- Третий ряд -->
<button type="button" onclick="addNumber('4')" class="calc-btn btn-number">4</button>
<button type="button" onclick="addNumber('5')" class="calc-btn btn-number">5</button>
<button type="button" onclick="addNumber('6')" class="calc-btn btn-number">6</button>
<button type="submit" name="action" value="subtract"
class="calc-btn btn-operator <?php echo ($currentOperator == '-') ? 'active' : ''; ?>">−</button>
<!-- Четвертый ряд -->
<button type="button" onclick="addNumber('1')" class="calc-btn btn-number">1</button>
<button type="button" onclick="addNumber('2')" class="calc-btn btn-number">2</button>
<button type="button" onclick="addNumber('3')" class="calc-btn btn-number">3</button>
<button type="submit" name="action" value="add"
class="calc-btn btn-operator <?php echo ($currentOperator == '+') ? 'active' : ''; ?>">+</button>
<!-- Пятый ряд -->
<button type="button" onclick="addNumber('')" class="calc-btn btn-number btn-zero"></button>
<button type="button" onclick="addDecimal()" class="calc-btn btn-extra">.</button>
<button type="submit" name="action" value="equals" class="calc-btn btn-equals">=</button>
</div>
</form>
<div class="memory-section">
<div class="memory-title">Память</div>
<div class="memory-buttons">
<button type="submit" name="action" value="memory_clear" class="memory-btn red">MC</button>
<button type="submit" name="action" value="memory_recall" class="memory-btn">MR</button>
<button type="submit" name="action" value="memory_add" class="memory-btn">M+</button>
<button type="submit" name="action" value="memory_subtract" class="memory-btn">M-</button>
</div>
</div>
</div>
<div class="yandex-footer">
Яндекс Калькулятор © 2024
</div>
</div>
<?php
session_start();
// Инициализация переменных
$currentValue = $_SESSION['current_value'] ?? '';
$previousValue = $_SESSION['previous_value'] ?? '';
$currentOperator = $_SESSION['current_operator'] ?? '';
$memoryValue = $_SESSION['memory_value'] ?? '';
$currentDisplay = $currentValue;
$expression = '';
// Обработка действий
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$action = $_POST['action'] ?? '';
switch ($action) {
case 'clear':
$currentValue = '';
$previousValue = '';
$currentOperator = '';
break;
case 'plusminus':
if ($currentValue != '') {
if (strpos($currentValue, '-') === ) {
$currentValue = substr($currentValue, 1);
} else {
$currentValue = '-' . $currentValue;
}
}
break;
case 'percent':
if ($currentValue != '') {
$currentValue = (float)$currentValue / 100;
}
break;
// Операторы
case 'add':
case 'subtract':
case 'multiply':
case 'divide':
if (!empty($previousValue) && !empty($currentOperator) && $currentValue != '') {
// Вычисляем предыдущую операцию
calculate();
`php<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Яндекс Калькулятор</title>
<meta name="viewport" content="width=device-width, initial-scale=1.">
<style>
:root {
--yandex-yellow: #ffdb4d;
--yandex-yellow-hover: #ffd633;
--yandex-yellow-active: #ffcc00;
--yandex-red: #ff3333;
--yandex-red-hover: #ff1a1a;
--yandex-red-active: #e60000;
--yandex-dark: #1a1a1a;
--yandex-gray: #f2f2f2;
--yandex-gray-dark: #e6e6e6;
--yandex-gray-light: #fafafa;
--yandex-text: #000;
--yandex-text-light: #666;
--yandex-border: #eee;
}
* {
margin: ;
padding: ;
box-sizing: border-box;
font-family: 'YS Text', 'Helvetica Neue', Arial, sans-serif;
}
body {
background: linear-gradient(135deg, #f8f8f8 %, #ffffff 100%);
min-height: 100vh;
display: flex;
justify-content: center;
align-items: center;
padding: 20px;
}
.yandex-container {
width: 100%;
max-width: 450px;
background: white;
border-radius: 24px;
box-shadow: 10px 40px rgba(, , , .1);
overflow: hidden;
border: 1px solid var(--yandex-border);
}
.yandex-header {
background: linear-gradient(90deg, var(--yandex-red) %, var(--yandex-yellow) 100%);
padding: 25px 30px;
display: flex;
align-items: center;
justify-content: space-between;
}
.yandex-logo {
display: flex;
align-items: center;
gap: 15px;
}
.yandex-logo-circle {
width: 40px;
height: 40px;
background: white;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-weight: 700;
font-size: 20px;
color: var(--yandex-red);
box-shadow: 2px 8px rgba(, , , .1);
}
.yandex-title {
font-size: 28px;
font-weight: 700;
color: white;
text-shadow: 2px 4px rgba(, , , .1);
}
.calculator-body {
padding: 30px;
}
.display-container {
background: var(--yandex-gray-light);
border-radius: 16px;
padding: 25px;
margin-bottom: 30px;
border: 2px solid var(--yandex-border);
position: relative;
overflow: hidden;
}
.display-container::before {
content: '';
position: absolute;
top: ;
left: ;
right: ;
height: 4px;
background: linear-gradient(90deg, var(--yandex-red), var(--yandex-yellow));
}
.expression-display {
font-size: 22px;
color: var(--yandex-text-light);
min-height: 30px;
margin-bottom: 15px;
text-align: right;
word-break: break-all;
font-weight: 400;
}
.result-display {
width: 100%;
border: none;
background: transparent;
font-size: 56px;
color: var(--yandex-text);
text-align: right;
outline: none;
font-weight: 500;
font-family: 'YS Display', 'Helvetica Neue', Arial, sans-serif;
direction: ltr;
}
.result-display::placeholder {
color: var(--yandex-text-light);
opacity: .4;
}
.buttons-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 15px;
margin-bottom: 25px;
}
.calc-btn {
height: 75px;
border: none;
border-radius: 16px;
font-size: 26px;
font-weight: 500;
cursor: pointer;
transition: all .2s cubic-bezier(.4, , .2, 1);
display: flex;
align-items: center;
justify-content: center;
user-select: none;
position: relative;
overflow: hidden;
}
.calc-btn::after {
content: '';
position: absolute;
top: 50%;
left: 50%;
width: ;
height: ;
border-radius: 50%;
background: rgba(255, 255, 255, .3);
transform: translate(-50%, -50%);
transition: width .3s, height .3s;
}
.calc-btn:active::after {
width: 200px;
height: 200px;
}
.calc-btn:hover {
transform: translateY(-3px);
box-shadow: 6px 20px rgba(, , , .15);
}
.calc-btn:active {
transform: translateY(-1px);
}
.btn-number {
background: white;
color: var(--yandex-text);
border: 2px solid var(--yandex-border);
}
.btn-number:hover {
background: var(--yandex-gray);
border-color: var(--yandex-yellow);
}
.btn-operator {
background: var(--yandex-yellow);
color: var(--yandex-text);
font-weight: 600;
border: 2px solid transparent;
}
.btn-operator:hover {
background: var(--yandex-yellow-hover);
border-color: var(--yandex-yellow-active);
}
.btn-operator.active {
background: var(--yandex-yellow-active);
box-shadow: inset 2px 8px rgba(, , , .1);
}
.btn-equals {
background: var(--yandex-red);
color: white;
font-weight: 600;
grid-column: span 2;
border: 2px solid transparent;
}
.btn-equals:hover {
background: var(--yandex-red-hover);
border-color: var(--yandex-red-active);
}
.btn-clear {
background: var(--yandex-red);
color: white;
font-weight: 600;
border: 2px solid transparent;
}
.btn-clear:hover {
background: var(--yandex-red-hover);
border-color: var(--yandex-red-active);
}
.btn-extra {
background: var(--yandex-gray);
color: var(--yandex-text);
font-size: 22px;
border: 2px solid transparent;
}
.btn-extra:hover {
background: var(--yandex-gray-dark);
border-color: var(--yandex-border);
}
.btn-zero {
grid-column: span 2;
}
.memory-section {
background: var(--yandex-gray-light);
border-radius: 16px;
padding: 20px;
border: 2px solid var(--yandex-border);
}
.memory-title {
font-size: 18px;
font-weight: 600;
color: var(--yandex-text);
margin-bottom: 15px;
display: flex;
align-items: center;
gap: 10px;
}
.memory-title::before {
content: '💾';
font-size: 20px;
}
.memory-buttons {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 10px;
}
.memory-btn {
padding: 12px;
background: white;
border: 2px solid var(--yandex-border);
border-radius: 12px;
font-size: 16px;
font-weight: 500;
cursor: pointer;
transition: all .2s ease;
text-align: center;
}
.memory-btn:hover {
background: var(--yandex-gray);
border-color: var(--yandex-yellow);
}
.memory-btn.red {
background: var(--yandex-red);
color: white;
border-color: transparent;
}
.memory-btn.red:hover {
background: var(--yandex-red-hover);
}
.yandex-footer {
padding: 20px 30px;
background: var(--yandex-gray-light);
border-top: 1px solid var(--yandex-border);
text-align: center;
color: var(--yandex-text-light);
font-size: 14px;
}
.error-message {
background: linear-gradient(90deg, #fff5f5, #ffe6e6);
border-left: 4px solid var(--yandex-red);
padding: 15px;
border-radius: 8px;
margin-bottom: 20px;
color: var(--yandex-red);
font-weight: 500;
display: none;
}
.error-message.show {
display: block;
animation: slideIn .3s ease;
}
@keyframes slideIn {
from {
opacity: ;
transform: translateY(-10px);
}
to {
opacity: 1;
transform: translateY();
}
}
@media (max-width: 480px) {
.yandex-container {
border-radius: 16px;
}
.calculator-body {
padding: 20px;
}
.result-display {
font-size: 48px;
}
.calc-btn {
height: 65px;
font-size: 22px;
}
.buttons-grid {
gap: 12px;
}
}
</style>
</head>
<body>
<div class="yandex-container">
<div class="yandex-header">
<div class="yandex-logo">
<div class="yandex-logo-circle">Я</div>
<div class="yandex-title">Калькулятор</div>
</div>
</div>
<div class="calculator-body">
<div class="error-message" id="errorMessage"></div>
<div class="display-container">
<div class="expression-display" id="expressionDisplay">
<?php
if (!empty($expression)) {
echo htmlspecialchars($expression);
}
?>
</div>
<input type="text"
class="result-display"
id="resultDisplay"
value="<?php echo htmlspecialchars($currentDisplay ?? ''); ?>"
readonly
placeholder="">
</div>
<form method="post" id="calcForm">
<input type="hidden" name="current_value" id="currentValue"
value="<?php echo htmlspecialchars($currentValue ?? ''); ?>">
<input type="hidden" name="previous_value" id="previousValue"
value="<?php echo htmlspecialchars($previousValue ?? ''); ?>">
<input type="hidden" name="current_operator" id="currentOperator"
value="<?php echo htmlspecialchars($currentOperator ?? ''); ?>">
<input type="hidden" name="memory_value" id="memoryValue"
value="<?php echo htmlspecialchars($memoryValue ?? ''); ?>">
<div class="buttons-grid">
<!-- Первый ряд -->
<button type="submit" name="action" value="clear" class="calc-btn btn-clear">
<?php echo (isset($currentValue) && $currentValue != '') ? 'C' : 'AC'; ?>
</button>
<button type="submit" name="action" value="plusminus" class="calc-btn btn-extra">±</button>
<button type="submit" name="action" value="percent" class="calc-btn btn-extra">%</button>
<button type="submit" name="action" value="divide"
class="calc-btn btn-operator <?php echo ($currentOperator == '/') ? 'active' : ''; ?>">÷</button>
<!-- Второй ряд -->
<button type="button" onclick="addNumber('7')" class="calc-btn btn-number">7</button>
<button type="button" onclick="addNumber('8')" class="calc-btn btn-number">8</button>
<button type="button" onclick="addNumber('9')" class="calc-btn btn-number">9</button>
<button type="submit" name="action" value="multiply"
class="calc-btn btn-operator <?php echo ($currentOperator == '*') ? 'active' : ''; ?>">×</button>
<!-- Третий ряд -->
<button type="button" onclick="addNumber('4')" class="calc-btn btn-number">4</button>
<button type="button" onclick="addNumber('5')" class="calc-btn btn-number">5</button>
<button type="button" onclick="addNumber('6')" class="calc-btn btn-number">6</button>
<button type="submit" name="action" value="subtract"
class="calc-btn btn-operator <?php echo ($currentOperator == '-') ? 'active' : ''; ?>">−</button>
<!-- Четвертый ряд -->
<button type="button" onclick="addNumber('1')" class="calc-btn btn-number">1</button>
<button type="button" onclick="addNumber('2')" class="calc-btn btn-number">2</button>
<button type="button" onclick="addNumber('3')" class="calc-btn btn-number">3</button>
<button type="submit" name="action" value="add"
class="calc-btn btn-operator <?php echo ($currentOperator == '+') ? 'active' : ''; ?>">+</button>
<!-- Пятый ряд -->
<button type="button" onclick="addNumber('')" class="calc-btn btn-number btn-zero"></button>
<button type="button" onclick="addDecimal()" class="calc-btn btn-extra">.</button>
<button type="submit" name="action" value="equals" class="calc-btn btn-equals">=</button>
</div>
</form>
<div class="memory-section">
<div class="memory-title">Память</div>
<div class="memory-buttons">
<button type="submit" name="action" value="memory_clear" class="memory-btn red">MC</button>
<button type="submit" name="action" value="memory_recall" class="memory-btn">MR</button>
<button type="submit" name="action" value="memory_add" class="memory-btn">M+</button>
<button type="submit" name="action" value="memory_subtract" class="memory-btn">M-</button>
</div>
</div>
</div>
<div class="yandex-footer">
Яндекс Калькулятор © 2024
</div>
</div>
<?php
session_start();
// Инициализация переменных
$currentValue = $_SESSION['current_value'] ?? '';
$previousValue = $_SESSION['previous_value'] ?? '';
$currentOperator = $_SESSION['current_operator'] ?? '';
$memoryValue = $_SESSION['memory_value'] ?? '';
$currentDisplay = $currentValue;
$expression = '';
// Обработка действий
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$action = $_POST['action'] ?? '';
switch ($action) {
case 'clear':
$currentValue = '';
$previousValue = '';
$currentOperator = '';
break;
case 'plusminus':
if ($currentValue != '') {
if (strpos($currentValue, '-') === ) {
$currentValue = substr($currentValue, 1);
} else {
$currentValue = '-' . $currentValue;
}
}
break;
case 'percent':
if ($currentValue != '') {
$currentValue = (float)$currentValue / 100;
}
break;
// Операторы
case 'add':
case 'subtract':
case 'multiply':
case 'divide':
if (!empty($previousValue) && !empty($currentOperator) && $currentValue != '') {
// Вычисляем предыдущую операцию
calculate();
U
повтори свой ответ
AI
Вот калькулятор в стиле Яндекса с жёлтым и красным акцентами:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Яндекс Калькулятор</title>
<meta name="viewport" content="width=device-width, initial-scale=1.">
<style>
:root {
--yandex-yellow: #ffdb4d;
--yandex-yellow-hover: #ffd633;
--yandex-yellow-active: #ffcc00;
--yandex-red: #ff3333;
--yandex-red-hover: #ff1a1a;
--yandex-red-active: #e60000;
--yandex-dark: #1a1a1a;
--yandex-gray: #f2f2f2;
--yandex-gray-dark: #e6e6e6;
--yandex-gray-light: #fafafa;
--yandex-text: #000;
--yandex-text-light: #666;
--yandex-border: #eee;
}
* {
margin: ;
padding: ;
box-sizing: border-box;
font-family: 'YS Text', 'Helvetica Neue', Arial, sans-serif;
}
body {
background: linear-gradient(135deg, #f8f8f8 %, #ffffff 100%);
min-height: 100vh;
display: flex;
justify-content: center;
align-items: center;
padding: 20px;
}
.yandex-container {
width: 100%;
max-width: 450px;
background: white;
border-radius: 24px;
box-shadow: 10px 40px rgba(, , , .1);
overflow: hidden;
border: 1px solid var(--yandex-border);
}
.yandex-header {
background: linear-gradient(90deg, var(--yandex-red) %, var(--yandex-yellow) 100%);
padding: 25px 30px;
display: flex;
align-items: center;
justify-content: space-between;
}
.yandex-logo {
display: flex;
align-items: center;
gap: 15px;
}
.yandex-logo-circle {
width: 40px;
height: 40px;
background: white;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-weight: 700;
font-size: 20px;
color: var(--yandex-red);
box-shadow: 2px 8px rgba(, , , .1);
}
.yandex-title {
font-size: 28px;
font-weight: 700;
color: white;
text-shadow: 2px 4px rgba(, , , .1);
}
.calculator-body {
padding: 30px;
}
.display-container {
background: var(--yandex-gray-light);
border-radius: 16px;
padding: 25px;
margin-bottom: 30px;
border: 2px solid var(--yandex-border);
position: relative;
overflow: hidden;
}
.display-container::before {
content: '';
position: absolute;
top: ;
left: ;
right: ;
height: 4px;
background: linear-gradient(90deg, var(--yandex-red), var(--yandex-yellow));
}
.expression-display {
font-size: 22px;
color: var(--yandex-text-light);
min-height: 30px;
margin-bottom: 15px;
text-align: right;
word-break: break-all;
font-weight: 400;
}
.result-display {
width: 100%;
border: none;
background: transparent;
font-size: 56px;
color: var(--yandex-text);
text-align: right;
outline: none;
font-weight: 500;
font-family: 'YS Display', 'Helvetica Neue', Arial, sans-serif;
direction: ltr;
}
.result-display::placeholder {
color: var(--yandex-text-light);
opacity: .4;
}
.buttons-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 15px;
margin-bottom: 25px;
}
.calc-btn {
height: 75px;
border: none;
border-radius: 16px;
font-size: 26px;
font-weight: 500;
cursor: pointer;
transition: all .2s cubic-bezier(.4, , .2, 1);
display: flex;
align-items: center;
justify-content: center;
user-select: none;
position: relative;
overflow: hidden;
}
.calc-btn::after {
content: '';
position: absolute;
top: 50%;
left: 50%;
width: ;
height: ;
border-radius: 50%;
background: rgba(255, 255, 255, .3);
transform: translate(-50%, -50%);
transition: width .3s, height .3s;
}
.calc-btn:active::after {
width: 200px;
height: 200px;
}
.calc-btn:hover {
transform: translateY(-3px);
box-shadow: 6px 20px rgba(, , , .15);
}
.calc-btn:active {
transform: translateY(-1px);
}
.btn-number {
background: white;
color: var(--yandex-text);
border: 2px solid var(--yandex-border);
}
.btn-number:hover {
background: var(--yandex-gray);
border-color: var(--yandex-yellow);
}
.btn-operator {
background: var(--yandex-yellow);
color: var(--yandex-text);
font-weight: 600;
border: 2px solid transparent;
}
.btn-operator:hover {
background: var(--yandex-yellow-hover);
border-color: var(--yandex-yellow-active);
}
.btn-operator.active {
background: var(--yandex-yellow-active);
box-shadow: inset 2px 8px rgba(, , , .1);
}
.btn-equals {
background: var(--yandex-red);
color: white;
font-weight: 600;
grid-column: span 2;
border: 2px solid transparent;
}
.btn-equals:hover {
background: var(--yandex-red-hover);
border-color: var(--yandex-red-active);
}
.btn-clear {
background: var(--yandex-red);
color: white;
font-weight: 600;
border: 2px solid transparent;
}
.btn-clear:hover {
background: var(--yandex-red-hover);
border-color: var(--yandex-red-active);
}
.btn-extra {
background: var(--yandex-gray);
color: var(--yandex-text);
font-size: 22px;
border: 2px solid transparent;
}
.btn-extra:hover {
background: var(--yandex-gray-dark);
border-color: var(--yandex-border);
}
.btn-zero {
grid-column: span 2;
}
.memory-section {
background: var(--yandex-gray-light);
border-radius: 16px;
padding: 20px;
border: 2px solid var(--yandex-border);
}
.memory-title {
font-size: 18px;
font-weight: 600;
color: var(--yandex-text);
margin-bottom: 15px;
display: flex;
align-items: center;
gap: 10px;
}
.memory-title::before {
content: '💾';
font-size: 20px;
}
.memory-buttons {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 10px;
}
.memory-btn {
padding: 12px;
background: white;
border: 2px solid var(--yandex-border);
border-radius: 12px;
font-size: 16px;
font-weight: 500;
cursor: pointer;
transition: all .2s ease;
text-align: center;
}
.memory-btn:hover {
background: var(--yandex-gray);
border-color: var(--yandex-yellow);
}
.memory-btn.red {
background: var(--yandex-red);
color: white;
border-color: transparent;
}
.memory-btn.red:hover {
background: var(--yandex-red-hover);
}
.yandex-footer {
padding: 20px 30px;
background: var(--yandex-gray-light);
border-top: 1px solid var(--yandex-border);
text-align: center;
color: var(--yandex-text-light);
font-size: 14px;
}
.error-message {
background: linear-gradient(90deg, #fff5f5, #ffe6e6);
border-left: 4px solid var(--yandex-red);
padding: 15px;
border-radius: 8px;
margin-bottom: 20px;
color: var(--yandex-red);
font-weight: 500;
display: none;
}
.error-message.show {
display: block;
animation: slideIn .3s ease;
}
@keyframes slideIn {
from {
opacity: ;
transform: translateY(-10px);
}
to {
opacity: 1;
transform: translateY();
}
}
@media (max-width: 480px) {
.yandex-container {
border-radius: 16px;
}
.calculator-body {
padding: 20px;
}
.result-display {
font-size: 48px;
}
.calc-btn {
height: 65px;
font-size: 22px;
}
.buttons-grid {
gap: 12px;
}
}
</style>
</head>
<body>
<div class="yandex-container">
<div class="yandex-header">
<div class="yandex-logo">
<div class="yandex-logo-circle">Я</div>
<div class="yandex-title">Калькулятор</div>
</div>
</div>
<div class="calculator-body">
<div class="error-message" id="errorMessage"></div>
<div class="display-container">
<div class="expression-display" id="expressionDisplay">
<?php
if (!empty($expression)) {
echo htmlspecialchars($expression);
}
?>
</div>
<input type="text"
class="result-display"
id="resultDisplay"
value="<?php echo htmlspecialchars($currentDisplay ?? ''); ?>"
readonly
placeholder="">
</div>
<form method="post" id="calcForm">
<input type="hidden" name="current_value" id="currentValue"
value="<?php echo htmlspecialchars($currentValue ?? ''); ?>">
<input type="hidden" name="previous_value" id="previousValue"
value="<?php echo htmlspecialchars($previousValue ?? ''); ?>">
<input type="hidden" name="current_operator" id="currentOperator"
value="<?php echo htmlspecialchars($currentOperator ?? ''); ?>">
<input type="hidden" name="memory_value" id="memoryValue"
value="<?php echo htmlspecialchars($memoryValue ?? ''); ?>">
<div class="buttons-grid">
<!-- Первый ряд -->
<button type="submit" name="action" value="clear" class="calc-btn btn-clear">
<?php echo (isset($currentValue) && $currentValue != '') ? 'C' : 'AC'; ?>
</button>
<button type="submit" name="action" value="plusminus" class="calc-btn btn-extra">±</button>
<button type="submit" name="action" value="percent" class="calc-btn btn-extra">%</button>
<button type="submit" name="action" value="divide"
class="calc-btn btn-operator <?php echo ($currentOperator == '/') ? 'active' : ''; ?>">÷</button>
<!-- Второй ряд -->
<button type="button" onclick="addNumber('7')" class="calc-btn btn-number">7</button>
<button type="button" onclick="addNumber('8')" class="calc-btn btn-number">8</button>
<button type="button" onclick="addNumber('9')" class="calc-btn btn-number">9</button>
<button type="submit" name="action" value="multiply"
class="calc-btn btn-operator <?php echo ($currentOperator == '*') ? 'active' : ''; ?>">×</button>
<!-- Третий ряд -->
<button type="button" onclick="addNumber('4')" class="calc-btn btn-number">4</button>
<button type="button" onclick="addNumber('5')" class="calc-btn btn-number">5</button>
<button type="button" onclick="addNumber('6')" class="calc-btn btn-number">6</button>
<button type="submit" name="action" value="subtract"
class="calc-btn btn-operator <?php echo ($currentOperator == '-') ? 'active' : ''; ?>">−</button>
<!-- Четвертый ряд -->
<button type="button" onclick="addNumber('1')" class="calc-btn btn-number">1</button>
<button type="button" onclick="addNumber('2')" class="calc-btn btn-number">2</button>
<button type="button" onclick="addNumber('3')" class="calc-btn btn-number">3</button>
<button type="submit" name="action" value="add"
class="calc-btn btn-operator <?php echo ($currentOperator == '+') ? 'active' : ''; ?>">+</button>
<!-- Пятый ряд -->
<button type="button" onclick="addNumber('')" class="calc-btn btn-number btn-zero"></button>
<button type="button" onclick="addDecimal()" class="calc-btn btn-extra">.</button>
<button type="submit" name="action" value="equals" class="calc-btn btn-equals">=</button>
</div>
<div class="memory-section">
<div class="memory-title">Память</div>
<div class="memory-buttons">
<button type="submit" name="action" value="memory_clear" class="memory-btn red">MC</button>
<button type="submit" name="action" value="memory_recall" class="memory-btn">MR</button>
<button type="submit" name="action" value="memory_add" class="memory-btn">M+</button>
<button type="submit" name="action" value="memory_subtract" class="memory-btn">M-</button>
</div>
</div>
</form>
</div>
<div class="yandex-footer">
Яндекс Калькулятор © 2024
</div>
</div>
<script>
function addNumber(num) {
const currentValue = document.getElementById('currentValue');
const resultDisplay = document.getElementById('resultDisplay');
if (resultDisplay.value === '' || resultDisplay.value === 'Error') {
currentValue.value = num;
resultDisplay.value = num;
} else {
currentValue.value += num;
resultDisplay.value = currentValue.value;
}
updateForm();
}
function addDecimal() {
const currentValue = document.getElementById('currentValue');
const resultDisplay = document.getElementById('resultDisplay');
if (!currentValue.value.includes('.')) {
if (currentValue.value === '' || resultDisplay.value === 'Error') {
currentValue.value = '.';
resultDisplay.value = '.';
} else {
currentValue.value += '.';
resultDisplay.value = currentValue.value;
}
updateForm();
}
}
function updateForm() {
document.getElementById('calcForm').submit();
}
function showError(message) {
const errorDiv = document.getElementById('errorMessage');
errorDiv.textContent = message;
errorDiv.classList.add('show');
setTimeout(() => {
errorDiv.classList.remove('show');
}, 300);
}
</script>
<?php
session_start();
// Инициализация переменных
$currentValue = $_SESSION['current_value'] ?? '';
$previousValue = $_SESSION['previous_value'] ?? '';
$currentOperator = $_SESSION['current_operator'] ?? '';
$memoryValue = $_SESSION['memory_value'] ?? ;
$currentDisplay = $currentValue ?: '
`php<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Яндекс Калькулятор</title>
<meta name="viewport" content="width=device-width, initial-scale=1.">
<style>
:root {
--yandex-yellow: #ffdb4d;
--yandex-yellow-hover: #ffd633;
--yandex-yellow-active: #ffcc00;
--yandex-red: #ff3333;
--yandex-red-hover: #ff1a1a;
--yandex-red-active: #e60000;
--yandex-dark: #1a1a1a;
--yandex-gray: #f2f2f2;
--yandex-gray-dark: #e6e6e6;
--yandex-gray-light: #fafafa;
--yandex-text: #000;
--yandex-text-light: #666;
--yandex-border: #eee;
}
* {
margin: ;
padding: ;
box-sizing: border-box;
font-family: 'YS Text', 'Helvetica Neue', Arial, sans-serif;
}
body {
background: linear-gradient(135deg, #f8f8f8 %, #ffffff 100%);
min-height: 100vh;
display: flex;
justify-content: center;
align-items: center;
padding: 20px;
}
.yandex-container {
width: 100%;
max-width: 450px;
background: white;
border-radius: 24px;
box-shadow: 10px 40px rgba(, , , .1);
overflow: hidden;
border: 1px solid var(--yandex-border);
}
.yandex-header {
background: linear-gradient(90deg, var(--yandex-red) %, var(--yandex-yellow) 100%);
padding: 25px 30px;
display: flex;
align-items: center;
justify-content: space-between;
}
.yandex-logo {
display: flex;
align-items: center;
gap: 15px;
}
.yandex-logo-circle {
width: 40px;
height: 40px;
background: white;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-weight: 700;
font-size: 20px;
color: var(--yandex-red);
box-shadow: 2px 8px rgba(, , , .1);
}
.yandex-title {
font-size: 28px;
font-weight: 700;
color: white;
text-shadow: 2px 4px rgba(, , , .1);
}
.calculator-body {
padding: 30px;
}
.display-container {
background: var(--yandex-gray-light);
border-radius: 16px;
padding: 25px;
margin-bottom: 30px;
border: 2px solid var(--yandex-border);
position: relative;
overflow: hidden;
}
.display-container::before {
content: '';
position: absolute;
top: ;
left: ;
right: ;
height: 4px;
background: linear-gradient(90deg, var(--yandex-red), var(--yandex-yellow));
}
.expression-display {
font-size: 22px;
color: var(--yandex-text-light);
min-height: 30px;
margin-bottom: 15px;
text-align: right;
word-break: break-all;
font-weight: 400;
}
.result-display {
width: 100%;
border: none;
background: transparent;
font-size: 56px;
color: var(--yandex-text);
text-align: right;
outline: none;
font-weight: 500;
font-family: 'YS Display', 'Helvetica Neue', Arial, sans-serif;
direction: ltr;
}
.result-display::placeholder {
color: var(--yandex-text-light);
opacity: .4;
}
.buttons-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 15px;
margin-bottom: 25px;
}
.calc-btn {
height: 75px;
border: none;
border-radius: 16px;
font-size: 26px;
font-weight: 500;
cursor: pointer;
transition: all .2s cubic-bezier(.4, , .2, 1);
display: flex;
align-items: center;
justify-content: center;
user-select: none;
position: relative;
overflow: hidden;
}
.calc-btn::after {
content: '';
position: absolute;
top: 50%;
left: 50%;
width: ;
height: ;
border-radius: 50%;
background: rgba(255, 255, 255, .3);
transform: translate(-50%, -50%);
transition: width .3s, height .3s;
}
.calc-btn:active::after {
width: 200px;
height: 200px;
}
.calc-btn:hover {
transform: translateY(-3px);
box-shadow: 6px 20px rgba(, , , .15);
}
.calc-btn:active {
transform: translateY(-1px);
}
.btn-number {
background: white;
color: var(--yandex-text);
border: 2px solid var(--yandex-border);
}
.btn-number:hover {
background: var(--yandex-gray);
border-color: var(--yandex-yellow);
}
.btn-operator {
background: var(--yandex-yellow);
color: var(--yandex-text);
font-weight: 600;
border: 2px solid transparent;
}
.btn-operator:hover {
background: var(--yandex-yellow-hover);
border-color: var(--yandex-yellow-active);
}
.btn-operator.active {
background: var(--yandex-yellow-active);
box-shadow: inset 2px 8px rgba(, , , .1);
}
.btn-equals {
background: var(--yandex-red);
color: white;
font-weight: 600;
grid-column: span 2;
border: 2px solid transparent;
}
.btn-equals:hover {
background: var(--yandex-red-hover);
border-color: var(--yandex-red-active);
}
.btn-clear {
background: var(--yandex-red);
color: white;
font-weight: 600;
border: 2px solid transparent;
}
.btn-clear:hover {
background: var(--yandex-red-hover);
border-color: var(--yandex-red-active);
}
.btn-extra {
background: var(--yandex-gray);
color: var(--yandex-text);
font-size: 22px;
border: 2px solid transparent;
}
.btn-extra:hover {
background: var(--yandex-gray-dark);
border-color: var(--yandex-border);
}
.btn-zero {
grid-column: span 2;
}
.memory-section {
background: var(--yandex-gray-light);
border-radius: 16px;
padding: 20px;
border: 2px solid var(--yandex-border);
}
.memory-title {
font-size: 18px;
font-weight: 600;
color: var(--yandex-text);
margin-bottom: 15px;
display: flex;
align-items: center;
gap: 10px;
}
.memory-title::before {
content: '💾';
font-size: 20px;
}
.memory-buttons {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 10px;
}
.memory-btn {
padding: 12px;
background: white;
border: 2px solid var(--yandex-border);
border-radius: 12px;
font-size: 16px;
font-weight: 500;
cursor: pointer;
transition: all .2s ease;
text-align: center;
}
.memory-btn:hover {
background: var(--yandex-gray);
border-color: var(--yandex-yellow);
}
.memory-btn.red {
background: var(--yandex-red);
color: white;
border-color: transparent;
}
.memory-btn.red:hover {
background: var(--yandex-red-hover);
}
.yandex-footer {
padding: 20px 30px;
background: var(--yandex-gray-light);
border-top: 1px solid var(--yandex-border);
text-align: center;
color: var(--yandex-text-light);
font-size: 14px;
}
.error-message {
background: linear-gradient(90deg, #fff5f5, #ffe6e6);
border-left: 4px solid var(--yandex-red);
padding: 15px;
border-radius: 8px;
margin-bottom: 20px;
color: var(--yandex-red);
font-weight: 500;
display: none;
}
.error-message.show {
display: block;
animation: slideIn .3s ease;
}
@keyframes slideIn {
from {
opacity: ;
transform: translateY(-10px);
}
to {
opacity: 1;
transform: translateY();
}
}
@media (max-width: 480px) {
.yandex-container {
border-radius: 16px;
}
.calculator-body {
padding: 20px;
}
.result-display {
font-size: 48px;
}
.calc-btn {
height: 65px;
font-size: 22px;
}
.buttons-grid {
gap: 12px;
}
}
</style>
</head>
<body>
<div class="yandex-container">
<div class="yandex-header">
<div class="yandex-logo">
<div class="yandex-logo-circle">Я</div>
<div class="yandex-title">Калькулятор</div>
</div>
</div>
<div class="calculator-body">
<div class="error-message" id="errorMessage"></div>
<div class="display-container">
<div class="expression-display" id="expressionDisplay">
<?php
if (!empty($expression)) {
echo htmlspecialchars($expression);
}
?>
</div>
<input type="text"
class="result-display"
id="resultDisplay"
value="<?php echo htmlspecialchars($currentDisplay ?? ''); ?>"
readonly
placeholder="">
</div>
<form method="post" id="calcForm">
<input type="hidden" name="current_value" id="currentValue"
value="<?php echo htmlspecialchars($currentValue ?? ''); ?>">
<input type="hidden" name="previous_value" id="previousValue"
value="<?php echo htmlspecialchars($previousValue ?? ''); ?>">
<input type="hidden" name="current_operator" id="currentOperator"
value="<?php echo htmlspecialchars($currentOperator ?? ''); ?>">
<input type="hidden" name="memory_value" id="memoryValue"
value="<?php echo htmlspecialchars($memoryValue ?? ''); ?>">
<div class="buttons-grid">
<!-- Первый ряд -->
<button type="submit" name="action" value="clear" class="calc-btn btn-clear">
<?php echo (isset($currentValue) && $currentValue != '') ? 'C' : 'AC'; ?>
</button>
<button type="submit" name="action" value="plusminus" class="calc-btn btn-extra">±</button>
<button type="submit" name="action" value="percent" class="calc-btn btn-extra">%</button>
<button type="submit" name="action" value="divide"
class="calc-btn btn-operator <?php echo ($currentOperator == '/') ? 'active' : ''; ?>">÷</button>
<!-- Второй ряд -->
<button type="button" onclick="addNumber('7')" class="calc-btn btn-number">7</button>
<button type="button" onclick="addNumber('8')" class="calc-btn btn-number">8</button>
<button type="button" onclick="addNumber('9')" class="calc-btn btn-number">9</button>
<button type="submit" name="action" value="multiply"
class="calc-btn btn-operator <?php echo ($currentOperator == '*') ? 'active' : ''; ?>">×</button>
<!-- Третий ряд -->
<button type="button" onclick="addNumber('4')" class="calc-btn btn-number">4</button>
<button type="button" onclick="addNumber('5')" class="calc-btn btn-number">5</button>
<button type="button" onclick="addNumber('6')" class="calc-btn btn-number">6</button>
<button type="submit" name="action" value="subtract"
class="calc-btn btn-operator <?php echo ($currentOperator == '-') ? 'active' : ''; ?>">−</button>
<!-- Четвертый ряд -->
<button type="button" onclick="addNumber('1')" class="calc-btn btn-number">1</button>
<button type="button" onclick="addNumber('2')" class="calc-btn btn-number">2</button>
<button type="button" onclick="addNumber('3')" class="calc-btn btn-number">3</button>
<button type="submit" name="action" value="add"
class="calc-btn btn-operator <?php echo ($currentOperator == '+') ? 'active' : ''; ?>">+</button>
<!-- Пятый ряд -->
<button type="button" onclick="addNumber('')" class="calc-btn btn-number btn-zero"></button>
<button type="button" onclick="addDecimal()" class="calc-btn btn-extra">.</button>
<button type="submit" name="action" value="equals" class="calc-btn btn-equals">=</button>
</div>
<div class="memory-section">
<div class="memory-title">Память</div>
<div class="memory-buttons">
<button type="submit" name="action" value="memory_clear" class="memory-btn red">MC</button>
<button type="submit" name="action" value="memory_recall" class="memory-btn">MR</button>
<button type="submit" name="action" value="memory_add" class="memory-btn">M+</button>
<button type="submit" name="action" value="memory_subtract" class="memory-btn">M-</button>
</div>
</div>
</form>
</div>
<div class="yandex-footer">
Яндекс Калькулятор © 2024
</div>
</div>
<script>
function addNumber(num) {
const currentValue = document.getElementById('currentValue');
const resultDisplay = document.getElementById('resultDisplay');
if (resultDisplay.value === '' || resultDisplay.value === 'Error') {
currentValue.value = num;
resultDisplay.value = num;
} else {
currentValue.value += num;
resultDisplay.value = currentValue.value;
}
updateForm();
}
function addDecimal() {
const currentValue = document.getElementById('currentValue');
const resultDisplay = document.getElementById('resultDisplay');
if (!currentValue.value.includes('.')) {
if (currentValue.value === '' || resultDisplay.value === 'Error') {
currentValue.value = '.';
resultDisplay.value = '.';
} else {
currentValue.value += '.';
resultDisplay.value = currentValue.value;
}
updateForm();
}
}
function updateForm() {
document.getElementById('calcForm').submit();
}
function showError(message) {
const errorDiv = document.getElementById('errorMessage');
errorDiv.textContent = message;
errorDiv.classList.add('show');
setTimeout(() => {
errorDiv.classList.remove('show');
}, 300);
}
</script>
<?php
session_start();
// Инициализация переменных
$currentValue = $_SESSION['current_value'] ?? '';
$previousValue = $_SESSION['previous_value'] ?? '';
$currentOperator = $_SESSION['current_operator'] ?? '';
$memoryValue = $_SESSION['memory_value'] ?? ;
$currentDisplay = $currentValue ?: '
U
повтори код, но без красного
AI
Вот калькулятор в стиле Яндекса без красного цвета, только с жёлтыми и серыми акцентами:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Яндекс Калькулятор</title>
<meta name="viewport" content="width=device-width, initial-scale=1.">
<style>
:root {
--yandex-yellow: #ffdb4d;
--yandex-yellow-hover: #ffd633;
--yandex-yellow-active: #ffcc00;
--yandex-yellow-dark: #e6b800;
--yandex-gray: #f2f2f2;
--yandex-gray-dark: #e6e6e6;
--yandex-gray-light: #fafafa;
--yandex-text: #000;
--yandex-text-light: #666;
--yandex-border: #eee;
--yandex-shadow: rgba(, , , .1);
}
* {
margin: ;
padding: ;
box-sizing: border-box;
font-family: 'YS Text', 'Helvetica Neue', Arial, sans-serif;
}
body {
background: linear-gradient(135deg, #f8f8f8 %, #ffffff 100%);
min-height: 100vh;
display: flex;
justify-content: center;
align-items: center;
padding: 20px;
}
.yandex-container {
width: 100%;
max-width: 450px;
background: white;
border-radius: 24px;
box-shadow: 10px 40px var(--yandex-shadow);
overflow: hidden;
border: 1px solid var(--yandex-border);
}
.yandex-header {
background: var(--yandex-yellow);
padding: 25px 30px;
display: flex;
align-items: center;
justify-content: space-between;
}
.yandex-logo {
display: flex;
align-items: center;
gap: 15px;
}
.yandex-logo-circle {
width: 40px;
height: 40px;
background: white;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-weight: 700;
font-size: 20px;
color: var(--yandex-yellow-dark);
box-shadow: 2px 8px var(--yandex-shadow);
}
.yandex-title {
font-size: 28px;
font-weight: 700;
color: var(--yandex-text);
text-shadow: 1px 2px rgba(255, 255, 255, .5);
}
.calculator-body {
padding: 30px;
}
.display-container {
background: var(--yandex-gray-light);
border-radius: 16px;
padding: 25px;
margin-bottom: 30px;
border: 2px solid var(--yandex-border);
position: relative;
overflow: hidden;
}
.display-container::before {
content: '';
position: absolute;
top: ;
left: ;
right: ;
height: 4px;
background: var(--yandex-yellow);
}
.expression-display {
font-size: 22px;
color: var(--yandex-text-light);
min-height: 30px;
margin-bottom: 15px;
text-align: right;
word-break: break-all;
font-weight: 400;
}
.result-display {
width: 100%;
border: none;
background: transparent;
font-size: 56px;
color: var(--yandex-text);
text-align: right;
outline: none;
font-weight: 500;
font-family: 'YS Display', 'Helvetica Neue', Arial, sans-serif;
direction: ltr;
}
.result-display::placeholder {
color: var(--yandex-text-light);
opacity: .4;
}
.buttons-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 15px;
margin-bottom: 25px;
}
.calc-btn {
height: 75px;
border: none;
border-radius: 16px;
font-size: 26px;
font-weight: 500;
cursor: pointer;
transition: all .2s cubic-bezier(.4, , .2, 1);
display: flex;
align-items: center;
justify-content: center;
user-select: none;
position: relative;
overflow: hidden;
}
.calc-btn::after {
content: '';
position: absolute;
top: 50%;
left: 50%;
width: ;
height: ;
border-radius: 50%;
background: rgba(255, 255, 255, .3);
transform: translate(-50%, -50%);
transition: width .3s, height .3s;
}
.calc-btn:active::after {
width: 200px;
height: 200px;
}
.calc-btn:hover {
transform: translateY(-3px);
box-shadow: 6px 20px var(--yandex-shadow);
}
.calc-btn:active {
transform: translateY(-1px);
}
.btn-number {
background: white;
color: var(--yandex-text);
border: 2px solid var(--yandex-border);
}
.btn-number:hover {
background: var(--yandex-gray);
border-color: var(--yandex-yellow);
}
.btn-operator {
background: var(--yandex-yellow);
color: var(--yandex-text);
font-weight: 600;
border: 2px solid transparent;
}
.btn-operator:hover {
background: var(--yandex-yellow-hover);
border-color: var(--yandex-yellow-active);
}
.btn-operator.active {
background: var(--yandex-yellow-active);
box-shadow: inset 2px 8px var(--yandex-shadow);
}
.btn-equals {
background: var(--yandex-yellow-dark);
color: white;
font-weight: 600;
grid-column: span 2;
border: 2px solid transparent;
}
.btn-equals:hover {
background: var(--yandex-yellow-active);
border-color: var(--yandex-yellow-dark);
}
.btn-clear {
background: var(--yandex-gray-dark);
color: var(--yandex-text);
font-weight: 600;
border: 2px solid transparent;
}
.btn-clear:hover {
background: var(--yandex-gray);
border-color: var(--yandex-border);
}
.btn-extra {
background: var(--yandex-gray);
color: var(--yandex-text);
font-size: 22px;
border: 2px solid transparent;
}
.btn-extra:hover {
background: var(--yandex-gray-dark);
border-color: var(--yandex-border);
}
.btn-zero {
grid-column: span 2;
}
.memory-section {
background: var(--yandex-gray-light);
border-radius: 16px;
padding: 20px;
border: 2px solid var(--yandex-border);
}
.memory-title {
font-size: 18px;
font-weight: 600;
color: var(--yandex-text);
margin-bottom: 15px;
display: flex;
align-items: center;
gap: 10px;
}
.memory-title::before {
content: '💾';
font-size: 20px;
}
.memory-buttons {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 10px;
}
.memory-btn {
padding: 12px;
background: white;
border: 2px solid var(--yandex-border);
border-radius: 12px;
font-size: 16px;
font-weight: 500;
cursor: pointer;
transition: all .2s ease;
text-align: center;
}
.memory-btn:hover {
background: var(--yandex-gray);
border-color: var(--yandex-yellow);
}
.memory-btn.yellow {
background: var(--yandex-yellow);
color: var(--yandex-text);
border-color: transparent;
}
.memory-btn.yellow:hover {
background: var(--yandex-yellow-hover);
}
.yandex-footer {
padding: 20px 30px;
background: var(--yandex-gray-light);
border-top: 1px solid var(--yandex-border);
text-align: center;
color: var(--yandex-text-light);
font-size: 14px;
}
.notification {
background: linear-gradient(90deg, #fff9e6, #fff2cc);
border-left: 4px solid var(--yandex-yellow);
padding: 15px;
border-radius: 8px;
margin-bottom: 20px;
color: var(--yandex-yellow-dark);
font-weight: 500;
display: none;
}
.notification.show {
display: block;
animation: slideIn .3s ease;
}
@keyframes slideIn {
from {
opacity: ;
transform: translateY(-10px);
}
to {
opacity: 1;
transform: translateY();
}
}
@media (max-width: 480px) {
.yandex-container {
border-radius: 16px;
}
.calculator-body {
padding: 20px;
}
.result-display {
font-size: 48px;
}
.calc-btn {
height: 65px;
font-size: 22px;
}
.buttons-grid {
gap: 12px;
}
}
</style>
</head>
<body>
<div class="yandex-container">
<div class="yandex-header">
<div class="yandex-logo">
<div class="yandex-logo-circle">Я</div>
<div class="yandex-title">Калькулятор</div>
</div>
</div>
<div class="calculator-body">
<div class="notification" id="notificationMessage"></div>
<div class="display-container">
<div class="expression-display" id="expressionDisplay">
<?php
if (!empty($expression)) {
echo htmlspecialchars($expression);
}
?>
</div>
<input type="text"
class="result-display"
id="resultDisplay"
value="<?php echo htmlspecialchars($currentDisplay ?? ''); ?>"
readonly
placeholder="">
</div>
<form method="post" id="calcForm">
<input type="hidden" name="current_value" id="currentValue"
value="<?php echo htmlspecialchars($currentValue ?? ''); ?>">
<input type="hidden" name="previous_value" id="previousValue"
value="<?php echo htmlspecialchars($previousValue ?? ''); ?>">
<input type="hidden" name="current_operator" id="currentOperator"
value="<?php echo htmlspecialchars($currentOperator ?? ''); ?>">
<input type="hidden" name="memory_value" id="memoryValue"
value="<?php echo htmlspecialchars($memoryValue ?? ''); ?>">
<div class="buttons-grid">
<!-- Первый ряд -->
<button type="submit" name="action" value="clear" class="calc-btn btn-clear">
<?php echo (isset($currentValue) && $currentValue != '') ? 'C' : 'AC'; ?>
</button>
<button type="submit" name="action" value="plusminus" class="calc-btn btn-extra">±</button>
<button type="submit" name="action" value="percent" class="calc-btn btn-extra">%</button>
<button type="submit" name="action" value="divide"
class="calc-btn btn-operator <?php echo ($currentOperator == '/') ? 'active' : ''; ?>">÷</button>
<!-- Второй ряд -->
<button type="button" onclick="addNumber('7')" class="calc-btn btn-number">7</button>
<button type="button" onclick="addNumber('8')" class="calc-btn btn-number">8</button>
<button type="button" onclick="addNumber('9')" class="calc-btn btn-number">9</button>
<button type="submit" name="action" value="multiply"
class="calc-btn btn-operator <?php echo ($currentOperator == '*') ? 'active' : ''; ?>">×</button>
<!-- Третий ряд -->
<button type="button" onclick="addNumber('4')" class="calc-btn btn-number">4</button>
<button type="button" onclick="addNumber('5')" class="calc-btn btn-number">5</button>
<button type="button" onclick="addNumber('6')" class="calc-btn btn-number">6</button>
<button type="submit" name="action" value="subtract"
class="calc-btn btn-operator <?php echo ($currentOperator == '-') ? 'active' : ''; ?>">−</button>
<!-- Четвертый ряд -->
<button type="button" onclick="addNumber('1')" class="calc-btn btn-number">1</button>
<button type="button" onclick="addNumber('2')" class="calc-btn btn-number">2</button>
<button type="button" onclick="addNumber('3')" class="calc-btn btn-number">3</button>
<button type="submit" name="action" value="add"
class="calc-btn
`php<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Яндекс Калькулятор</title>
<meta name="viewport" content="width=device-width, initial-scale=1.">
<style>
:root {
--yandex-yellow: #ffdb4d;
--yandex-yellow-hover: #ffd633;
--yandex-yellow-active: #ffcc00;
--yandex-yellow-dark: #e6b800;
--yandex-gray: #f2f2f2;
--yandex-gray-dark: #e6e6e6;
--yandex-gray-light: #fafafa;
--yandex-text: #000;
--yandex-text-light: #666;
--yandex-border: #eee;
--yandex-shadow: rgba(, , , .1);
}
* {
margin: ;
padding: ;
box-sizing: border-box;
font-family: 'YS Text', 'Helvetica Neue', Arial, sans-serif;
}
body {
background: linear-gradient(135deg, #f8f8f8 %, #ffffff 100%);
min-height: 100vh;
display: flex;
justify-content: center;
align-items: center;
padding: 20px;
}
.yandex-container {
width: 100%;
max-width: 450px;
background: white;
border-radius: 24px;
box-shadow: 10px 40px var(--yandex-shadow);
overflow: hidden;
border: 1px solid var(--yandex-border);
}
.yandex-header {
background: var(--yandex-yellow);
padding: 25px 30px;
display: flex;
align-items: center;
justify-content: space-between;
}
.yandex-logo {
display: flex;
align-items: center;
gap: 15px;
}
.yandex-logo-circle {
width: 40px;
height: 40px;
background: white;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-weight: 700;
font-size: 20px;
color: var(--yandex-yellow-dark);
box-shadow: 2px 8px var(--yandex-shadow);
}
.yandex-title {
font-size: 28px;
font-weight: 700;
color: var(--yandex-text);
text-shadow: 1px 2px rgba(255, 255, 255, .5);
}
.calculator-body {
padding: 30px;
}
.display-container {
background: var(--yandex-gray-light);
border-radius: 16px;
padding: 25px;
margin-bottom: 30px;
border: 2px solid var(--yandex-border);
position: relative;
overflow: hidden;
}
.display-container::before {
content: '';
position: absolute;
top: ;
left: ;
right: ;
height: 4px;
background: var(--yandex-yellow);
}
.expression-display {
font-size: 22px;
color: var(--yandex-text-light);
min-height: 30px;
margin-bottom: 15px;
text-align: right;
word-break: break-all;
font-weight: 400;
}
.result-display {
width: 100%;
border: none;
background: transparent;
font-size: 56px;
color: var(--yandex-text);
text-align: right;
outline: none;
font-weight: 500;
font-family: 'YS Display', 'Helvetica Neue', Arial, sans-serif;
direction: ltr;
}
.result-display::placeholder {
color: var(--yandex-text-light);
opacity: .4;
}
.buttons-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 15px;
margin-bottom: 25px;
}
.calc-btn {
height: 75px;
border: none;
border-radius: 16px;
font-size: 26px;
font-weight: 500;
cursor: pointer;
transition: all .2s cubic-bezier(.4, , .2, 1);
display: flex;
align-items: center;
justify-content: center;
user-select: none;
position: relative;
overflow: hidden;
}
.calc-btn::after {
content: '';
position: absolute;
top: 50%;
left: 50%;
width: ;
height: ;
border-radius: 50%;
background: rgba(255, 255, 255, .3);
transform: translate(-50%, -50%);
transition: width .3s, height .3s;
}
.calc-btn:active::after {
width: 200px;
height: 200px;
}
.calc-btn:hover {
transform: translateY(-3px);
box-shadow: 6px 20px var(--yandex-shadow);
}
.calc-btn:active {
transform: translateY(-1px);
}
.btn-number {
background: white;
color: var(--yandex-text);
border: 2px solid var(--yandex-border);
}
.btn-number:hover {
background: var(--yandex-gray);
border-color: var(--yandex-yellow);
}
.btn-operator {
background: var(--yandex-yellow);
color: var(--yandex-text);
font-weight: 600;
border: 2px solid transparent;
}
.btn-operator:hover {
background: var(--yandex-yellow-hover);
border-color: var(--yandex-yellow-active);
}
.btn-operator.active {
background: var(--yandex-yellow-active);
box-shadow: inset 2px 8px var(--yandex-shadow);
}
.btn-equals {
background: var(--yandex-yellow-dark);
color: white;
font-weight: 600;
grid-column: span 2;
border: 2px solid transparent;
}
.btn-equals:hover {
background: var(--yandex-yellow-active);
border-color: var(--yandex-yellow-dark);
}
.btn-clear {
background: var(--yandex-gray-dark);
color: var(--yandex-text);
font-weight: 600;
border: 2px solid transparent;
}
.btn-clear:hover {
background: var(--yandex-gray);
border-color: var(--yandex-border);
}
.btn-extra {
background: var(--yandex-gray);
color: var(--yandex-text);
font-size: 22px;
border: 2px solid transparent;
}
.btn-extra:hover {
background: var(--yandex-gray-dark);
border-color: var(--yandex-border);
}
.btn-zero {
grid-column: span 2;
}
.memory-section {
background: var(--yandex-gray-light);
border-radius: 16px;
padding: 20px;
border: 2px solid var(--yandex-border);
}
.memory-title {
font-size: 18px;
font-weight: 600;
color: var(--yandex-text);
margin-bottom: 15px;
display: flex;
align-items: center;
gap: 10px;
}
.memory-title::before {
content: '💾';
font-size: 20px;
}
.memory-buttons {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 10px;
}
.memory-btn {
padding: 12px;
background: white;
border: 2px solid var(--yandex-border);
border-radius: 12px;
font-size: 16px;
font-weight: 500;
cursor: pointer;
transition: all .2s ease;
text-align: center;
}
.memory-btn:hover {
background: var(--yandex-gray);
border-color: var(--yandex-yellow);
}
.memory-btn.yellow {
background: var(--yandex-yellow);
color: var(--yandex-text);
border-color: transparent;
}
.memory-btn.yellow:hover {
background: var(--yandex-yellow-hover);
}
.yandex-footer {
padding: 20px 30px;
background: var(--yandex-gray-light);
border-top: 1px solid var(--yandex-border);
text-align: center;
color: var(--yandex-text-light);
font-size: 14px;
}
.notification {
background: linear-gradient(90deg, #fff9e6, #fff2cc);
border-left: 4px solid var(--yandex-yellow);
padding: 15px;
border-radius: 8px;
margin-bottom: 20px;
color: var(--yandex-yellow-dark);
font-weight: 500;
display: none;
}
.notification.show {
display: block;
animation: slideIn .3s ease;
}
@keyframes slideIn {
from {
opacity: ;
transform: translateY(-10px);
}
to {
opacity: 1;
transform: translateY();
}
}
@media (max-width: 480px) {
.yandex-container {
border-radius: 16px;
}
.calculator-body {
padding: 20px;
}
.result-display {
font-size: 48px;
}
.calc-btn {
height: 65px;
font-size: 22px;
}
.buttons-grid {
gap: 12px;
}
}
</style>
</head>
<body>
<div class="yandex-container">
<div class="yandex-header">
<div class="yandex-logo">
<div class="yandex-logo-circle">Я</div>
<div class="yandex-title">Калькулятор</div>
</div>
</div>
<div class="calculator-body">
<div class="notification" id="notificationMessage"></div>
<div class="display-container">
<div class="expression-display" id="expressionDisplay">
<?php
if (!empty($expression)) {
echo htmlspecialchars($expression);
}
?>
</div>
<input type="text"
class="result-display"
id="resultDisplay"
value="<?php echo htmlspecialchars($currentDisplay ?? ''); ?>"
readonly
placeholder="">
</div>
<form method="post" id="calcForm">
<input type="hidden" name="current_value" id="currentValue"
value="<?php echo htmlspecialchars($currentValue ?? ''); ?>">
<input type="hidden" name="previous_value" id="previousValue"
value="<?php echo htmlspecialchars($previousValue ?? ''); ?>">
<input type="hidden" name="current_operator" id="currentOperator"
value="<?php echo htmlspecialchars($currentOperator ?? ''); ?>">
<input type="hidden" name="memory_value" id="memoryValue"
value="<?php echo htmlspecialchars($memoryValue ?? ''); ?>">
<div class="buttons-grid">
<!-- Первый ряд -->
<button type="submit" name="action" value="clear" class="calc-btn btn-clear">
<?php echo (isset($currentValue) && $currentValue != '') ? 'C' : 'AC'; ?>
</button>
<button type="submit" name="action" value="plusminus" class="calc-btn btn-extra">±</button>
<button type="submit" name="action" value="percent" class="calc-btn btn-extra">%</button>
<button type="submit" name="action" value="divide"
class="calc-btn btn-operator <?php echo ($currentOperator == '/') ? 'active' : ''; ?>">÷</button>
<!-- Второй ряд -->
<button type="button" onclick="addNumber('7')" class="calc-btn btn-number">7</button>
<button type="button" onclick="addNumber('8')" class="calc-btn btn-number">8</button>
<button type="button" onclick="addNumber('9')" class="calc-btn btn-number">9</button>
<button type="submit" name="action" value="multiply"
class="calc-btn btn-operator <?php echo ($currentOperator == '*') ? 'active' : ''; ?>">×</button>
<!-- Третий ряд -->
<button type="button" onclick="addNumber('4')" class="calc-btn btn-number">4</button>
<button type="button" onclick="addNumber('5')" class="calc-btn btn-number">5</button>
<button type="button" onclick="addNumber('6')" class="calc-btn btn-number">6</button>
<button type="submit" name="action" value="subtract"
class="calc-btn btn-operator <?php echo ($currentOperator == '-') ? 'active' : ''; ?>">−</button>
<!-- Четвертый ряд -->
<button type="button" onclick="addNumber('1')" class="calc-btn btn-number">1</button>
<button type="button" onclick="addNumber('2')" class="calc-btn btn-number">2</button>
<button type="button" onclick="addNumber('3')" class="calc-btn btn-number">3</button>
<button type="submit" name="action" value="add"
class="calc-btn
U
повтори свой ответ
AI
Вот калькулятор в стиле Яндекса без красного цвета, только с жёлтыми и серыми акцентами:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Яндекс Калькулятор</title>
<meta name="viewport" content="width=device-width, initial-scale=1.">
<style>
:root {
--yandex-yellow: #ffdb4d;
--yandex-yellow-hover: #ffd633;
--yandex-yellow-active: #ffcc00;
--yandex-yellow-dark: #e6b800;
--yandex-gray: #f2f2f2;
--yandex-gray-dark: #e6e6e6;
--yandex-gray-light: #fafafa;
--yandex-text: #000;
--yandex-text-light: #666;
--yandex-border: #eee;
--yandex-shadow: rgba(, , , .1);
}
* {
margin: ;
padding: ;
box-sizing: border-box;
font-family: 'YS Text', 'Helvetica Neue', Arial, sans-serif;
}
body {
background: linear-gradient(135deg, #f8f8f8 %, #ffffff 100%);
min-height: 100vh;
display: flex;
justify-content: center;
align-items: center;
padding: 20px;
}
.yandex-container {
width: 100%;
max-width: 450px;
background: white;
border-radius: 24px;
box-shadow: 10px 40px var(--yandex-shadow);
overflow: hidden;
border: 1px solid var(--yandex-border);
}
.yandex-header {
background: var(--yandex-yellow);
padding: 25px 30px;
display: flex;
align-items: center;
justify-content: space-between;
}
.yandex-logo {
display: flex;
align-items: center;
gap: 15px;
}
.yandex-logo-circle {
width: 40px;
height: 40px;
background: white;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-weight: 700;
font-size: 20px;
color: var(--yandex-yellow-dark);
box-shadow: 2px 8px var(--yandex-shadow);
}
.yandex-title {
font-size: 28px;
font-weight: 700;
color: var(--yandex-text);
text-shadow: 1px 2px rgba(255, 255, 255, .5);
}
.calculator-body {
padding: 30px;
}
.display-container {
background: var(--yandex-gray-light);
border-radius: 16px;
padding: 25px;
margin-bottom: 30px;
border: 2px solid var(--yandex-border);
position: relative;
overflow: hidden;
}
.display-container::before {
content: '';
position: absolute;
top: ;
left: ;
right: ;
height: 4px;
background: var(--yandex-yellow);
}
.expression-display {
font-size: 22px;
color: var(--yandex-text-light);
min-height: 30px;
margin-bottom: 15px;
text-align: right;
word-break: break-all;
font-weight: 400;
}
.result-display {
width: 100%;
border: none;
background: transparent;
font-size: 56px;
color: var(--yandex-text);
text-align: right;
outline: none;
font-weight: 500;
font-family: 'YS Display', 'Helvetica Neue', Arial, sans-serif;
direction: ltr;
}
.result-display::placeholder {
color: var(--yandex-text-light);
opacity: .4;
}
.buttons-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 15px;
margin-bottom: 25px;
}
.calc-btn {
height: 75px;
border: none;
border-radius: 16px;
font-size: 26px;
font-weight: 500;
cursor: pointer;
transition: all .2s cubic-bezier(.4, , .2, 1);
display: flex;
align-items: center;
justify-content: center;
user-select: none;
position: relative;
overflow: hidden;
}
.calc-btn::after {
content: '';
position: absolute;
top: 50%;
left: 50%;
width: ;
height: ;
border-radius: 50%;
background: rgba(255, 255, 255, .3);
transform: translate(-50%, -50%);
transition: width .3s, height .3s;
}
.calc-btn:active::after {
width: 200px;
height: 200px;
}
.calc-btn:hover {
transform: translateY(-3px);
box-shadow: 6px 20px var(--yandex-shadow);
}
.calc-btn:active {
transform: translateY(-1
`php<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Яндекс Калькулятор</title>
<meta name="viewport" content="width=device-width, initial-scale=1.">
<style>
:root {
--yandex-yellow: #ffdb4d;
--yandex-yellow-hover: #ffd633;
--yandex-yellow-active: #ffcc00;
--yandex-yellow-dark: #e6b800;
--yandex-gray: #f2f2f2;
--yandex-gray-dark: #e6e6e6;
--yandex-gray-light: #fafafa;
--yandex-text: #000;
--yandex-text-light: #666;
--yandex-border: #eee;
--yandex-shadow: rgba(, , , .1);
}
* {
margin: ;
padding: ;
box-sizing: border-box;
font-family: 'YS Text', 'Helvetica Neue', Arial, sans-serif;
}
body {
background: linear-gradient(135deg, #f8f8f8 %, #ffffff 100%);
min-height: 100vh;
display: flex;
justify-content: center;
align-items: center;
padding: 20px;
}
.yandex-container {
width: 100%;
max-width: 450px;
background: white;
border-radius: 24px;
box-shadow: 10px 40px var(--yandex-shadow);
overflow: hidden;
border: 1px solid var(--yandex-border);
}
.yandex-header {
background: var(--yandex-yellow);
padding: 25px 30px;
display: flex;
align-items: center;
justify-content: space-between;
}
.yandex-logo {
display: flex;
align-items: center;
gap: 15px;
}
.yandex-logo-circle {
width: 40px;
height: 40px;
background: white;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-weight: 700;
font-size: 20px;
color: var(--yandex-yellow-dark);
box-shadow: 2px 8px var(--yandex-shadow);
}
.yandex-title {
font-size: 28px;
font-weight: 700;
color: var(--yandex-text);
text-shadow: 1px 2px rgba(255, 255, 255, .5);
}
.calculator-body {
padding: 30px;
}
.display-container {
background: var(--yandex-gray-light);
border-radius: 16px;
padding: 25px;
margin-bottom: 30px;
border: 2px solid var(--yandex-border);
position: relative;
overflow: hidden;
}
.display-container::before {
content: '';
position: absolute;
top: ;
left: ;
right: ;
height: 4px;
background: var(--yandex-yellow);
}
.expression-display {
font-size: 22px;
color: var(--yandex-text-light);
min-height: 30px;
margin-bottom: 15px;
text-align: right;
word-break: break-all;
font-weight: 400;
}
.result-display {
width: 100%;
border: none;
background: transparent;
font-size: 56px;
color: var(--yandex-text);
text-align: right;
outline: none;
font-weight: 500;
font-family: 'YS Display', 'Helvetica Neue', Arial, sans-serif;
direction: ltr;
}
.result-display::placeholder {
color: var(--yandex-text-light);
opacity: .4;
}
.buttons-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 15px;
margin-bottom: 25px;
}
.calc-btn {
height: 75px;
border: none;
border-radius: 16px;
font-size: 26px;
font-weight: 500;
cursor: pointer;
transition: all .2s cubic-bezier(.4, , .2, 1);
display: flex;
align-items: center;
justify-content: center;
user-select: none;
position: relative;
overflow: hidden;
}
.calc-btn::after {
content: '';
position: absolute;
top: 50%;
left: 50%;
width: ;
height: ;
border-radius: 50%;
background: rgba(255, 255, 255, .3);
transform: translate(-50%, -50%);
transition: width .3s, height .3s;
}
.calc-btn:active::after {
width: 200px;
height: 200px;
}
.calc-btn:hover {
transform: translateY(-3px);
box-shadow: 6px 20px var(--yandex-shadow);
}
.calc-btn:active {
transform: translateY(-1
U
повтори ответ
AI
Вот калькулятор в стиле Яндекса без красного цвета, только с жёлтыми и серыми акцентами:
Особенности дизайна:
1. Цветовая схема: Только жёлтые и серые оттенки в стиле Яндекса
2. Заголовок: Жёлтая шапка с логотипом "Я"
3. Кнопки:
- Числа: белые с серой рамкой
- Операторы: жёлтые
- Равно: тёмно-жёлтый
- Очистка: серый
4. Память: Отдельная секция с кнопками памяти
5. Анимации: Плавные переходы и эффекты при нажатии
6. Адаптивность: Корректно отображается на мобильных устройствах
Функциональность:
- Все базовые арифметические операции
- Проценты
- Смена знака
- Память (MC, MR, M+, M-)
- Обработка ошибок (деление на ноль)
Калькулятор готов к использованию - сохраните код в файл
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Яндекс Калькулятор</title>
<meta name="viewport" content="width=device-width, initial-scale=1.">
<style>
:root {
--yandex-yellow: #ffdb4d;
--yandex-yellow-hover: #ffd633;
--yandex-yellow-active: #ffcc00;
--yandex-yellow-dark: #e6b800;
--yandex-gray: #f2f2f2;
--yandex-gray-dark: #e6e6e6;
--yandex-gray-light: #fafafa;
--yandex-text: #000;
--yandex-text-light: #666;
--yandex-border: #eee;
--yandex-shadow: rgba(, , , .1);
}
* {
margin: ;
padding: ;
box-sizing: border-box;
font-family: 'YS Text', 'Helvetica Neue', Arial, sans-serif;
}
body {
background: linear-gradient(135deg, #f8f8f8 %, #ffffff 100%);
min-height: 100vh;
display: flex;
justify-content: center;
align-items: center;
padding: 20px;
}
.yandex-container {
width: 100%;
max-width: 450px;
background: white;
border-radius: 24px;
box-shadow: 10px 40px var(--yandex-shadow);
overflow: hidden;
border: 1px solid var(--yandex-border);
}
.yandex-header {
background: var(--yandex-yellow);
padding: 25px 30px;
display: flex;
align-items: center;
justify-content: space-between;
}
.yandex-logo {
display: flex;
align-items: center;
gap: 15px;
}
.yandex-logo-circle {
width: 40px;
height: 40px;
background: white;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-weight: 700;
font-size: 20px;
color: var(--yandex-yellow-dark);
box-shadow: 2px 8px var(--yandex-shadow);
}
.yandex-title {
font-size: 28px;
font-weight: 700;
color: var(--yandex-text);
text-shadow: 1px 2px rgba(255, 255, 255, .5);
}
.calculator-body {
padding: 30px;
}
.display-container {
background: var(--yandex-gray-light);
border-radius: 16px;
padding: 25px;
margin-bottom: 30px;
border: 2px solid var(--yandex-border);
position: relative;
overflow: hidden;
}
.display-container::before {
content: '';
position: absolute;
top: ;
left: ;
right: ;
height: 4px;
background: var(--yandex-yellow);
}
.expression-display {
font-size: 22px;
color: var(--yandex-text-light);
min-height: 30px;
margin-bottom: 15px;
text-align: right;
word-break: break-all;
font-weight: 400;
}
.result-display {
width: 100%;
border: none;
background: transparent;
font-size: 56px;
color: var(--yandex-text);
text-align: right;
outline: none;
font-weight: 500;
font-family: 'YS Display', 'Helvetica Neue', Arial, sans-serif;
direction: ltr;
}
.result-display::placeholder {
color: var(--yandex-text-light);
opacity: .4;
}
.buttons-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 15px;
margin-bottom: 25px;
}
.calc-btn {
height: 75px;
border: none;
border-radius: 16px;
font-size: 26px;
font-weight: 500;
cursor: pointer;
transition: all .2s cubic-bezier(.4, , .2, 1);
display: flex;
align-items: center;
justify-content: center;
user-select: none;
position: relative;
overflow: hidden;
}
.calc-btn::after {
content: '';
position: absolute;
top: 50%;
left: 50%;
width: ;
height: ;
border-radius: 50%;
background: rgba(255, 255, 255, .3);
transform: translate(-50%, -50%);
transition: width .3s, height .3s;
}
.calc-btn:active::after {
width: 200px;
height: 200px;
}
.calc-btn:hover {
transform: translateY(-3px);
box-shadow: 6px 20px var(--yandex-shadow);
}
.calc-btn:active {
transform: translateY(-1px);
}
.btn-number {
background: white;
color: var(--yandex-text);
border: 2px solid var(--yandex-border);
}
.btn-number:hover {
background: var(--yandex-gray);
border-color: var(--yandex-yellow);
}
.btn-operator {
background: var(--yandex-yellow);
color: var(--yandex-text);
font-weight: 600;
border: 2px solid transparent;
}
.btn-operator:hover {
background: var(--yandex-yellow-hover);
border-color: var(--yandex-yellow-active);
}
.btn-operator.active {
background: var(--yandex-yellow-active);
box-shadow: inset 2px 8px var(--yandex-shadow);
}
.btn-equals {
background: var(--yandex-yellow-dark);
color: white;
font-weight: 600;
grid-column: span 2;
border: 2px solid transparent;
}
.btn-equals:hover {
background: var(--yandex-yellow-active);
border-color: var(--yandex-yellow-dark);
}
.btn-clear {
background: var(--yandex-gray-dark);
color: var(--yandex-text);
font-weight: 600;
border: 2px solid transparent;
}
.btn-clear:hover {
background: var(--yandex-gray);
border-color: var(--yandex-border);
}
.btn-extra {
background: var(--yandex-gray);
color: var(--yandex-text);
font-size: 22px;
border: 2px solid transparent;
}
.btn-extra:hover {
background: var(--yandex-gray-dark);
border-color: var(--yandex-border);
}
.btn-zero {
grid-column: span 2;
}
.memory-section {
background: var(--yandex-gray-light);
border-radius: 16px;
padding: 20px;
border: 2px solid var(--yandex-border);
}
.memory-title {
font-size: 18px;
font-weight: 600;
color: var(--yandex-text);
margin-bottom: 15px;
display: flex;
align-items: center;
gap: 10px;
}
.memory-title::before {
content: '💾';
font-size: 20px;
}
.memory-buttons {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 10px;
}
.memory-btn {
padding: 12px;
background: white;
border: 2px solid var(--yandex-border);
border-radius: 12px;
font-size: 16px;
font-weight: 500;
cursor: pointer;
transition: all .2s ease;
text-align: center;
}
.memory-btn:hover {
background: var(--yandex-gray);
border-color: var(--yandex-yellow);
}
.memory-btn.yellow {
background: var(--yandex-yellow);
color: var(--yandex-text);
border-color: transparent;
}
.memory-btn.yellow:hover {
background: var(--yandex-yellow-hover);
}
.yandex-footer {
padding: 20px 30px;
background: var(--yandex-gray-light);
border-top: 1px solid var(--yandex-border);
text-align: center;
color: var(--yandex-text-light);
font-size: 14px;
}
.notification {
background: linear-gradient(90deg, #fff9e6, #fff2cc);
border-left: 4px solid var(--yandex-yellow);
padding: 15px;
border-radius: 8px;
margin-bottom: 20px;
color: var(--yandex-yellow-dark);
font-weight: 500;
display: none;
}
.notification.show {
display: block;
animation: slideIn .3s ease;
}
@keyframes slideIn {
from {
opacity: ;
transform: translateY(-10px);
}
to {
opacity: 1;
transform: translateY();
}
}
@media (max-width: 480px) {
.yandex-container {
border-radius: 16px;
}
.calculator-body {
padding: 20px;
}
.result-display {
font-size: 48px;
}
.calc-btn {
height: 65px;
font-size: 22px;
}
.buttons-grid {
gap: 12px;
}
}
</style>
</head>
<body>
<div class="yandex-container">
<div class="yandex-header">
<div class="yandex-logo">
<div class="yandex-logo-circle">Я</div>
<div class="yandex-title">Калькулятор</div>
</div>
</div>
<div class="calculator-body">
<div class="notification" id="notificationMessage"></div>
<div class="display-container">
<div class="expression-display" id="expressionDisplay">
<?php
if (!empty($expression)) {
echo htmlspecialchars($expression);
}
?>
</div>
<input type="text"
class="result-display"
id="resultDisplay"
value="<?php echo htmlspecialchars($currentDisplay ?? ''); ?>"
readonly
placeholder="">
</div>
<form method="post" id="calcForm">
<input type="hidden" name="current_value" id="currentValue"
value="<?php echo htmlspecialchars($currentValue ?? ''); ?>">
<input type="hidden" name="previous_value" id="previousValue"
value="<?php echo htmlspecialchars($previousValue ?? ''); ?>">
<input type="hidden" name="current_operator" id="currentOperator"
value="<?php echo htmlspecialchars($currentOperator ?? ''); ?>">
<input type="hidden" name="memory_value" id="memoryValue"
value="<?php echo htmlspecialchars($memoryValue ?? ''); ?>">
<div class="buttons-grid">
<!-- Первый ряд -->
<button type="submit" name="action" value="clear" class="calc-btn btn-clear">
<?php echo (isset($currentValue) && $currentValue != '') ? 'C' : 'AC'; ?>
</button>
<button type="submit" name="action" value="plusminus" class="calc-btn btn-extra">±</button>
<button type="submit" name="action" value="percent" class="calc-btn btn-extra">%</button>
<button type="submit" name="action" value="divide"
class="calc-btn btn-operator <?php echo ($currentOperator == '/') ? 'active' : ''; ?>">÷</button>
<!-- Второй ряд -->
<button type="button" onclick="addNumber('7')" class="calc-btn btn-number">7</button>
<button type="button" onclick="addNumber('8')" class="calc-btn btn-number">8</button>
<button type="button" onclick="addNumber('9')" class="calc-btn btn-number">9</button>
<button type="submit" name="action" value="multiply"
class="calc-btn btn-operator <?php echo ($currentOperator == '*') ? 'active' : ''; ?>">×</button>
<!-- Третий ряд -->
<button type="button" onclick="addNumber('4')" class="calc-btn btn-number">4</button>
<button type="button" onclick="addNumber('5')" class="calc-btn btn-number">5</button>
<button type="button" onclick="addNumber('6')" class="calc-btn btn-number">6</button>
<button type="submit" name="action" value="subtract"
class="calc-btn btn-operator <?php echo ($currentOperator == '-') ? 'active' : ''; ?>">−</button>
<!-- Четвертый ряд -->
<button type="button" onclick="addNumber('1')" class="calc-btn btn-number">1</button>
<button type="button" onclick="addNumber('2')" class="calc-btn btn-number">2</button>
<button type="button" onclick="addNumber('3')" class="calc-btn btn-number">3</button>
<button type="submit" name="action" value="add"
class="calc-btn btn-operator <?php echo ($currentOperator == '+') ? 'active' : ''; ?>">+</button>
<!-- Пятый ряд -->
<button type="button" onclick="addNumber('')" class="calc-btn btn-number btn-zero"></button>
<button type="button" onclick="addDecimal()" class="calc-btn btn-extra">.</button>
<button type="submit" name="action" value="equals" class="calc-btn btn-equals">=</button>
</div>
<div class="memory-section">
<div class="memory-title">Память</div>
<div class="memory-buttons">
<button type="submit" name="action" value="memory_clear" class="memory-btn yellow">MC</button>
<button type="submit" name="action" value="memory_recall" class="memory-btn">MR</button>
<button type="submit" name="action" value="memory_add" class="memory-btn">M+</button>
<button type="submit" name="action" value="memory_subtract" class="memory-btn">M-</button>
</div>
</div>
</form>
</div>
<div class="yandex-footer">
Яндекс Калькулятор © 2024
</div>
</div>
<script>
function addNumber(num) {
const currentValue = document.getElementById('currentValue');
const resultDisplay = document.getElementById('resultDisplay');
if (resultDisplay.value === '' || resultDisplay.value === 'Error') {
currentValue.value = num;
resultDisplay.value = num;
} else {
currentValue.value += num;
resultDisplay.value = currentValue.value;
}
updateForm();
}
function addDecimal() {
const currentValue = document.getElementById('currentValue');
const resultDisplay = document.getElementById('resultDisplay');
if (!currentValue.value.includes('.')) {
if (currentValue.value === '' || resultDisplay.value === 'Error') {
currentValue.value = '.';
resultDisplay.value = '.';
} else {
currentValue.value += '.';
resultDisplay.value = currentValue.value;
}
updateForm();
}
}
function updateForm() {
document.getElementById('calcForm').submit();
}
function showNotification(message) {
const notificationDiv = document.getElementById('notificationMessage');
notificationDiv.textContent = message;
notificationDiv.classList.add('show');
setTimeout(() => {
notificationDiv.classList.remove('show');
}, 300);
}
</script>
<?php
session_start();
// Инициализация переменных
$currentValue = $_SESSION['current_value'] ?? '';
$previousValue = $_SESSION['previous_value'] ?? '';
$currentOperator = $_SESSION['current_operator'] ?? '';
$memoryValue = $_SESSION['memory_value'] ?? ;
$currentDisplay = $currentValue ?: '';
$expression = '';
// Обработка действий
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$action = $_POST['action'] ?? '';
switch ($action) {
case 'clear':
$currentValue = '';
$previousValue = '';
$currentOperator = '';
$currentDisplay = '';
break;
case 'plusminus':
if ($currentValue != '') {
if (strpos($currentValue, '-') === ) {
$currentValue = substr($currentValue, 1);
} else {
$currentValue = '-' . $currentValue;
}
$currentDisplay = $currentValue;
}
break;
case 'percent':
if ($currentValue != '') {
$currentValue = (float)$currentValue / 100;
$currentDisplay = $currentValue;
}
break;
// Операторы
case 'add':
case 'subtract':
case 'multiply':
case 'divide':
if (!empty($previousValue) && !empty($currentOperator) && $currentValue != '') {
// Вычисляем предыдущую операцию
calculate();
}
if ($currentValue != '') {
$previousValue = $currentValue;
$currentValue = '';
$currentOperator = $action;
$currentDisplay = '';
$expression = $previousValue . ' ' . getOperatorSymbol($action);
}
break;
case 'equals':
if (!empty($previousValue) && !empty($currentOperator) && $currentValue != '') {
calculate();
}
break;
// Функции памяти
case 'memory_clear':
$memoryValue = ;
break;
case 'memory_recall':
if ($memoryValue != ) {
$currentValue = $memoryValue;
$currentDisplay = $currentValue;
}
break;
case 'memory_add':
if ($currentValue != '') {
$memoryValue += (float)$currentValue;
}
break;
case 'memory_subtract':
if ($currentValue != '') {
$memoryValue -= (float)$currentValue;
}
break;
}
// Сохраняем в сессию
$_SESSION['current_value'] = $currentValue;
$_SESSION['previous_value'] = $previousValue;
$_SESSION['current_operator'] = $currentOperator;
$_SESSION['memory_value'] = $memoryValue;
}
function calculate() {
global $currentValue, $previousValue, $currentOperator, $currentDisplay, $expression;
$num1 = (float)$previousValue;
$num2 = (float)$currentValue;
$result = ;
switch ($currentOperator) {
case 'add':
$result = $num1 + $num2;
break;
case 'subtract':
$result = $num1 - $num2;
break;
case 'multiply':
$result = $num1 * $num2;
break;
case 'divide':
if ($num2 != ) {
$result = $num1 / $num2;
} else {
$currentDisplay = 'Error';
return;
}
break;
}
$expression = $previousValue . ' ' . getOperatorSymbol($currentOperator) . ' ' . $currentValue . ' =';
$currentValue = (string)$result;
$previousValue = '';
$currentOperator = '';
$currentDisplay = $result;
}
function getOperatorSymbol($operator) {
switch ($operator) {
case 'add': return '+';
case 'subtract': return '−';
case 'multiply': return '×';
case 'divide': return '÷';
default: return '';
}
}
?>
</body>
</html>
Особенности дизайна:
1. Цветовая схема: Только жёлтые и серые оттенки в стиле Яндекса
2. Заголовок: Жёлтая шапка с логотипом "Я"
3. Кнопки:
- Числа: белые с серой рамкой
- Операторы: жёлтые
- Равно: тёмно-жёлтый
- Очистка: серый
4. Память: Отдельная секция с кнопками памяти
5. Анимации: Плавные переходы и эффекты при нажатии
6. Адаптивность: Корректно отображается на мобильных устройствах
Функциональность:
- Все базовые арифметические операции
- Проценты
- Смена знака
- Память (MC, MR, M+, M-)
- Обработка ошибок (деление на ноль)
Калькулятор готов к использованию - сохраните код в файл
.php и запустите на сервере с поддержкой PHP.Глубокое мышление
Поиск в интернете