Calculadora básica desarrollada como parte del proyecto final de la sección Fundamentos del Proyecto Odin. Esta calculadora permite realizar operaciones aritméticas básicas con una experiencia de usuario moderna, fluida y accesible. Está construida con HTML, CSS y JavaScript, siguiendo buenas prácticas y cubriendo funcionalidades clave como soporte para teclado, decimales y retroceso.
- ✔️ Operaciones básicas: suma, resta, multiplicación y división.
- ✔️ Manejo de errores: prevención de división por cero con mensajes personalizados.
- ✔️ Soporte para números decimales con restricción de un solo punto decimal.
- ✔️ Función de retroceso (backspace) para borrar el último carácter ingresado.
- ✔️ Botón para limpiar toda la operación actual.
- ✔️ Compatibilidad completa con el teclado (números, operadores, enter, punto, delete y retroceso).
- ✔️ Resultados redondeados a 6 decimales para mayor precisión.
- ✔️ Diseño moderno y responsivo utilizando Flexbox.
- ✔️ Código modular, limpio y comentado para facilitar su comprensión y mantenimiento.
- HTML5: Estructura semántica y accesible.
- CSS3: Estilizado moderno con Flexbox para una interfaz responsiva.
- JavaScript (ES6+): Lógica funcional, control de flujo, eventos y soporte para teclado.
calculadora-odin/
├── index.html
├── style.css
├── script.js
└── README.md
-
Clona este repositorio:
git clone https://github.com/Ayfos/calculadora-js.git
-
Accede a la carpeta del proyecto:
cd calculadora-js
-
Abre el archivo
index.html
en tu navegador favorito.
Puedes ver una demo en vivo aquí
(Si el enlace no funciona, abre el archivo index.html
localmente en tu navegador)
Este proyecto me permitió consolidar conocimientos adquiridos durante la sección de Fundamentos del Proyecto Odin, incluyendo:
- Manipulación y actualización dinámica del DOM.
- Gestión de eventos mediante
addEventListener
. - Uso de funciones para estructurar la lógica de forma modular y reutilizable.
- Control de errores y validaciones para mejorar la experiencia de usuario.
- Implementación del soporte para entrada por teclado.
- Separación de responsabilidades entre estructura, estilo y comportamiento (HTML/CSS/JS).
- Mejora del flujo de interacción con estado interno (
firstNumber
,operator
, etc).
¡Las contribuciones son bienvenidas! Si tienes sugerencias, mejoras o encuentras algún error, no dudes en abrir un issue o enviar un pull request.