<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Neon Calculator</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Segoe UI', sans-serif;
}
body {
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
background: #0a0a0a;
}
.calculator {
background: rgba(255, 255, 255, 0.05);
padding: 25px;
border-radius: 20px;
box-shadow: 0 0 30px rgba(255, 20, 147, 0.2);
width: 400px;
border: 1px solid rgba(255, 255, 255, 0.1);
}
.display {
background: rgba(0, 0, 0, 0.3);
padding: 20px;
border-radius: 10px;
margin-bottom: 25px;
text-align: right;
border: 1px solid rgba(255, 255, 255, 0.1);
}
#current {
font-size: 2.5em;
color: #ff1493;
min-height: 50px;
letter-spacing: 2px;
text-shadow: 0 0 10px rgba(255, 20, 147, 0.3);
}
#result {
font-size: 1.2em;
color: rgba(255, 255, 255, 0.6);
min-height: 30px;
}
.buttons {
display: grid;
grid-template-columns: repeat(5, 1fr);
gap: 12px;
}
button {
padding: 18px;
border: none;
background: rgba(255, 255, 255, 0.08);
color: white;
font-size: 1.1em;
border-radius: 12px;
cursor: pointer;
transition: all 0.3s ease;
position: relative;
overflow: hidden;
}
button:hover {
background: rgba(255, 20, 147, 0.3);
transform: translateY(-2px);
box-shadow: 0 5px 15px rgba(255, 20, 147, 0.2);
}
button:active {
transform: translateY(0);
}
.operator {
background: rgba(255, 20, 147, 0.1);
color: #ff1493;
border: 1px solid rgba(255, 20, 147, 0.3);
}
.equals {
background: #ff1493;
color: white;
border: 1px solid rgba(255, 20, 147, 0.5);
}
.clear {
background: rgba(255, 20, 147, 0.2);
color: #ff69b4;
}
.scientific {
grid-column: span 2;
}
button::before {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(
90deg,
transparent,
rgba(255, 255, 255, 0.2),
transparent
);
transition: 0.5s;
}
button:hover::before {
left: 100%;
}
</style>
</head>
<body>
<!-- Calculator structure remains the same as previous version -->
<div class="calculator">
<div class="display">
<div id="current">0</div>
<div id="result"></div>
</div>
<div class="buttons">
<button class="clear" onclick="clearDisplay()">C</button>
<button class="operator" onclick="appendToDisplay('(')">(</button>
<button class="operator" onclick="appendToDisplay(')')">)</button>
<button class="operator" onclick="appendToDisplay('%')">%</button>
<button class="operator" onclick="appendToDisplay('√')">√</button>
<button class="operator" onclick="appendToDisplay('sin(')">sin</button>
<button class="operator" onclick="appendToDisplay('cos(')">cos</button>
<button class="operator" onclick="appendToDisplay('tan(')">tan</button>
<button class="operator" onclick="appendToDisplay('log(')">log</button>
<button class="operator" onclick="appendToDisplay('ln(')">ln</button>
<button class="operator" onclick="appendToDisplay('^')">x^y</button>
<button onclick="appendToDisplay('7')">7</button>
<button onclick="appendToDisplay('8')">8</button>
<button onclick="appendToDisplay('9')">9</button>
<button class="operator" onclick="appendToDisplay('/')">÷</button>
<button class="operator" onclick="appendToDisplay('Ï€')">Ï€</button>
<button onclick="appendToDisplay('4')">4</button>
<button onclick="appendToDisplay('5')">5</button>
<button onclick="appendToDisplay('6')">6</button>
<button class="operator" onclick="appendToDisplay('*')">×</button>
<button class="operator" onclick="appendToDisplay('e')">e</button>
<button onclick="appendToDisplay('1')">1</button>
<button onclick="appendToDisplay('2')">2</button>
<button onclick="appendToDisplay('3')">3</button>
<button class="operator" onclick="appendToDisplay('-')">-</button>
<button class="operator" onclick="appendToDisplay('!')">!</button>
<button onclick="appendToDisplay('0')">0</button>
<button onclick="appendToDisplay('.')">.</button>
<button class="equals" onclick="calculate()" style="grid-column: span 2">=</button>
<button class="operator" onclick="appendToDisplay('+')">+</button>
</div>
</div>
<script>
// JavaScript remains the same as previous version
let currentDisplay = '0';
let resultDisplay = '';
function updateDisplay() {
document.getElementById('current').textContent = currentDisplay;
document.getElementById('result').textContent = resultDisplay;
}
function appendToDisplay(value) {
if (currentDisplay === '0' && value !== '.') {
currentDisplay = '';
}
currentDisplay += value;
updateDisplay();
}
function clearDisplay() {
currentDisplay = '0';
resultDisplay = '';
updateDisplay();
}
function factorial(n) {
if (n < 0) throw new Error('Negative factorial');
return n <= 1 ? 1 : n * factorial(n - 1);
}
function calculate() {
try {
let expression = currentDisplay
.replace(/√/g, 'Math.sqrt')
.replace(/Ï€/g, Math.PI)
.replace(/e/g, Math.E)
.replace(/sin/g, 'Math.sin')
.replace(/cos/g, 'Math.cos')
.replace(/tan/g, 'Math.tan')
.replace(/log/g, 'Math.log10')
.replace(/ln/g, 'Math.log')
.replace(/\^/g, '**')
.replace(/(\d+)!/g, (_, n) => `factorial(${n})`);
// Handle percentage
expression = expression.replace(/(\d+\.?\d*)%/g, (_, p) => p / 100);
// Evaluate the expression
resultDisplay = eval(expression);
currentDisplay = resultDisplay.toString();
} catch (error) {
resultDisplay = 'Error';
}
updateDisplay();
}
// Handle keyboard input
document.addEventListener('keydown', (e) => {
if (e.key >= '0' && e.key <= '9' || e.key === '.') appendToDisplay(e.key);
else if ('+-*/'.includes(e.key)) appendToDisplay(e.key);
else if (e.key === 'Enter') calculate();
else if (e.key === 'Backspace') clearDisplay();
});
</script>
</body>
</html>
Comments
Post a Comment