ISWAVLEMETI.COM

ისწავლე მეტი რაც არიცი
class="buttons">
🎧 ონლაინ დახმარება
Support
ჩვენი ოპერატორი მზადაა
დაგეხმაროთ ნებისმიერ დროს.
აირჩიეთ თქვენთვის სასურველი მეთოდი
ონლაინ დახმარება
Person 1
Person 2
Person 3
Person 4
Person 5
0%
წყაროს ინფორმაცია

კალკულიატორი
კატეგორია: სკრიპტები/
ატვირთა: ianoiano242424
დამატების დრო: 17.01.2026 / 03:31
ნანახია: 552

[spoiler][/spoiler]




Code


<!DOCTYPE html>

<html lang="ka">

<head>

  <meta charset="UTF-8" />

  <meta name="viewport" content="width=device-width, initial-scale=1" />

  <title>კალკულატორი</title>

  <style>

  :root{

  --bg: #0e0e10; /* გვერდის ფონი */

  --panel: #16161a; /* კალკულატორის კორპუსი */

  --key: #222227; /* სტანდარტული ღილაკი */

  --key-acc: #2b2b32; /* დამხმარე ღილაკები (AC, %, ⌫) */

  --key-op: #3a2a1a; /* ოპერატორები */

  --op-active: #c46a00; /* აქტიური ოპერატორი */

  --eq: #ff7a00; /* = ღილაკი */

  --text: #ffffff; /* თეთრი წარწერები */

  --muted: #c9cad1; /* რბილი ტექსტი */

  --border: #2a2a31; /* ჩარჩოები */

  --shadow: 0 6px 30px rgba(0,0,0,.35);

  }

  *{box-sizing:border-box}

  body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial; background:var(--bg); color:var(--text); display:grid; place-items:center; min-height:100vh;}



  .wrap{width:min(92vw,420px);}

  .hint{color:var(--muted); font-size:12px; margin:10px 2px; display:flex; justify-content:space-between}



  .calc{background:var(--panel); border:1px solid var(--border); border-radius:22px; box-shadow:var(--shadow); overflow:hidden}

  .display{ padding:22px 18px 10px; background:linear-gradient(180deg, rgba(255,255,255,0.02), rgba(0,0,0,0)); text-align:right}

  .screen{ font-variant-numeric:tabular-nums; font-weight:700; line-height:1.2; word-break:break-word; color:var(--text); font-size:36px; min-height:2.2em }



  .keys{ display:grid; grid-template-columns:repeat(4,1fr); gap:10px; padding:14px; background:rgba(255,255,255,0.02) }

  button{ appearance:none; border:none; border-radius:16px; padding:16px 0; font-size:20px; color:var(--text); background:var(--key); cursor:pointer; box-shadow:inset 0 -2px 0 rgba(0,0,0,.25); transition:transform .03s ease, filter .15s ease, background .2s}

  button:active{ transform:scale(.99) }

  button:hover{ filter:brightness(1.05) }

  .acc{ background:var(--key-acc) }

  .op{ background:var(--key-op) }

  .op.active{ outline:2px solid var(--op-active) }

  .eq{ background:var(--eq); color:#131314; font-weight:700 }



  .span-2{ grid-column:span 2; }



  .kbd{ display:inline-block; border:1px solid var(--border); padding:2px 6px; border-radius:6px; color:var(--muted) }

  .footer{ color:var(--muted); font-size:12px; margin:8px 2px }

  </style>

</head>

<body>

  <div class="wrap" id="root" tabindex="0" aria-label="კალკულატორი">

  <div class="hint"><span>კლავიატურაც მუშაობს</span><span id="op-indicator"></span></div>



  <div class="calc">

  <div class="display">

  <div id="screen" class="screen">0</div>

  </div>

  <div class="keys">

  <button class="acc" data-action="clear">AC</button>

  <button class="acc" data-action="sign">±</button>

  <button class="acc" data-action="percent">%</button>

  <button class="op" data-op="/">÷</button>



  <button data-digit>7</button>

  <button data-digit>8</button>

  <button data-digit>9</button>

  <button class="op" data-op="*">×</button>



  <button data-digit>4</button>

  <button data-digit>5</button>

  <button data-digit>6</button>

  <button class="op" data-op="-">-</button>



  <button data-digit>1</button>

  <button data-digit>2</button>

  <button data-digit>3</button>

  <button class="op" data-op="+">+</button>



  <button class="span-2" data-digit>0</button>

  <button data-dot>. </button>

  <button class="eq" data-action="equals">=</button>



  <button class="span-2 acc" data-action="back">⌫</button>

  </div>

  </div>



  <div class="footer">

  <span class="kbd">Enter/ =</span> გამოითვლის · <span class="kbd">Backspace</span> წაშლა · <span class="kbd">Esc</span> AC

  </div>

  </div>



  <script>

  (function(){

  const screen = document.getElementById('screen');

  const root = document.getElementById('root');

  const opIndicator = document.getElementById('op-indicator');

  let first = null; // number|null

  let op = null; // '+','-','*','/'|null

  let waiting = false; // ველოდებით მეორე ოპერანდს



  function setDisplay(v){ screen.textContent = v; }

  function getDisplay(){ return screen.textContent; }



  function inputDigit(d){

  let cur = getDisplay();

  if(waiting){ cur = '0'; waiting=false; }

  if(cur === '0') cur = d; else cur += d;

  if(cur.replace('-', '').length > 14) return; // ლიმიტი

  setDisplay(cur);

  }



  function inputDot(){

  let cur = getDisplay();

  if(waiting){ cur = '0'; waiting=false; }

  if(!cur.includes('.')) setDisplay(cur + '.');

  }



  function clearAll(){ first=null; op=null; waiting=false; setDisplay('0'); updateOpUI(); }

  function back(){ const cur=getDisplay(); setDisplay(cur.length>1? cur.slice(0,-1):'0'); }

  function toggleSign(){ const cur=getDisplay(); if(cur!== '0') setDisplay(cur.startsWith('-')? cur.slice(1): '-' + cur); }

  function percent(){ const n=parseFloat(getDisplay()); if(!isNaN(n)) setDisplay(trim(n/100)); }



  function chooseOperator(next){

  const input = parseFloat(getDisplay());

  if(first===null){ first = input; }

  else if(op!==null && !waiting){ first = compute(first, input, op); setDisplay(String(trim(first))); }

  op = next; waiting = true; updateOpUI();

  }



  function equals(){

  if(op===null || first===null) return; const input=parseFloat(getDisplay());

  const result=compute(first,input,op);

  setDisplay(String(trim(result))); first=null; op=null; waiting=false; updateOpUI();

  }



  function compute(a,b,operator){

  switch(operator){

  case '+': return a+b;

  case '-': return a-b;

  case '*': return a*b;

  case '/': return b===0 ? NaN : a/b;

  default: return b;

  }

  }

  function trim(n){ return parseFloat(n.toFixed(10)); }



  function updateOpUI(){

  opIndicator.textContent = op ? `ოპერატორი: ${op}` : '';

  document.querySelectorAll('.op').forEach(btn=>{

  btn.classList.toggle('active', btn.dataset.op===op);

  });

  }



  // Mouse/touch

  document.querySelectorAll('[data-digit]').forEach(btn=>{

  btn.addEventListener('click', ()=> inputDigit(btn.textContent.trim()));

  });

  document.querySelector('[data-dot]').addEventListener('click', inputDot);

  document.querySelector('[data-action="clear"]').addEventListener('click', clearAll);

  document.querySelector('[data-action="back"]').addEventListener('click', back);

  document.querySelector('[data-action="sign"]').addEventListener('click', toggleSign);

  document.querySelector('[data-action="percent"]').addEventListener('click', percent);

  document.querySelector('[data-action="equals"]').addEventListener('click', equals);

  document.querySelectorAll('.op').forEach(btn=>{

  btn.addEventListener('click', ()=> chooseOperator(btn.dataset.op));

  });



  // Keyboard

  root.focus();

  root.addEventListener('keydown', (e)=>{

  const k=e.key;

  if(/^[0-9]$/.test(k)) return void inputDigit(k);

  if(k==='.') return void inputDot();

  if(k==='+'||k==='-'||k==='*'||k==='/') return void chooseOperator(k);

  if(k==='Enter' || k==='=') return void equals();

  if(k==='Backspace') return void back();

  if(k==='%') return void percent();

  if(k==='Escape') return void clearAll();

  });

  })();

  </script>

</body>

</html>



🎬 ვიდეო ფლეიერი

გთხოვთ, შედით საიტზე ან დარეგისტრირდით რომ დაწეროთ კომენტარი.

📝 რეგისტრაცია
🎧 ონლაინ დახმარება
ჩვენი ოპერატორი მზადაა
დაგეხმაროთ ნებისმიერ დროს.
აირჩიეთ თქვენთვის სასურველი მეთოდი
!
ადმინისტრატორის შეტყობინება
📄 გთხოვთ დაელოდოთ რამდენიმე წამი...
📢 მიმდინარეობს გვერდის ჩატვირთვა...
🎨დიზაინის განახლება
😊1საიტის დიზაინი წარმატებით განახლდა.
✨2გაუმჯობესდა ვიზუალი და ნავიგაცია.
🚀3დაემატა ახალი ელემენტები.
💙4გისურვებთ სასიამოვნო გამოყენებას.