iphone/ipad前端開發技巧

來源:互聯網
上載者:User

iPad開發的局限性

    1、在iPad上使用Safari瀏覽普通網站網頁的時候,網頁因為太大而導致需要手動放大縮小或者滑動,雖然這種滑動行為在iPad上市之初的各種宣傳中被津津樂道,但時間久了我們還是會發現這樣做並不方便,給使用者帶來的感受並不十分好。
    2、不支援Flash,在沒有越獄的iPad Safari中,網站的Flash都是無法顯示的,但可以通過第三方軟體或外掛程式或者瀏覽器來解決,不過,即使不能顯示Flash,你一樣能夠用HTML5和CSS3實現同樣的效果。
    3、沒有滑鼠游標,這意味著滑鼠屬性,例如滑鼠移至上方屬性是不可能有的。
    4、你或許可以為這個找到一些變通的辦法,但是到你的使用者那裡這些該如何工作將會是困難的事。
    捲軸不能按照預期那樣起作用,捲軸不能顯示包含了充滿過多分區的內容。架構也存在高度和寬度的問題。另外,滾動過程中需要兩個手指的手勢。(我們將在下文中進行充分的討論)
    5、不支援CSS固定式配置,HTML 元素 position:fixed CSS屬性不能正確顯示,常常會使得頁面停留在第一屏,無法向下翻頁、放大縮小。

開發特定裝置的移動網站,首先要做的就是裝置偵測了。下面是使用Javascript偵測iPhone/iPod的UA,然後轉向到專屬的URL。

Code:

if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i))) {

if (document.cookie.indexOf("iphone_redirect=false") == -1) {

window.location = "http://www.8mart.cn";

}

}

雖然Javascript是可以在水果裝置上啟動並執行,但是使用者還是可以禁用。它也會造成用戶端重新整理和額外的資料轉送,所以下面是伺服器端偵測和轉向:

Code:

if(strstr($_SERVER['HTTP_USER_AGENT'],'iPhone') || strstr($_SERVER['HTTP_USER_AGENT'],'iPod')) {

header('Location: http://www.8mart.cn/iphone');

exit();

}

設定viewpoint和螢幕等寬

如果不設定viewpoint,網站在viewpoint就會顯示成縮減形式。如果你專門為iPhone/iPod開發網站,這一條很有用,而且很簡單,只需要插入到head裡就可以:

Code:

 <meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0;">

使用iPhone規格表徵圖

如果你的使用者將你的網站添加到home screen,iPhone會使用網站的縮圖作為表徵圖。然而你可以提供一個自己設計的表徵圖,這樣當然更好。圖片是57×57大小,png格式。不需要自己做圓角和反光,系統會自動完成這些工作。然後將下面這條加入head中:

Code:

 <rel="apple-touch-icon" href="images/youricon.png"/>

阻止旋轉螢幕時自動調整字型大小

-webkit-text-size-adjust是webkit的私人css:

Code:

html, body, form, fieldset, p, div, h1, h2, h3, h4, h5, h6 {-webkit-text-size-adjust:none;}

偵測裝置旋轉方向

iPhone可以在橫屏狀態下瀏覽網頁,有時候你會想知道使用者裝置的手持狀態來增強可用性和功能。下面一段Javascript可以判斷出裝置向哪個方向旋轉,並且替換css:

Code:

window.onload = function initialLoad() {updateOrientation();}   

function updateOrientation(){

var contentType = “show_”;

switch(window.orientation){

case 0:

contentType += “normal”;

break;  

case -90:

contentType += “right”;

break;

case 90:

contentType += “left”;

break;

case 180:

contentType += “flipped”;

break;

}

document.getElementById(“page_wrapper”).setAttribute(“class”, contentType);

}

iPhone才識別的CSS

如果不想裝置偵測,可以用CSS媒體查詢來專為iPhone/iPod定義樣式。

Code:

@media screen and (max-device-width: 480px) {}

CSS3媒體查詢

對於CSS3的媒體(media)查詢,iPhone和iPad是不同的。通過這個技術,可以對裝置不同的握持方嚮應用不同的樣式,增強功能和體驗。

