diff --git a/src/calculator.css b/src/calculator.css new file mode 100644 index 0000000000000000000000000000000000000000..35f8933aaea13128abcf6a64c2351eb4fc9ad0a4 --- /dev/null +++ b/src/calculator.css @@ -0,0 +1,64 @@ +.calculator { + display: block; + width: 290px; + height: 400px; + margin: auto; +} + +.screen { + background-color: rgb(245, 245, 245); + height: 150px; + width: 100%; + font-size: 30px; + text-align: right; +} + +.screen .prev { + height: 75px; + width: 100%; +} + +.screen .current { + height: 75px; + width: 100%; +} + +.buttons { + margin: auto; + width: 100%; +} + +.buttons button { + width: 50px; + height: 50px; + margin: 9px 2px 0 1px; + font-size: 20px; + color: rgb(113, 113, 113); + border-radius: 10px; + border: none; + background-color: rgb(245, 245, 245); +} + +.buttons .num { + color: black; +} + +.buttons .fuction { + background-color: rgb(233, 240, 255); + color: rgb(105, 139, 242); +} + +.buttons .equal { + float: top; + width: 50px; + height: 110px; + position: relative; + color: white; + background-color: rgb(59, 131, 119); +} + +.buttons .short { + width: 230px; + position: relative; + float: left; +} \ No newline at end of file diff --git a/src/calculator.html b/src/calculator.html new file mode 100644 index 0000000000000000000000000000000000000000..aa13d05686c1327705dbb59aa843ca3ac4e38c03 --- /dev/null +++ b/src/calculator.html @@ -0,0 +1,72 @@ + + + + + + + + 计算器 + + + + + +
+
+ +
+
+
+ +
+ + + + + +
+ +
+ + + + + +
+ +
+ + + + + +
+ +
+ + + + + +
+ +
+ + + + +
+ +
+ + + + +
+ +
+
+ + + + \ No newline at end of file diff --git a/src/calculator.js b/src/calculator.js new file mode 100644 index 0000000000000000000000000000000000000000..dbc143a06ad33bb2bb5216549e3786a4474cb158 --- /dev/null +++ b/src/calculator.js @@ -0,0 +1,125 @@ +const buttonContainer = document.querySelector('.buttons'); +const prevElement = document.querySelector('.prev'); +const currentElement = document.querySelector('.current'); +var currentNumber = '', + prevNumber = '', + sign = ''; +buttonContainer.addEventListener('click', function (e) { + //console.log(e.target); + const type = e.target.dataset.type; + const text = e.target.textContent; + if (type == 'equal') { + calculate(); + } else if (type == 'operate') { + operate(text); + } else if (type == 'delete') { + //console.log("进入判断"); + deletenum(); + } else if (type == 'clear') { + clear(); + } else { + pushNumber(text); + } + updateScreen(); +}); + +function pushNumber(num) { + if (num == 'e') num = Math.E; + if (num == 'Π') num = Math.PI; + currentNumber = currentNumber + num; +} + +function clear() { + currentNumber = ''; + prevNumber = ''; + sign = ''; +} + +function deletenum() { + // console.log("运行函数"); + if (currentNumber.toString().length) { + return currentNumber = currentNumber.toString().slice(0, -1); + } +} + +function operate(text) { + var result = 0; + if (currentNumber == '') return; + //如果用户未输入数字,就输入操作符,直接return + sign = text; + prevNumber = currentNumber; + const prev = Number(prevNumber); + currentNumber = ''; + switch (sign) { + case 'ln': + result = Math.log(prev); + break; + case 'lg': + result = Math.log10(prev); + break; + case 'tan': + result = Math.tan(prev); + break; + case 'cos': + result = Math.cos(prev); + break; + case 'sin': + result = Math.sin(prev); + break; + case '√x': + result = Math.sqrt(prev); + break; + case 'x^2': + result = Math.pow(prev, 2); + break; + case '%': + result = prev / 100; + break; + default: + return; + } + currentNumber = result.toFixed(6); + sign = ''; +} + +function calculate() { + var result = 0; + const prev = Number(prevNumber); + const current = Number(currentNumber); + switch (sign) { + case '+': + result = prev + current; + break; + case '-': + result = prev - current; + break; + case '×': + result = prev * current; + break; + case '÷': + result = prev / current; + break; + case 'x^y': + sign = '^'; + result = Math.pow(prev, current); + break; + default: + return; + } + if (result % 1 == 0) { + currentNumber = result; + } else { + currentNumber = result.toFixed(6); + } + sign = ''; +} + +function updateScreen() { + currentElement.textContent = currentNumber; + //如果用户输入了操作符,那么prevNumber一定有值; + if (sign) { + prevElement.textContent = `${prevNumber} ${sign}`; + } else { + prevElement.textContent = ''; + } +} \ No newline at end of file diff --git a/src/delete/iconfont.css b/src/delete/iconfont.css new file mode 100644 index 0000000000000000000000000000000000000000..e58baa289a65234f76cde06c9c75fcbaffd8afe0 --- /dev/null +++ b/src/delete/iconfont.css @@ -0,0 +1,19 @@ +@font-face { + font-family: "iconfont"; /* Project id 2921783 */ + src: url('iconfont.woff2?t=1636343299487') format('woff2'), + url('iconfont.woff?t=1636343299487') format('woff'), + url('iconfont.ttf?t=1636343299487') format('truetype'); +} + +.iconfont { + font-family: "iconfont" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-shanchu:before { + content: "\e620"; +} + diff --git a/src/delete/iconfont.js b/src/delete/iconfont.js new file mode 100644 index 0000000000000000000000000000000000000000..30977780f20b1ee2a5611fd2e0fa939d09ef2b7d --- /dev/null +++ b/src/delete/iconfont.js @@ -0,0 +1 @@ +!function(e){var t,n,o,i,c,d='',a=(a=document.getElementsByTagName("script"))[a.length-1].getAttribute("data-injectcss"),l=function(e,t){t.parentNode.insertBefore(e,t)};if(a&&!e.__iconfont__svg__cssinject__){e.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(e){console&&console.log(e)}}function s(){c||(c=!0,o())}function r(){try{i.documentElement.doScroll("left")}catch(e){return void setTimeout(r,50)}s()}t=function(){var e,t;(t=document.createElement("div")).innerHTML=d,d=null,(e=t.getElementsByTagName("svg")[0])&&(e.setAttribute("aria-hidden","true"),e.style.position="absolute",e.style.width=0,e.style.height=0,e.style.overflow="hidden",t=e,(e=document.body).firstChild?l(t,e.firstChild):e.appendChild(t))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(t,0):(n=function(){document.removeEventListener("DOMContentLoaded",n,!1),t()},document.addEventListener("DOMContentLoaded",n,!1)):document.attachEvent&&(o=t,i=e.document,c=!1,r(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,s())})}(window); \ No newline at end of file diff --git a/src/delete/iconfont.json b/src/delete/iconfont.json new file mode 100644 index 0000000000000000000000000000000000000000..f9dc26b2f0879144e96aa2d88f13f9b554d6d2b6 --- /dev/null +++ b/src/delete/iconfont.json @@ -0,0 +1,16 @@ +{ + "id": "2921783", + "name": "no name", + "font_family": "iconfont", + "css_prefix_text": "icon-", + "description": "", + "glyphs": [ + { + "icon_id": "7434461", + "name": "删除", + "font_class": "shanchu", + "unicode": "e620", + "unicode_decimal": 58912 + } + ] +} diff --git a/src/delete/iconfont.ttf b/src/delete/iconfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..48b4536aa1393b39d638b37ae6fd79847b50f3c6 Binary files /dev/null and b/src/delete/iconfont.ttf differ diff --git a/src/delete/iconfont.woff b/src/delete/iconfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..b19919a052e55136c5718793e4511552c6289fd9 Binary files /dev/null and b/src/delete/iconfont.woff differ diff --git a/src/delete/iconfont.woff2 b/src/delete/iconfont.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..4ae652acc9bf4112ed2cf193119b21a238f7a167 Binary files /dev/null and b/src/delete/iconfont.woff2 differ