国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

純HTML+CSS+JS編寫的計算器應用

開發 前端
之前偶然看到一個公司的筆試題,題目如下:用HTML5、CSS3、JavaScript,做一個網頁,實現如下圖形式計算器。

一道筆試題

之前偶然看到一個公司的筆試題,題目如下:

用HTML5、CSS3、JavaScript,做一個網頁,實現如下圖形式計算器

 

具體要求:

  1. 有且只有一個文件:index.html。不允許再有其他文件,不允許再有單獨的CSS、JS、PNG、JPG文件。
  2. 運行環境為 Google Chrome。
  3. 必須支持標準的四則運算。例如:1+2*3=7。
  4. 請在收到郵件的48小時內獨立完成本測試,并回復本郵件。

一道筆試題引發的一個練手項目

花了一點時間寫好的第一版,符合了筆試題的要求。后來左看右看覺得還可以改進做的更好,于是給它不斷的改進,加新功能等,這樣下來沒完沒了,利用業余時間一點一點的寫,從剛開始的網頁版,到后來做響應式的移動版,再到現在的移動App,短短續續大概寫了3個月吧。

項目地址

最終版的計算器,項目地址和預覽圖片在 GitHub:https://github.com/dunizb/sCalc。

功能說明

最終版的功能如下:

  1. 界面布局采用CSS3 的 Flex box布局
  2. 內置兩套主題可切換
  3. 計算歷史記錄顯示
  4. 左滑右滑可以切換單手模式(App)
  5. 當輸入手機號碼后長按等于號可以撥打手機號碼(App)
  6. 版本更新檢查(App)

界面布局

由于這個項目只是練手,所以采用了HTML5個CSS3技術,也不打算兼容IE等低版本瀏覽器,所以直接使用CSS3提供的Flexbox布局方式。并且使用rem單位來進行自動計算尺寸。

計算計算歷史記錄顯示功能,使用HTML5提供的本地存儲功能之Local Storage,為了方便使用Local Storage,對它進行了簡單的封裝(見js/common.js文件)使之key值按一定規律生產,方便管理。

 

key由appName+id組成,id是自動增長不重復的,可以按id和appName刪除一條記錄,輸入*則全部刪除。

打包APP

移動Web版計算器寫完后,又想把他做成APP在手機上運行,由于本人沒用過混合APP諸如ionic之類的框架,所以參考了一下,選擇了Hbuild來進行開發和APP的打包,非常方便。(HBuild).

單手模式

左滑右滑可以切換單手模式,這就需要移動端的touch事件了,使用如下代碼判斷是左滑還是右滑:

  1. /** 單手模式 */ 
  2.  
  3. function singleModel(){ 
  4.  
  5.     var calc = document.getElementById("calc"); 
  6.  
  7.     var startX = 0,moveX = 0,distanceX = 0; 
  8.  
  9.     var distance = 100;   
  10.  
  11.     var width = calc.offsetWidth; 
  12.  
  13.     //滑動事件 
  14.  
  15.     calc.addEventListener("touchstart",function(e){ 
  16.  
  17.         startX = e.touches[0].clientX; 
  18.  
  19.     }); 
  20.  
  21.     calc.addEventListener("touchmove",function(e){ 
  22.  
  23.         moveX = e.touches[0].clientX; 
  24.  
  25.         distanceX = moveX - startX; 
  26.  
  27.         isMove = true
  28.  
  29.     }); 
  30.  
  31.     window.addEventListener("touchend",function(e){ 
  32.  
  33.         if(Math.abs(distanceX) > width/3 && isMove){ 
  34.  
  35.             if( distanceX > 0 ){ 
  36.  
  37.                 positionFun("right");        //右滑 
  38.  
  39.             }else
  40.  
  41.                 positionFun("left");          //左滑 
  42.  
  43.             } 
  44.  
  45.         } 
  46.  
  47.         startY = moveY = 0; 
  48.  
  49.         isMove = false
  50.  
  51.     });   
  52.  
  53.  

