本文主要是介紹開發移動端web相冊這樣一案例用到的前置知識。javascript
移動端更接近手機原生的方式。css
以下是一個angular mobile的demo的例子:html
移動端demo作成這樣的好處:java
由於移動端主要的瀏覽器內核是webkit,因此能夠用chrome開發。能夠模擬UA和分辨率。jquery
模擬觸摸行爲,注意touch和click區別。ios
也能夠開啓其餘模擬。css3
Android和ios都是webkit內核,firefox os是greasemonkey內核。git
棄用事件mousedown,mouseup,click。github
使用手勢操做代替鼠標輸入/輸出事件web
響應式佈局
css3代替DOM animation動畫效果
(爲兼容IE:PC端用setTimeout定時器,定時修改DOm元素的style屬性實現動畫)
優點:css3使用設備GUP渲染,動用硬件設備的計算能力作展現,效率高。
PC端:兼容ie,冗餘代碼,可是計算效率高。
移動端和PC相比:輕 重效率 ,但願在3g網絡加載更少的代碼,加載更快。
移動端開發框架:jquery mobile ,angular mobile ,簡單的還用不到框架,經過組件作複雜應用很是簡單。咱們作的頁面簡單,談不上完整的app效果,用不到複雜應用框架。
移動端開發庫:zepto.js
也能夠用純原生的javascript的API。
zepto也除了提供一些API,也提供了些插件,好比touch和gesture,。
zepto.js庫和其餘移動端框架區別,可查資料。
touch.js獨立於zepto.js存在,單獨在github庫中。
touchstart---》touchmove---》touchend和touchcancle。
當滑動屏幕時,來了個系統事件,好比來了個電話,此時就會進入接電話面板,整個的觸摸事件就會被cancle掉,就會觸發touchcancle事件。
zepto.js的touch事件,在原生touch事件基礎上作了封裝,依賴於zepjs的一些插件,touch.js暴露的事件
使用convas代替image標籤作圖片展現。
一般來說,Image標籤展現一張圖片是用瀏覽器自己來作渲染的。
當一個圖片很大的時候,
或者一個網頁中有不少張大的圖片的時候,
而你的手機性能又不是特別好的狀況下,圖片展現就會特別卡。
這個卡一般是在滑動圖片,滾動條滾動圖片的時候,會感受圖片很是卡,由於沒有觸發物理設備自己的GPU來渲染。
如何觸發物理設備GPU渲染?使用Canvas。
有一本書《HTML5 Canvas》來介紹canvas,內容太多,下面只介紹一個API。
drawImage API:把一張本來使用Image標籤的圖片畫在Canvas上面。
一般用到drawImage(image,x,y,width,height)。
參數image:image對象,要畫的圖片。
x,y:要畫的圖片是從canvas的哪一個座標點開始。
座標一般是(0,0) 點,使用的也是第四象限的座標系。
width,height:要畫的這張圖的寬度和高度是多少,一般不傳也能夠,不傳的話圖片有多大畫多大。
傳入的話就是控制圖片的縮放。
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標籤是沒辦法作到的。
點擊animation瞭解css3動畫知識。
爲何要有動畫事件?當一個動畫結束後,我想執行一個操做時怎麼辦?怎麼用js作邏輯控制?此時必須用css3的動畫事件。
當一個動畫結束的時候,咱們能夠監聽一個元素的animationEnd事件來實現。
webkit瀏覽器須要加webkit前綴。
作動畫時, css3動畫框架能夠用animate.css。
引用animate.css,在動畫元素上加class animate rotateIn。
本文做者starof,因知識自己在變化,做者也在不斷學習成長,文章內容也不定時更新,爲避免誤導讀者,方便追根溯源,請諸位轉載註明出處:http://www.cnblogs.com/starof/p/4904929.html有問題歡迎與我討論,共同進步。