zoukankan      html  css  js  c++  java
  • 不完善迷你计算器【转】

    html代码:

    <!DOCTYPE html PUBspanC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>迷你计算器</title>
    <link href="style.css" rel="stylesheet" style="text/css" />
    <script src="calculator.js" type="text/javascript"></script>
    </head>

    <body>
    <!-- 外部的大盒子 -->
    <div id = "box">
    <div id = "top">
    <span class = "clear">C</span>
    <!-- 用于显示用户输入结果 -->
    <div class = "show"></div>
    </div>

    <!-- 计算器按键 -->
    <div id="keys">
    <span>7</span>
    <span>8</span>
    <span>9</span>
    <span class = "operator">+</span>
    <span>4</span>
    <span>5</span>
    <span>6</span>
    <span class = "operator">-</span>
    <span>1</span>
    <span>2</span>
    <span>3</span>
    <span class = "operator">×</span>
    <span>0</span>
    <span>.</span>
    <span class = "eval">=</span>
    <span class = "operator">÷</span>
    </div>
    </div>
    </body>
    </html>

    css代码:

    @charset "utf-8";
    /* CSS Document */
    * { margin:0px;
    padding:0px;
    box-sizing: border-box;
    font: bold 14px Arial;
    }
    /*整个文档流背景的一个扩散*/
    html {
    height: 100%;
    background: white;
    background: radial-gradient(circle, #fff 30%, #ccc);
    background-size: cover;
    }
    /* 定义整个包裹盒子的宽度样式 */
    #box {
    340px;
    margin:120px auto;
    padding:20px 20px 9px;

    background:#9CF;
    background:linear-gradient(#9CF, #8bceec);
    border-radius:4px;
    box-shadow: 0px 4px #009de4, 0px 10px 15px rgba(0, 0, 0, 0.5);
    }


    #top .show {
    212px;
    height:40px;
    float:right;
    margin-right:15px;
    padding:0 10px;
    background: rgba(0, 0, 0, 0.2);
    border-radius: 3px;
    box-shadow: inset 0px 4px rgba(0, 0, 0, 0.2);

    font-size: 17px;
    line-height: 40px;
    color: white;
    text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2);
    text-align: right;
    letter-spacing: 1px;
    }

    /* 清除父级的浮动 */
    #keys, #top {overflow: hidden;}

    /* 定义清除建和其他的数字键以及运算符号键的样式 */
    #keys span, #top span.clear {
    float: left;
    position: relative;
    top: 0;
    cursor: pointer;
    66px;
    height: 36px;
    background: white;
    border-radius: 3px;
    box-shadow: 0px 4px rgba(0, 0, 0, 0.2);
    margin: 0 7px 11px 0;
    color: #888;
    line-height: 36px;
    text-align: center;
    }

    /* 定义符号键的样式 */
    #keys span.operator {
    background: #FFF0F5;
    margin-right: 0;
    }

    /* 鼠标移入所有的span标签显示的效果 */
    #keys span:hover{
    background: #9c89f6;
    box-shadow: 0px 4px #6b54d3;
    color: white;
    }

    #top span.clear {
    background: #ff9fa8;
    box-shadow: 0px 4px #ff7c87;
    color: white;
    }
    /* 鼠标移入清除键所显示的效果 */
    #top span.clear:hover{
    background:#f68991;
    box-shadow:0px 4px #d3545d;
    color:#ffffff;
    }

    #keys span.eval {
    background: #f1ff92;
    box-shadow: 0px 4px #9da853;
    color: #888e5f;
    }

    /* 鼠标移入计算符号键所显示的效果 */
    #keys span.eval:hover {
    background:#abb850;
    box-shadow:0px 4px #717a33;
    color:#ffffff;
    }


    /* 鼠标点击计算器的键过后,让所有的键阴影为0有一个下沉的效果 */
    #keys span:active {
    box-shadow: 0px 0px #6b54d3;
    top: 4px;
    }

    #keys span.eval:active {
    box-shadow: 0px 0px #717a33;
    top: 4px;
    }

    #top span.clear:active {
    top: 4px;
    box-shadow: 0px 0px #d3545d;
    }

     js代码:

    // JavaScript Document
    window.onload = function(){
    //获取所有的键
    var keys = document.querySelectorAll('#box span');
    var operators = ['+','-','*','÷'];
    var decimalAdded = false;

    //给所有的键添加点击事件
    for(var i = 0; i < keys.length; i++) {
    keys[i].onclick = function(e) {
    var input = document.querySelector('.show');
    var inputVal = input.innerHTML;
    var btnVal = this.innerHTML;

    //根据用户点击的键值来判断用什么运算符和输出结果
    if(btnVal == 'C') {
    input.innerHTML = '';
    decimalAdded = false;
    }
    else if(btnVal == '=') {
    var equation = inputVal;
    var lastChar = equation[equation.length - 1];
    equation = equation.replace(/x/g, '*').replace(/÷/g, '/');

    if(operators.indexOf(lastChar) > -1 || lastChar == '.')
    equation = equation.replace(/.$/, '');

    if(equation)
    input.innerHTML = eval(equation);

    decimalAdded = false;
    }

    // IE9+ 下显示
    else if(operators.indexOf(btnVal) > -1) {
    var lastChar = inputVal[inputVal.length - 1];
    if(inputVal != '' && operators.indexOf(lastChar) == -1) 
    input.innerHTML += btnVal;
    else if(inputVal == '' && btnVal == '-') 
    input.innerHTML += btnVal;
    if(operators.indexOf(lastChar) > -1 && inputVal.length > 1) {
    input.innerHTML = inputVal.replace(/.$/, btnVal);
    }

    decimalAdded =false;
    }
    else if(btnVal == '.') {
    if(!decimalAdded) {
    input.innerHTML += btnVal;
    decimalAdded = true;
    }
    }
    else {
    input.innerHTML += btnVal;
    }
    e.preventDefault();

    }
    };

    转载自:http://www.cnblogs.com/m-t-520123/p/6085388.html

  • 相关阅读:
    User Agent
    ASP.NET状态管理 APPlication,Session,Cookie和ViewStat用法
    HttpHandler
    转 此版本的 SQL Server 不支持用户实例登录标志。该连接将关闭“的解决
    跨服务器访问SQLSERVER
    sql字符串函数
    使用aspnet_regsql.exe 创建ASPState数据库,用来保存session会话
    SQL中CONVERT转化函数的用法
    Sql时间函数
    JS创建对象的几种方法
  • 原文地址:https://www.cnblogs.com/zhao-bo/p/6086997.html
Copyright © 2011-2022 走看看