|
|

楼主 |
发表于 2023-12-31 08:51
|
显示全部楼层
本帖最后由 马黑黑 于 2023-12-31 09:30 编辑
代码
- <style>
- #ma {
- margin: 50px auto 0;
- padding: 8px;
- width: fit-content;
- max-width: 296px;
- box-sizing: border-box;
- height: fit-content;
- border-radius: 10px;
- background: #666;
- box-shadow: 2px 4px 8px black;
- }
- #calcMsg, #calcRes {
- padding: 6px;
- color: #eee;
- font-size: 14px;
- word-break: break-all;
- }
- #calcRes {
- text-align: right;
- color: #000;
- font-size: 20px;
- background: #eee;
- }
- #calc {
- display: grid;
- place-items: center;
- grid-template-columns: repeat(4, 70px);
- grid-template-rows: repeat(5, 60px);
- }
- .btn, .clear {
- width: 40px;
- height: 40px;
- border-radius: 50%;
- background: #ccc;
- box-shadow: inset 0 0 10px #000;
- font: normal 20px/40px sans-serif;
- text-align: center;
- user-select: none;
- }
- .btn:hover, .clear:hover {
- background: #aaa;
- }
- .num { color: darkred; font-weight: bold; }
- </style>
- <div id="ma">
- <div id="calcMsg">计算器</div>
- <div id="calcRes">0</div>
- <div id="calc">
- <div class="clear" id="clear">C</div>
- <div class="btn" data-idx="(">(</div>
- <div class="btn" data-idx=")">)</div>
- <div class="clear" id="del">←</div>
- <div class="btn num" data-idx="7">7</div>
- <div class="btn num" data-idx="8">8</div>
- <div class="btn num" data-idx="9">9</div>
- <div class="btn" data-idx="/">÷</div>
- <div class="btn num" data-idx="4">4</div>
- <div class="btn num" data-idx="5">5</div>
- <div class="btn num" data-idx="6">6</div>
- <div class="btn" data-idx="*">×</div>
- <div class="btn num" data-idx="1">1</div>
- <div class="btn num" data-idx="2">2</div>
- <div class="btn num" data-idx="3">3</div>
- <div class="btn num" data-idx="-">-</div>
- <div class="btn num" data-idx="0">0</div>
- <div class="btn" data-idx=".">.</div>
- <div class="btn" id="percent">%</div>
- <div class="btn" data-idx="+">+</div>
- <div class="clear" id="pow2">x²</div>
- <div class="clear" id="pow3">x³</div>
- <div class="clear" id="sqrt">√</div>
- <div class="clear" id="equal" data-idx="=">=</div>
- </div>
- </div>
-
- <script>
- let btns = document.querySelectorAll('.btn');
- let _eval = (fn) => new Function('return ' + fn)();
- btns.forEach(item => {
- item.onclick = () => {
- calcRes.innerText = calcRes.innerText === '0' ? item.dataset.idx : (calcRes.innerText + item.dataset.idx);
- calcMsg.innerText = calcRes.innerText;
- }
- });
- clear.onclick = () => {
- calcMsg.innerText = '计算器';
- calcRes.innerText = '0';
- };
- equal.onclick = () => {
- if(calcMsg.innerText.lastIndexOf('=') != -1) return;
- let str = calcRes.innerText;
- let result = _eval(str);
- calcRes.innerText = num2Fixed(result);
- calcMsg.innerText += '=';
-
- };
- del.onclick = () => {
- calcRes.innerText = calcRes.innerText.slice(0,-1);
- calcMsg.innerText = calcMsg.innerText.slice(0,-1);
- };
- sqrt.onclick = () => {
- let num = calcRes.innerText;
- calcRes.innerText = Math.sqrt(num);
- calcMsg.innerText = `√(${num})=`;
- }
- pow2.onclick = () => {
- let num = calcRes.innerText;
- calcRes.innerText = Math.pow(num,2);
- calcMsg.innerText = `${num}\u00b2=`;
- }
- pow3.onclick = () => {
- let num = calcRes.innerText;
- calcRes.innerText = Math.pow(num,3);
- calcMsg.innerText = `${num}\u00b3=`;
- }
- percent.onclick = () => {
- let num = calcRes.innerText;
- calcRes.innerText = _eval(num/100);
- calcMsg.innerText = num + '/100=';
- };
- let num2Fixed = (res) => {
- let str = typeof(res) === 'number' ? res.toString() : res;
- let ar = str.split('.');
- if(ar.length <= 1) return res;
- if(ar[1].length >= 14) str = str.slice(0,-1);
- return parseFloat(str);
- };
- </script>
复制代码
|
评分
-
| 参与人数 1 | 威望 +50 |
金钱 +100 |
经验 +50 |
收起
理由
|
红影
| + 50 |
+ 100 |
+ 50 |
赞一个! |
查看全部评分
|