一道筆試題
之前偶然看到一個公司的筆試題,題目如下:
用HTML5、CSS3、JavaScript,做一個網頁,實現如下圖形式計算器
一道筆試題引發的一個練手項目
花了一點時間寫好的第一版,符合了筆試題的要求。後來左看右看覺得還可以改進做的更好,於是給它不斷的改進,加新功能等,這樣下來沒完沒了,利用業餘時間一點一點的寫,從剛開始的網頁版,到後來做響應式的行動版,再到現在的行動App,短短續續大概寫了3個月吧。 專案地址最終版的計算器,專案地址和預覽圖片在 GitHub:https://github.com/dunizb/sCalc。 功能說明最終版的功能如下:- 介面版面採用CSS3 的Flex box版面
- 內建可以切換單手模式(App)
- 當輸入手機號碼後長按等於號可以撥打手機號碼(App)
- 版本更新檢查(App)
版本更新檢查(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事件了,使用如下代碼判斷是左滑還是又滑:
/** 单手模式 */ function singleModel(){ var calc = document.getElementById("calc"); var startX = 0,moveX = 0,distanceX = 0; var distance = 100; var width = calc.offsetWidth; //滑动事件 calc.addEventListener("touchstart",function(e){ startX = e.touches[0].clientX; }); calc.addEventListener("touchmove",function(e){ moveX = e.touches[0].clientX; distanceX = moveX - startX; isMove = true; }); window.addEventListener("touchend",function(e){ if(Math.abs(distanceX) > width/3 && isMove){ if( distanceX > 0 ){ positionFun("right"); //右滑 }else{ positionFun("left"); //作滑 } } startY = moveY = 0; isMove = false; }); }
如果是坐滑,就position:absolut;left:0,bottom:0,再把最外層DIV縮小到80%,這樣就實現了左滑計算器縮小移動到左下角。右滑道理一樣。
電話撥打功能
當輸入手機號碼後長按等於號碼可以撥打手機號碼。這個功能沒什麼神奇,在行動Web上會對那些看起來像是電話號碼的數字處理為電話鏈接,例如:
7位數字,形如:1234567
帶括號及加號的數字,形如:(+86)123456789
雙連接線的數字,形如:00-00-00111
-
11位元數字,形狀如:13800138000也會被識別。我們可以透過以下的meta來開啟電話號碼的自動辨識
<meta name="format-detection" content="telephone=yes" />
開啟電話功能 <a href="tel:123456">123456</a>
開啟簡訊功能:
<a href="sms:123456">123456</a>
但是,在Android系統上,只能呼叫系統的撥號介面,在iOS上則能調過這一步直接把電話打出去。 - 版本更新檢查
在關於頁面,有一個版本更新檢查按鈕,就能檢查是否有新版本,這個功能的原理是發送一個JSOPN請求去檢查伺服器上的JSON文件,比對版本號,如果伺服器上的版本比APP的版本高則會提示有新版本可以下載。
客戶端JavaScript程式碼:
function updateApp(){ //检查新版本 var updateApp = document.getElementById("updateApp"); updateApp.onclick = function(){ var _this = this; $.ajax({ type:'get', url:'http://duni.sinaapp.com/demo/app.php?jsoncallback=?', dataType:'jsonp', beforeSend : function(){ _this.innerHTML = " 正在检查新版本..."; }, success:function(data){ var newVer = data[0].version; if(newVer > appConfig.version){ var log = data[0].log; var downloadUrl = data[0].downloadUrl; if(confirm("检查到新版本【"+newVer+"】,是否立即下载?\n 更新日志:\n " + log)){ var a = document.getElementById("telPhone"); a.href = downloadUrl; a.target = "_blank"; a.click(); } }else{ alert("你很潮哦,当前已经是最新版本!"); } _this.innerHTML = " 检查新版本"; }, error:function(msg){ _this.innerHTML = " 检查新版本"; alert("检查失败:"+msg.message); } }); } }
服務端JSON:
[ { "version":"3.1.0", "downloadUrl":"http://dunizb.b0.upaiyun.com/demo/app/myCalc-3.1.0.apk", "hashCode":"20160812224616", "log":"1.新增切换主题功能 \n 2.新增单手切换模式功能 \n 3.调整UI " } ]

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

Python更适合数据科学和机器学习,JavaScript更适合前端和全栈开发。1.Python以简洁语法和丰富库生态著称,适用于数据分析和Web开发。2.JavaScript是前端开发核心,Node.js支持服务器端编程,适用于全栈开发。

JavaScript不需要安裝,因為它已內置於現代瀏覽器中。你只需文本編輯器和瀏覽器即可開始使用。 1)在瀏覽器環境中,通過標籤嵌入HTML文件中運行。 2)在Node.js環境中,下載並安裝Node.js後,通過命令行運行JavaScript文件。

如何在Quartz中提前發送任務通知在使用Quartz定時器進行任務調度時,任務的執行時間是由cron表達式設定的。現�...

在JavaScript中如何獲取原型鏈上函數的參數在JavaScript編程中,理解和操作原型鏈上的函數參數是常見且重要的任�...

在微信小程序web-view中使用Vue.js動態style位移失效的原因分析在使用Vue.js...


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Linux新版
SublimeText3 Linux最新版

SublimeText3漢化版
中文版,非常好用