1. 程式人生 > >移動端開發demo—移動端web相簿(一)

移動端開發demo—移動端web相簿(一)

本文主要是介紹開發移動端web相簿這樣一案例用到的前置知識。

一、移動端樣式

移動端更接近手機原生的方式。

如下是一個angular mobile的demo的例子:

 

移動端demo做成這樣的好處:

  • 在手機端瀏覽器中開啟,接近原生app應用。
  • 打包成Android或者ios的app,以原生app呈現

二、移動端web開發除錯工具

因為移動端主要的瀏覽器核心是webkit,所以可以用chrome開發。可以模擬UA和解析度。

模擬觸控行為,注意touch和click區別。

也可以開啟其他模擬。

三、移動端開發tips

 1、相容性

Android和ios都是webkit核心,firefox os是greasemonkey核心。

2、 其他差異

棄用事件mousedown,mouseup,click。

使用手勢操作代替滑鼠輸入/輸出事件

響應式佈局

css3代替DOM animation動畫效果

(為相容IE:PC端用setTimeout定時器,定時修改DOm元素的style屬性實現動畫)

 優勢:css3使用裝置GUP渲染,動用硬體裝置的計算能力做展示,效率高。

四、移動端開發框架和庫

1、移動端開發框架和PC端對比

PC端:相容ie,冗餘程式碼,但是計算效率高。

移動端和PC相比:輕  重效率 ,希望在3g網路載入更少的程式碼,載入更快。

2、移動端開發框架

移動端開發框架:jquery mobile ,angular mobile ,簡單的還用不到框架,通過元件做複雜應用非常簡單。我們做的頁面簡單,談不上完整的app效果,用不到複雜應用框架。

3、移動端開發庫

移動端開發庫:zepto.js

也可以用純原生的javascript的API。

zepto也除了提供一些API,也提供了些外掛,比如touch和gesture,。

zepto.js庫和其他移動端框架區別,可查資料。

touch.js獨立於zepto.js存在,單獨在github庫中。

五、touch事件

1、touch事件

touchstart---》touchmove---》touchend和touchcancle

當滑動螢幕時,來了個系統事件,比如來了個電話,此時就會進入接電話面板,整個的觸控事件就會被cancle掉,就會觸發touchcancle事件。

zepto.js的touch事件,在原生touch事件基礎上做了封裝,依賴於zepjs的一些外掛,touch.js暴露的事件

  • tap事件 觸控
  • singleTap事件 單次觸控和doubleTap事件
  • longTap長按事件
  • swipe,swipeLeft,swipeRight,swipeUp和swipeDown滑動事件。

2、為什麼不能用click

  • click事件300ms延遲
  • touch事件支援多點觸控,click不支援
  • 手勢操作

六、canvas優化技巧

1、優勢:觸發物理裝置GPU渲染

使用convas代替image標籤做圖片展示。

通常來講,Image標籤展示一張圖片是用瀏覽器本身來做渲染的。

當一個圖片很大的時候,

或者一個網頁中有很多張大的圖片的時候,

而你的手機效能又不是特別好的情況下,圖片展示就會特別卡。

這個卡通常是在滑動圖片,滾動條滾動圖片的時候,會感覺圖片非常卡,因為沒有觸發物理裝置本身的GPU來渲染。

如何觸發物理裝置GPU渲染?使用Canvas。

2、drawImage API

有一本書《HTML5 Canvas》來介紹canvas,內容太多,下面只介紹一個API。

drawImage API:把一張原本使用Image標籤的圖片畫在Canvas上面。

  • drawImage(image,x,y);在Canvas上繪製圖片。
  • drawImage(image,x,y,width,height);在Canvas上縮放並繪製圖片。

通常用到drawImage(image,x,y,width,height)。

引數image:image物件,要畫的圖片。

x,y:要畫的圖片是從canvas的哪個座標點開始。

座標通常是(0,0) 點,使用的也是第四象限的座標系。

width,height:要畫的這張圖的寬度和高度是多少,通常不傳也可以,不傳的話圖片有多大畫多大。

傳入的話就是控制圖片的縮放。

七、 Image物件