iPhone是通過螢幕最大寬度來偵測的。是這樣:

Code:

 

而iPad有點不同,它直接使用了媒體查詢中的orientation屬性。是這樣:

Code:

 

之後只要將不同的樣式分別定義出來就可以了。

縮小圖片

網站的大圖通常寬度都超過480像素,如果用前面的代碼限制了縮放,這些圖片在iPhone版顯示顯然會超過螢幕。好在iPhone機能還夠,我們可以用CSS讓iPhone自動將大圖片縮小顯示。

Code:

@media screen and (max-device-width: 480px){

img{max-width:100%;height:auto;}

}

注意如果原圖片非常大,或一個頁面非常多圖,最好還是在伺服器端縮放到480像素寬,iPhone只需要在正常瀏覽時縮減到320像素。這樣不會消耗太多流量和機能。

預設隱藏工具列

iPhone的瀏覽器工具列會在頁面最頂端,捲動網頁後才隱藏。這樣在載入網頁完成後顯得很浪費空間,特別是橫向螢幕時。我們可以讓它自動捲動上去。

Code:

 window.addEventListener('load',function(){
setTimeout(scrollTo,0,0,1);
},false);

類比:hover偽類

因為iPhone並沒有滑鼠指標,所以沒有hover事件。那麼CSS :hover偽類就沒用了。但是iPhone有Touch事件,onTouchStart 類似 onMouseOver,onTouchEnd 類似 onMouseOut。所以我們可以用它來類比hover。使用Javascript:

Code:

var myLinks = document.getElementsByTagName('a');

for(var i = 0; i < myLinks.length; i++){

myLinks[i].addEventListener(’touchstart’, function(){this.className = “hover”;}, false);

myLinks[i].addEventListener(’touchend’, function(){this.className = “”;}, false);

}

然後用CSS增加hover效果:

Code:

a:hover, a.hover { /* 你的hover效果 */ }

這樣設計一個連結,感覺可以更像按鈕。並且,這個類比可以用在任何元素上。

iphone fixed positioning

Code:
 
關於漂浮定位,測試後發現{ position: fixed; } 不能為其用,
 可以改為{ position:absolute; } 來實現,可以使用iphone看下DEMO: 
 iphone-fixed-positioning  http://uecss.com/demo/jeff/iphone-fixed-positioning/
 
Touch Events
 iPhone 是使用觸屏的方式,所以就需要有手觸屏和離開的時候的事件機制,幸好,iPhone做好了這方面的工作,提供了四個處理touch的事 件:touchstart,touchend,touchmove,touchcancel(when the system cancels the touch) 。
 
Gestures
 即是指兩隻手指接觸螢幕的時候縮放或者旋轉的效果,對於偵聽gestures,iPhone也有三個事件:gesturestart,gestureend,gesturechange。
 同時事件參數event有兩個屬性:scale,rotate。Scale的中間值是1,大於1表示放大,小於1表示縮小。
 
 
 
參考資料:
 
iPhone CSS—tips for building iPhone websiteshttp://csswizardry.com/2010/01/iphone-css-tips-for-building-iphone-websites/
 
iPhone & iPod Detection Using Javascripthttp://davidwalsh.name/detect-iphone
 
iPhone Development: 12 Tips To Get You Startedhttp://articles.sitepoint.com/article/iphone-development-12-tips/
 
Tutorial: Building a website for the iPhonehttp://www.engageinteractive.co.uk/blog/2008/06/19/tutorial-building-a-website-for-the-iphone/
 
hover pseudoclass for the iPhonehttp://www.evotech.net/blog/2008/12/hover-pseudoclass-for-the-iphone/
 
fixed-positioning-on-mobile-safarihttp://doctyper.com/archives/200808/fixed-positioning-on-mobile-safari/
 
Preparing Your Web Content for iPadhttp://developer.apple.com/safari/library/technotes/tn2010/tn2262/index.html
 
 
摘自 ξ..命運ing.
 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.