如果是左滑,就position:absolut;left:0,bottom:0,再把最外層DIV縮小到80%,這樣就實現了左滑計算器縮小移動到左下角。右滑道理一樣。

電話撥打功能

當輸入手機號碼后長按等于號可以撥打手機號碼。這個功能沒什么神奇,在移動Web上會對那些看起來像是電話號碼的數字處理為電話鏈接,比如:

  • 7位數字,形如:1234567
  • 帶括號及加號的數字,形如:(+86)123456789
  • 雙連接線的數字,形如:00-00-00111
  • 11位數字,形如:13800138000

可能還有其他類型的數字也會被識別。我們可以通過如下的meta來開啟電話號碼的自動識別:

  1. <meta name="format-detection" content="telephone=yes" /> 

開啟電話功能

  1. <a href="tel:123456">123456</a> 

開啟短信功能:

  1. <a href="sms:123456">123456</a> 

但是,在Android系統上,只能調用系統的撥號界面,在iOS上則能調過這一步直接把電話撥打出去。

版本更新檢查

在關于頁面,有一個版本更新檢查按鈕,就能檢查是否有新版本,這個功能的原理是發送一個JSOPN請求去檢查服務器上的JSON文件,比對版本號,如果服務器上的版本比APP的版本高則會提示有新版本可以下載。

