巨簡單巨醜的計算器(寫的我快自閉了)
阿新 • • 發佈:2019-02-28
如何 res 點擊事件 樣式 body osi absolute shadow styles
學習前端已有兩月有余,去掉寒假劃水也學了一個多月了,
還是弱的可以。寫個計算器遇到了一堆問題,我真是個弟弟...
把問題和解決方法都塞在註釋裏了,小林要常回來看看
css樣式我真的8想寫了,就先這樣醜醜的放著吧
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Page Title</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" media="screen" href="main.css">
<style>
*{
padding: 0;
margin: 0;
}
html,body{
height: 100%;
width: 100%;
}
#container{
margin: 0 auto;
/* position: absolute; */
/* puzzle1:絕對定位與外邊距? */
height: 40%;
width: 35%;
/* puzzle2:如何使用百分比? 成了!給html與body均設置寬高100%*/
border: 2px solid aqua;
background-color: antiquewhite;
}
input{
/* margin-top: 5%; */
display: inline-block;
/* margin:0 auto; */
/* margin:auto可以做到水平居中,但是有個前提條件就是,這個
標簽必須是塊狀元素,並且有個確定的寬度,百分比的寬度也行; */
margin-top: 3%;
margin-left: 1.5%;
/* 百分比是相對於寬度的 */
height: 13%;
width: 80%;
/* 其實這裏用px比較好,因為如果縮放網頁到一定程度輸入框就消失了
還是要去橙旭園咨詢下 */
}
/*input:focus{
box-shadow: 1px 1px ;
}自帶focus??*/
#clear{
display: inline-block;
/* display是不繼承的 */
background-color: aquamarine;
/* position: absolute;再做一些修改就可以無論怎麽樣縮放網頁,清除按鈕都和輸入框在同一行上 */
padding: 2px;
border: 1px solid #dddddd;
height: 14%;
margin-left: 1px;
margin-top: 3%;
width: 15%;
font-size: 18px;
margin-bottom: 3%;
}
#clear:hover{
border: 1px solid seagreen;
box-shadow: 1px 1px sandybrown;
/* 註意有兩個必須有的值 */
}
#btn{
background-color:turquoise;
padding-left: 5%;
/* ???為什麽會導致btn這個div向右膨脹5%??? */
/* width: 100%; */
/* 為什麽把寬度註釋掉就可以了欸 */
/* 如果設置了100%,再加上邊距,就會變成105%的寬度~ */
/* html元素寬度不具有繼承特性,塊級元素(block)的寬度會占據一整行(一整行父元素的寬度),
所以看似繼承了,實則不是。
要讓一個元素的寬度根據內容撐開,只要設置其display不為塊級元素,不設置寬度就可以了 */
height: 65%;
/* 百分比???? */
/* 百分比是父元素內容的百分比,去掉內邊距等之後的部分! */
padding-top: 5%;
}
#btn .num,.calc,.result{
display: inline-block;
height: 20%;
width: 20%;
background-color: white;
border: 1px solid seagreen;
}
/* .num,.calc,.result:hover{
box-shadow: 3px 3px orange;
border: 1px solid darkorange;
} 錯誤寫法,會解析為“為num類”和“calc”類添加新的常規樣式,並(只)為“result類”添加偽類 */
.num:hover{
box-shadow: 2px 2px orange;
border: 1px solid darkorange;
}
.calc:hover{
box-shadow: 2px 2px orange;
/* 用inset制造內嵌陰影 */
border: 1px solid darkorange;
}
.result:hover{
box-shadow: 2px 2px orange;
border: 1px solid darkorange;
}
</style>
</head>
<body>
<div id="container">
<input id="input" placeholder="在此輸入數字">
<button id="clear" value="clear" onclick="cle()">清除</button>
<br>
<div id="btn">
<button value="7" class="num" onclick="get(this.value)">7</button>
<button value="8" class="num" onclick="get(this.value)">8</button>
<button value="9" class="num" onclick="get(this.value)">9</button>
<button value="+" class="calc" id="add" onclick="get(this.value)">+</button>
<br>
<button value="4" class="num" onclick="get(this.value)">4</button>
<button value="5" class="num" onclick="get(this.value)">5</button>
<button value="6" class="num" onclick="get(this.value)">6</button>
<button value="-" class="calc" id="sub" onclick="get(this.value)">-</button>
<br>
<button value="1" class="num" onclick="get(this.value)">1</button>
<button value="2" class="num" onclick="get(this.value)">2</button>
<button value="3" class="num" onclick="get(this.value)">3</button>
<button value="*" class="calc" id="mul" onclick="get(this.value)">*</button>
<br>
<button value="." class="num" onclick="get(this.value)">.</button>
<button value="0" class="num" onclick="get(this.value)">0</button>
<button value="/" class="calc" id="div" onclick="get(this.value)">/</button>
<button value="=" class="result" id="re" >=</button>
</div>
</div>
<script>
// console.log(eval(2+1));
//獲取運算符元素
function get(num){
var show = document.getElementById("input");
show.value += num;
}
var clear_btn = document.getElementById("clear");
// clear_btn.onclick = clear;
// 如果把點擊事件綁定在清除按鈕的HTML中會失效:在script中使用事件綁定或事件監聽器方可
//原因:...clear是保留字...,也就是說這三種方式都可以,打擾了,我是弟弟
function cle(){
var show = document.getElementById("input");
show.value = "";
}
//
var result_btn = document.getElementById("re");
function calculates(){
var result = 0;
var temp;
var show = document.getElementById("input");
temp = show.value;
result = eval(temp);
show.value = result;
}
result_btn.addEventListener("click",calculates,false);
</script>
</body>
</html>
巨簡單巨醜的計算器(寫的我快自閉了)