drawImage第一個引數要傳入一Image物件,那什麼是Image物件呢?

在手機上載入圖片,有一種方式,預載入圖片。預載入圖片就要用的Image物件了。我們通常看到的是Image標籤。

Image標籤就可以理解為Image物件。

Image物件的作用預載入圖片圖片按比例縮放

例子:

當設定一個img物件的src的時候,實際上就是向網路上傳送一個請求,來請求這張圖片。

var img=new Image();
img.onload=function(){
  debugger
}
img.src='https://www.baidu.com/img/bdlogo.gif';

執行的時候進入了img的onload事件,說明請求傳送成功了,同時圖片載入回來了,才會觸發Image物件的onload()方法。

可以看看Image標籤載入回來的圖片都有些什麼屬性?

可以在控制檯debug的Watch中新增一個this。

通過這種方式加載出來的圖片,我們可以獲得它的高度,寬度。以及它的自然的寬度和自然的高度。

有了這些資訊,可以根據圖片大小和當前裝置的解析度動態的調整圖片的大小。如果只使用傳統的Image標籤是沒辦法做到的。

八、css3動畫事件

點選animation瞭解css3動畫知識。

為什麼要有動畫事件?當一個動畫結束後,我想執行一個操作時怎麼辦?怎麼用js做邏輯控制?此時必須用css3的動畫事件。

當一個動畫結束的時候,我們可以監聽一個元素的animationEnd事件來實現。

webkit瀏覽器需要加webkit字首。

做動畫時, css3動畫框架可以用animate.css。

引用animate.css,在動畫元素上加class animate rotateIn。

本文作者starof,因知識本身在變化,作者也在不斷學習成長,文章內容也不定時更新,為避免誤導讀者,方便追根溯源,請諸位轉載註明出處:http://www.cnblogs.com/starof/p/4904929.html有問題歡迎與我討論,共同進步。

相關推薦

移動開發demo移動web相簿

本文主要是介紹開發移動端web相簿這樣一案例用到的前置知識。 一、移動端樣式 移動端更接近手機原生的方式。 如下是一個angular mobile的demo的例子:   移動端demo做成這樣的好處: 在手機端瀏覽器中開啟,接近原生app應用。 打包成Android或者io

MyEclipse開發教程:REST Web Service

MyEclipse 線上訂購年終抄底促銷!火爆開搶>> MyEclipse最新版下載 使用MyEclipse開發RESTWeb服務來放大您的Web應用程式。在本教程示例中,您將建立一個簡單的Web服務來維護客戶列表。你將學會: 用於開發REST Web服務的過程 部署到MyEc

Delphi D10.1 移動開發中APP介面基本佈局

Delphi 目前在移動應用開發上已越來越成熟,其高效、簡潔的開發更讓人喜歡。 說明 案例演示使用Delphi控制元件完成介面基本佈局,其中包括TLayout、TVertScrollBox、 TGridPanelLayout、

Web筆記 Web 簡介與開發環境搭建

tro env 原理圖 start log auc wid serve enc Web應用程序的工作原理 大多數的Web應用程序結構都是采用最為流行的B/S軟件開發體系結構,將Web應用程序部署在Web服務器上,只要Web服務器啟動,用戶就可以通過客戶端瀏覽器發送HTTP

前後分離業務邏輯常用封裝函式

