Calculadora con jQuery
En este artículo vamos a ver como crear una calculadora rápida y fácilmente empleando para ello jQuery y CSS3, además de HTML mostrándose con el siguiente aspecto:
<div class="content"> <div class="calculator"> <div class="screen"></div> <input type="hidden" value="" class="outcome" /> <ul class="buttons"> <li class="clear"><a>C</a></li> <li><a href="-" class="val">±</a></li> <li><a href="/" class="val">÷</a></li> <li><a href="*" class="val">×</a></li> <li><a href="7" class="val">7</a></li> <li><a href="8" class="val">8</a></li> <li><a href="9" class="val">9</a></li> <li><a href="-" class="val">-</a></li> <li><a href="4" class="val">4</a></li> <li><a href="5" class="val">5</a></li> <li><a href="6" class="val">6</a></li> <li><a href="+" class="val">+</a></li> <li><a href="1" class="val">1</a></li> <li><a href="2" class="val">2</a></li> <li><a href="3" class="val">3</a></li> <li><a class="equal tall">=</a></li> <li><a href="0" class="val wide shift">0</a></li> <li><a href="." class="val shift">.</a></li> </ul> </div> </div>
Necesitaremos incorporar una hoja de estilos con las siguientes clases:
.content { width:480px; margin:20px auto 0; } .calculator { width:480px; height:auto; padding:10px 0; margin: auto; background:#232323; border:#000 1px solid; border-radius:7px; -webkit-border-radius:7px; -moz-border-radius:7px; box-shadow:rgba(0,0,0,0.4) 0px 2px 5px, inset rgba(255,255,255,0.9) 0px 1px 1px -1px; -webkit-box-shadow:rgba(0,0,0,0.4) 0px 2px 5px, inset rgba(255,255,255,0.9) 0px 1px 1px -1px; -moz-box-shadow:rgba(0,0,0,0.4) 0px 2px 5px, inset rgba(255,255,255,0.9) 0px 1px 1px -1px; background-image:-moz-linear-gradient(top, #333333, #1f1f1f); background-image:-webkit-linear-gradient(top, #333333, #1f1f1f); background-image:linear-gradient(top, #333333, #1f1f1f); overflow: hidden; text-align: center; } .screen { width:424px; height:93px; margin: 12px auto 30px; padding:15px 20px; color:#c0c0c0; text-align: right; font-size: 3em; letter-spacing: 3px; overflow:hidden; border:#000 1px solid; border-radius:7px; -webkit-border-radius:7px; -moz-border-radius:7px; box-shadow:inset rgba(0,0,0,1) 0px 1px 4px, inset rgba(225,225,225,0.3) 0px -2px 4px -2px; -webkit-box-shadow:inset rgba(0,0,0,1) 0px 1px 4px, inset rgba(225,225,225,0.3) 0px -2px 4px -2px; -moz-box-shadow:inset rgba(0,0,0,1) 0px 1px 4px, inset rgba(225,225,225,0.3) 0px -2px 4px -2px; background-image: -moz-linear-gradient(top, #3e3e3e 0%, #303030 100%); background-image: -webkit-linear-gradient(top, #3e3e3e 0%, #303030 100%); background-image: linear-gradient(top, #3e3e3e 0%, #303030 100%); -moz-box-sizing:border-box; -webkit-box-sizing:border-box; box-sizing:border-box; } .buttons { padding:0; width:423px; margin:auto; overflow: hidden; list-style: none; } .buttons li { display:inline; float:left; padding:0px; margin-right:13px; margin-bottom:10px; } .buttons li:nth-child(4n) { margin-right:0; } .buttons a{ display:block; width:95px; height:68px; padding:18px 0 12px; color:#c0c0c0 !important; font-family: "Myriad Pro", Arial, sans-serif; font-size:1.6em; font-weight: 500; letter-spacing: -2px; background-color:#2f2f2f; border: #000 1px solid; border-radius:5px; -webkit-border-radius:5px; -moz-border-radius:5px; text-align: center; text-decoration: none; text-shadow:#000 0px -1px 0px; box-shadow: inset rgba(255,255,255,0.1) 0px 1px 0px, inset rgba(0,0,0,0.2) 0px -2px 2px; -webkit-box-shadow: inset rgba(255,255,255,0.1) 0px 1px 0px, inset rgba(0,0,0,0.2) 0px -2px 2px; -moz-box-shadow: inset rgba(255,255,255,0.1) 0px 1px 0px, inset rgba(0,0,0,0.2) 0px -2px 2px; background-image:-moz-linear-gradient(top, #363636 0%, #313234 40%, #2f2f2f 100%); background-image:-webkit-linear-gradient(top, #363636 0%, #313234 40%, #2f2f2f 100%); background-image:linear-gradient(top, #363636 0%, #313234 40%, #2f2f2f 100%); -moz-box-sizing:border-box; -webkit-box-sizing:border-box; box-sizing:border-box; cursor: pointer; } .buttons a:active{ box-shadow: inset rgba(0,0,0,0.5) 0px 2px 8px; background-image:-moz-linear-gradient(top, #2f2f2f 0%, #363636 100%); background-image:-webkit-linear-gradient(top, #2f2f2f 0%, #363636 100%); background-image:linear-gradient(top, #2f2f2f 0%, #363636 100%); } .tall{height:151px !important;} .wide{width:205px !important;} .shift{margin-top:-78px;} .ctrls{ list-style: none; margin:5px 0 0 20px; padding:0; position: absolute; } .ctrls li{ float:left; display:inline; } .ctrls li a{ display: block; width:18px; height:18px; margin-right:10px; border-radius:100%; box-shadow:rgba(255,255,255,0.3) 0px 0px 1px, inset rgba(0,0,0,1) 0px 1px 2px 1px; background-image: -moz-radial-gradient( 9px -4px, #FFF 0px, #fff 2px, rgba(255,255,255,0) 4px), -moz-linear-gradient(bottom, rgba(255,255,255,0.5) 0%, rgba(255,255,255,0) 100%); background-image: -webkit-radial-gradient( 9px -4px, #FFF 0px, #fff 2px, rgba(255,255,255,0) 4px), -webkit-linear-gradient(bottom, rgba(255,255,255,0.5) 0%, rgba(255,255,255,0) 100%); background-image: radial-gradient( 9px -4px, #FFF 0px, #fff 2px, rgba(255,255,255,0) 4px), linear-gradient(bottom, rgba(255,255,255,0.5) 0%, rgba(255,255,255,0) 100%); }
Y antes de la etiqueta de cierre del <body> deberemos añdir la librería jQuery y las funciones de la calculadora:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> <script> $(function(){ $(".val").click(function(e){ e.preventDefault(); var a = $(this).attr("href"); $(".screen").append(a); $(".outcome").val($(".outcome").val() + a); }); $(".equal").click(function(){ $(".outcome").val(eval($(".outcome").val())); $(".screen").html(eval($(".outcome").val())); }); $(".clear").click(function(){ $(".outcome").val(""); $(".screen").html(""); }); $(".min").click(function(){ $(".cal").stop().animate({width: "0px", height: "0px", marginLeft: "700px", marginTop: "1000px"}, 500); setTimeout(function(){$(".cal").css("display", "none")}, 600); }); $(".close").click(function(){ $(".cal").css("display", "none"); }) }) </script>
Autor
Escrito por Jose Aguilar - Director ejecutivo y tecnológico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.
Tu me podrias explicar como las funciones o como haces para que haga la operación, por favor
Hola,
Si claro, también doy formaciones para ampliar los conocimientos de mis seguidores.
Si te interesa mucho, hagamos una reunión previa para explicarte como funciona. Puedes planificar una cita conmigo a través del siguiente enlace:
https://calendly.com/jose-aguilar-jamodules
Saludos
Hola, me gusta tu codigo, abra una forma de habilitar el teclado numerico para que se realicen las ecuaciones mas rapido
Hola,
Estoy seguro que es posible con Javascript o con el evento keypress() o keyup() de jQuery pero deberás investigarlo.
Saludos
descargo la aplicación que le dejaste en otro comentario y lo abro pero a la hora de usar me tira erro por que podria ser eso? me tira este error
No se encontró tu archivo
Es posible que lo hayan movido o borrado.
ERR_FILE_NOT_FOUND
Hola,
El enlace de descarga funciona.
Saludos
Hola, el problema del archivo que dejó para descargar está en el HTML, donde manda llamar jQuery, le hace falta http antes de las dos diagonales. Sin jQuery funcioando solo hace caso del link y te manda al valor del href, que en este caso es el número u operación.
Espero haberme dado a entender.
Hola, no te funciona porque en la parte donde enlaza a jquery hace falta el http y los dos puntos antes de las dos diagonales, no sé cómo es que en el ejemplo en linea sí funciona, pero en mi caso no funciona sin esos datos, agregalos y prueba.
La explicación a tu error es la siguiente: al no funcional jquery, el botón ejecuta la petición del enlace, cada botón en la calculadora es un elemento de lista que tiene un enlace asociado, este enlace es el número o signo que aparece en la calculadora, por tanto al ejecutar el enlace, te manda al archivo «9», o al archivo «+». Por eso te marca el error ERR_FILE_NOT_FOUND
Que tal Jose, disculpa, la calculadora puede ser utilizada para proyectos web? Me gustaria saber si tienes terminos/condiciones
Es libre
Muchas gracias José
gracias por su aporte fue muy util
saludos
Está curradísima! Te felicito Jose, tienes muy buenas aplicaciones web.
Muchas gracias por compartir el conocimiento!, excelente aporte me fue muy util
Muchas gracias por compartir el conocimiento!, excelente aporte me fue muy util.
ME PODRIAS enviar el codigo de esta aplicaciones por favor…luiscauro@gmail.com
calculadora.zip