客戶端JavaScript代碼:

  1. function updateApp(){ 
  2.  
  3.     //檢查新版本 
  4.  
  5.     var updateApp = document.getElementById("updateApp"); 
  6.  
  7.     updateApp.onclick = function(){ 
  8.  
  9.         var _this = this; 
  10.  
  11.         $.ajax({ 
  12.  
  13.             type:'get'
  14.  
  15.             url:'http://duni.sinaapp.com/demo/app.php?jsoncallback=?'
  16.  
  17.             dataType:'jsonp'
  18.  
  19.             beforeSend : function(){ 
  20.  
  21.                 _this.innerHTML = "<i class='iconfont updateAppIcon updateAppIconRotate'></i> 正在檢查新版本..."
  22.  
  23.             }, 
  24.  
  25.             success:function(data){ 
  26.  
  27.                 var newVer = data[0].version; 
  28.  
  29.                 if(newVer > appConfig.version){ 
  30.  
  31.                     var log = data[0].log; 
  32.  
  33.                     var downloadUrl = data[0].downloadUrl; 
  34.  
  35.                     if(confirm("檢查到新版本【"+newVer+"】,是否立即下載?\n 更新日志:\n " + log)){ 
  36.  
  37.                         var a = document.getElementById("telPhone"); 
  38.  
  39.                         a.href = downloadUrl; 
  40.  
  41.                         a.target = "_blank"
  42.  
  43.                         a.click(); 
  44.  
  45.                     } 
  46.  
  47.                 }else
  48.  
  49.                     alert("你很潮哦,當前已經是最新版本!"); 
  50.  
  51.                 } 
  52.  
  53.                 _this.innerHTML = "<i class='iconfont updateAppIcon'></i> 檢查新版本"
  54.  
  55.             }, 
  56.  
  57.             error:function(msg){ 
  58.  
  59.                 _this.innerHTML = "<i class='iconfont updateAppIcon'></i> 檢查新版本"
  60.  
  61.                 alert("檢查失?。?quot;+msg.message); 
  62.  
  63.             } 
  64.  
  65.         }); 
  66.  
  67.     } 
  68.  

 

服務端JSON:

  1.  
  2.     { 
  3.  
  4.         "version":"3.1.0"
  5.  
  6.         "downloadUrl":"http://dunizb.b0.upaiyun.com/demo/app/myCalc-3.1.0.apk"
  7.  
  8.         "hashCode":"20160812224616"
  9.  
  10.         "log":"1.新增切換主題功能 \n 2.新增單手切換模式功能 \n 3.調整UI " 
  11.  
  12.     } 
  13.  

 

下個版本計劃

當前3.1.0版本還存在一些問題:

  1. 由于JS本身存在計算浮點數精度丟失問題,所以這個問題在項目中同意存在,需要自己去處理這個問題
  2. 由于使用了第三方的天氣接口,用了jquery.Ajax方法,所以違背了使用純原生寫的初衷。

所以下個版本的開發計劃為:

  1. 解決浮點數計算精度問題
  2. 把獲取天氣信息的jquery.Ajax方法替換為原生JavaScript代碼,自己封裝JSONP請求函數
  3. 使用面向對象方式重構APP 
責任編輯:龐桂玉 來源: 前端大全
相關推薦

2022-03-10 14:57:35

ArkUIets項目開發鴻蒙

2017-09-05 16:43:47

Electron桌面計算器

2022-08-09 16:01:24

應用開發鴻蒙

2022-03-17 16:04:16

Text文本組件Button組件Column

2022-03-14 15:36:34

Row容器組件Column容器組件鴻蒙

2011-09-16 14:13:15

Windows7計算器

2015-04-24 10:05:15

HTML+CSS阿童木頭像

2012-03-16 20:33:20

iPhone

2022-07-11 16:19:22

css屬性鴻蒙

2013-03-11 10:30:56

CSSWeb

2013-05-23 15:06:22

Android開發體重計算器移動應用

2011-03-29 13:45:55

HTMLCSSjavascript

2010-08-27 15:16:26

htmlbodyCSS

2016-12-12 13:41:37

iOS簡易加法開發

2010-01-15 19:12:36

Linux計算器

2022-03-02 15:35:57

UI界面容器組件鴻蒙

2012-05-25 10:31:44

HTML5

2023-04-17 09:08:27

CSS計時器

2019-03-08 14:53:54

Windows 10計算器微軟

2024-01-31 08:33:06

C++編程計算器
點贊
收藏

51CTO技術棧公眾號

成人片免费看| 99精品在免费线偷拍| 国产精品一区二区黑丝| 日韩视频免费看| 在线观看免费网站| 国产成人精品免费| 国产精品成人播放| 午夜不卡影院| 日韩欧美高清dvd碟片| 1069男同网址| 国内久久精品视频| 久久亚洲精品欧美| 亚洲精品进入| 欧美日韩国产二区| 香蕉久久久久久| 日韩av一区二区在线| 日本在线看片免费人成视1000| 亚洲午夜精品一区二区三区他趣| 欧美成人黑人猛交| 成人黄色国产精品网站大全在线免费观看| 精品国产综合| 女人色偷偷aa久久天堂| 国产精品久久91| 日韩三级在线| 国产欧美精品xxxx另类| 成人在线丰满少妇av| 国产精品久久久久久亚洲调教| 日韩精品诱惑一区?区三区| 97视频免费在线看| jiujiure精品视频播放| 91日本在线视频| 亚洲人人精品| 国产成人艳妇aa视频在线 | 国产精品黄页免费高清在线观看| silk一区二区三区精品视频| 欧美成人小视频| 亚洲人挤奶视频| 99精彩视频在线观看免费| 国产欧美日韩亚洲一区二区三区| 国产精品免费一区| 久久美女性网| 国产男女无遮挡| 亚洲私人影院在线观看| 色网在线视频| 亚洲国产毛片完整版| 成人黄色图片网站| 欧美亚洲第一区| 欧美午夜电影在线观看 | 久久精品福利| 日韩在线电影一区| 亚洲欧洲日产国码二区| av大全在线免费看| 一区二区日韩精品| 99久久婷婷这里只有精品 | 精精国产xxxx视频在线| 一本色道久久88综合日韩精品| 国产一区二区亚洲| 国产精品久久久久7777| 亚洲电影中文字幕在线观看| 久久五月精品中文字幕| 国产精品久久久久久久久久久不卡| 天堂va蜜桃一区二区三区漫画版| 日本成人免费网站| 亚洲国产成人精品电影| 日韩欧美1区| 日韩一级片免费视频| 色婷婷av一区二区三区软件| 欧美成人精品午夜一区二区| www.久久草| 福利微拍一区二区| 一呦二呦三呦国产精品| 17c丨国产丨精品视频| 欧美日韩国产高清一区二区| 欧美丝袜丝交足nylons172| 成年人观看网站| 亚洲三级av在线| 久久99精品国产麻豆婷婷洗澡| 国产日韩精品在线看| 国产v综合ⅴ日韩v欧美大片| 久久一日本道色综合| 中国字幕a在线看韩国电影| 美女精品国产| 精品少妇一区二区三区在线播放 | 国产在线一区二区三区欧美| 一区二区在线免费| 亚洲系列另类av| 羞羞视频立即看| 日本精品性网站在线观看| 久久先锋资源网| 婷婷亚洲精品| 男女小视频在线观看| 日韩av日韩在线观看| 高潮白浆女日韩av免费看| 久久久久久影院| 第九色区av在线| 一区二区三区免费看| 中文字幕一区日韩电影| 91在线免费视频观看| 国产欧美久久一区二区三区| 九色在线播放| 浴室偷拍美女洗澡456在线| 欧美大成色www永久网站婷| 中文字幕不卡的av| 亚洲综合婷婷| 成人性生活av| 国产一级黄色片免费| 日韩av一区二区三区在线| 亚洲精品久久久久| 一区二区高清视频在线观看| 久久人人精品| 北条麻妃在线一区二区免费播放| 天堂中文字幕在线| 日本a在线天堂| 国产中文日韩欧美| 丝袜亚洲另类欧美重口| 日韩欧美中文字幕在线观看| 成人av网址在线观看| 亚洲九九视频| 久久久久亚洲精品中文字幕| 最新中文字幕在线视频| 亚洲一区二区精品在线观看| 成人久久18免费网站图片| 日韩精品在线免费观看| 欧美性色视频在线| 国产精品久久久久久久久免费桃花| 18成人免费观看视频| 视频福利一区| 国产69精品久久久久9999人| h片在线免费| 欧美美乳在线| 特黄aaaaaaaaa毛片免费视频| 你懂的av在线| 青春草在线视频免费观看| 国内外成人免费视频| 日本精品免费观看| 欧美激情免费观看| 欧美成人激情视频免费观看| 亚洲国产一区自拍| 精品sm在线观看| 欧美综合视频在线观看| 亚洲成人一区二区| 亚洲成人中文在线| 欧美色视频日本高清在线观看| 国产精品每日更新在线播放网址 | 青青草视频在线视频| 成人3d动漫一区二区三区91| 国产精品专区h在线观看| 欧美在线不卡区| 国产精彩精品视频| 51精品国产人成在线观看| 成人激情视频在线播放| 亚洲一区二区三| 欧美h视频在线| 日韩久久精品一区二区三区| 天天干天天色天天爽| 成人一区二区免费视频| 污污的网站18| 日本h片在线看| 91在线看片| 9999精品成人免费毛片在线看 | 国产午夜精品全部视频播放| 一区二区三区视频免费| 中文亚洲视频在线| 亚洲91精品在线观看| 国产91亚洲精品一区二区三区| 久久久久久久久久久久久9999| 无颜之月在线看| 91热这里只有精品| 青娱在线视频| 欧美电影免费观看网站| 国产探花在线精品一区二区| 红桃视频亚洲| bt7086福利一区国产| 在线观看91精品国产入口| 夜夜躁日日躁狠狠久久88av | 日韩欧美高清在线播放| 日韩国产精品91| 国产精品久久久一本精品| 欧美一区二区在线免费观看| 欧美极品在线播放| 欧美自拍资源在线| 宅男深夜国产| 999精品嫩草久久久久久99| 激情自拍一区| 亚洲另类在线制服丝袜| 亚洲无亚洲人成网站77777| 亚洲字幕在线观看| 色国产在线视频| 黄视频免费在线看| 国产精品观看| 亚洲男同性视频| 欧美极品少妇全裸体| 青草网在线观看| 日本亚洲精品| 亚洲精品一区二区在线看| 久久久国产精华| 一区二区三区动漫| 国产乱子伦精品无码专区| 最新超碰在线| 久久精品久久精品国产大片|