1.陣列去空: function clear_arr_trim(array) {  for(var i = 0 ;i<array.length;i++){   if(array[i] == "" ||  (array[i] == null)   || typeo

MyEclipse開發教程:REST Web Service

MyEclipse 線上訂購年終抄底促銷!火爆開搶>> MyEclipse最新版下載 使用MyEclipse開發RESTWeb服務來放大您的Web應用程式。在本教程示例中,您將建立一個簡單的Web服務來維護客戶列表。你將學會: 用於開發REST Web服務的過程

web框架之基礎簡介

-a 程序 我想 pos 客戶 創建 當前 自動 art http的請求聲明周期:域名----DNS服務器---IP地址---基於tcp協議的http協議發送請求協議,服務端返回響應頭+響應體(我們所看到的頁面(是經過js渲染的,接收的是字符串))服務端(web服務)根據我

Web service

編程 壓力 iis服務器 src 都是 百度搜 方法 行程 分布式部署 概念:Web service就是可以實現不同平臺下的不同應用層程序之間數據通信,底層也是基於Socket。不同平臺之間要通信必須遵守一定的格式,所以使用開放式的XML來描述配置 一:創建第一個Web s

Android應用開發:網絡工具——Volley

要求 com 庫文件 urn welcom 順序 之前 air tin 引言 網絡一直是我個人的盲點,前一陣子抽空學習了一下Volley網絡工具的用法,也透過源代碼進行了進一步的學習,有一些心得想分享出來。在Android開發中,成熟的網絡工具不少,And

編寫python web框架:簡介

== web 方法 nvi ever pytho 必須 ext sim 編寫一個最簡單的應用: def app(environ, start_response): start_response(‘200 OK‘, [(‘Content-Type‘, ‘tex

如何搭建一個web網站

團隊合作 是的 轉換 們的 web服務 ons lang 用戶 域名 前言: 由於新生軍訓結束,作為學生會的一個技術部的老油條,這時候得幫幫他們了。 大多數新生都是奔著能做一些小東西,能夠被大家,被其他人用,為目的進入了技術部,部門主要負責做院系微信運營,順帶做開發。前兩任

Django開發小型站之前期準備

不同的 版本 mysqld 沒有 pycha 準備 pre 系統 解決問題 語言:python3.5 工具:JetBrains PyCharm virtualenvwrapper優點:   1、使不同的應用開發環境獨立   2、環境升級不影響其他應用,也不會影響全

轉發-Django開發小型站之前期準備

mysql模塊 需要 一個 3.5 查看 安裝mysql 不同的 方法 html 語言:python3.5 工具:JetBrains PyCharm virtualenvwrapper優點:   1、使不同的應用開發環境獨立   2、環境升級不影響其他應用,也不會影響全局

開發語言的程序加密方法

加密從各個開發語言出發,對每個開發語言的角度對加密方法做一些闡述。這篇主要講述lua、erlang、perl、ruby語言的加密方法。加密所需:Virbox LM SDK最新版Virbox Protector加殼工具,DS Protector 文檔下載:http://dl.video.virbox.com/v

MAC OS開發之從入門到崩潰

bsp 運行 shee 相關 .com nsh 彈出 add 區域 本文目標:通過xcode,創建一個Mac app程序。點擊按鈕,彈出Hello World窗口,其效果如下。 我們可以通過4個步驟來實現如上效果。 1.創建一個MAC app工程項目。 2.布局“按鈕”

函數計算搭建 Serverless Web 應用- HTTP 觸發器

選擇 文件 process 程序 例如 函數計算 -o 同時 時代 摘要: Web 應用(Serverless web backend) 是函數計算很重要的一個使用場景。相比於傳統的在服務器上搭建 web 應用,函數計算無需您管理服務器等基礎設施,只需編寫代碼並上傳,函數計

用Websocket實現Web IM

前言:最近領導要求做一版簡單的類似web版微信web IM作為其他產品的過渡,經過跟同事討論後,決定用websocket嘗試做一下(微信使用的是長輪詢保持連線)。首先要解決的是掃碼登入和重連機制問題,雖然實現起來很簡單,但是以防忘記,還是要記錄一下。 一、掃碼登陸 1、二維碼

嵌入式軟體開發 必須掌握的知識點有錯還望指點^_^

1、CPU對資料兩種儲存模式:小端儲存和大端儲存 (Little-Endian and  Big-Endian) 如整數0x12345678在記憶體中應該如下存放: 地低: base   | base+1   | base+2&n

Web安全:常見的XSS攻擊

<SCRIPT SRC=http://xi.baidu.com/XSS/xss.js></SCRIPT> <IMG SRC=javascript:alert('XSS')> <IMG SRC=jaVaScRipt:alert('XSS')> <I

基於Controller介面的Spring MVC控制器的Web應用

一、建立一個基於maven的web應用  1.在pom.xml檔案中匯入以下依賴 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"