成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

移動應(yīng)用中全屏模式要點研究

譯文
移動開發(fā)
移動應(yīng)用中的用戶體驗是最重要的,在本文中,將給讀者講解在日新月異的對移動應(yīng)用支持的相當(dāng)優(yōu)秀的瀏覽器中,如何實現(xiàn)豐富多彩的全屏效果。本文適合的閱讀對象為有一定移動HTML 5開發(fā)基礎(chǔ)的讀者。

移動應(yīng)用中的用戶體驗是最重要的,在本文中,將給讀者講解在日新月異的對移動應(yīng)用支持的相當(dāng)優(yōu)秀的瀏覽器中,如何實現(xiàn)豐富多彩的全屏效果。本文適合的閱讀對象為有一定移動HTML 5開發(fā)基礎(chǔ)的讀者。

目前,我們已經(jīng)能夠?qū)崿F(xiàn)多姿多彩的網(wǎng)站或網(wǎng)頁的全屏效果,并且已經(jīng)有不少實現(xiàn)的方法。全屏效果的移動應(yīng)用,給用戶更寬廣的界面視野,因為手機(jī)的屏幕一般都比較小,可以讓用戶十分方便地操作,特別在一些移動游戲中尤其如此。幸好現(xiàn)在各大移動瀏覽器都支持“安裝式”的web應(yīng)用,其中大多用到了全屏效果。

下面我們來看下實現(xiàn)web應(yīng)用全屏效果有什么方法:

隱藏地址欄

讀者能想到最簡單的方法,就是自動隱藏瀏覽器的地址欄,可以使用一段簡單的Javascript代碼:

  1. <script type="text/javascript"
  2.     addEventListener("load", function() { setTimeout(hideURLbar, 0); }, false); 
  3.     function hideURLbar(){ 
  4.               window.scrollTo(0,1); 
  5.     } 
  6. script> 

這個方法無疑是最簡單的,在頁面打開的時候來瀏覽器的地址欄被自動隱藏了。但可惜的是,這樣的方法并不是最標(biāo)準(zhǔn)的并且瀏覽器對其支持不大好。你可能不得不處理一些奇怪的問題和現(xiàn)象。比如當(dāng)用戶在頁面需要來回導(dǎo)航的時候,偶然地址欄還是會在頁面中恢復(fù)其位置。所以有的時候,用戶對此感到惱怒。而且要注意只有當(dāng)頁面內(nèi)容的高度超過屏幕瀏覽器的高度的時候,才會自動隱藏地址欄,否則不會自動隱藏,如果內(nèi)容比較少的時候,可以在滾動之前程序動態(tài)設(shè)置一下body的高度,增加如下代碼

  1.      . if(document.documentElement.scrollHeight <= document.documentElement.clientHeight) { 
  2.     bodyTag = document.getElementsByTagName('body')[0]; 
  3.     bodyTag.style.height = document.documentElement.clientWidth / screen.width * screen.height + 'px'
  4. •    

利用移動瀏覽器的全屏API特性

現(xiàn)在的移動瀏覽器中,大多支持全屏API,而且全屏API是HTML 5規(guī)范中的標(biāo)準(zhǔn)。但遺憾的是iOS不支持全屏API(IE 11才開始支持全屏API)。我們下面討論的是支持全屏API的Chrome for Android和FireFox。

在使用全屏API中,重點關(guān)注以下幾個API:

•     element.requestFullscreen()

 以全屏方式顯示元素(目前Chrome和Firefox都支持)

•    document.cancelFullscreen()

取消全屏模式(目前Chrome和Firefox都支持)

•    document.fullscreenElement

如果當(dāng)前任何一個元素以全屏模式顯示,則返回true

要注意當(dāng)應(yīng)用在全屏模式下的時候,用戶不能使用原來瀏覽器的控件了,這將稍微改變用戶的體驗。他們不能使用前進(jìn)和導(dǎo)航按鈕;他們唯一能用的按鈕就是刷新按鈕。因此開發(fā)者必須應(yīng)對這種情況。可以在全屏模式下,使用CSS選擇器去改變樣式。下面看下如何用代碼實現(xiàn)全屏模式:

  1. <button id="goFS">Go fullscreen<button> 
  2. <script> 
  3.    var goFS = document.getElementById("goFS"); 
  4.    goFS.addEventListener("click", function() { 
  5.       document.body.requestFullScreen(); 
  6.    }, false); 
  7. </script> 

以上是全屏模式最簡單的用法了。Mozilla發(fā)布了一個很有用的腳本能很好地實現(xiàn)全屏模式,摘要相關(guān)代碼如下:

  1.  function toggleFullScreen() { 
  2. var doc = window.document; 
  3. var docEl = doc.documentElement; 
  4.  
  5. var requestFullScreen = docEl.requestFullscreen || docEl.mozRequestFullScreen || docEl.webkitRequestFullScreen; 
  6. var cancelFullScreen = doc.exitFullscreen || doc.mozCancelFullScreen || doc.webkitExitFullscreen; 
  7.  
  8. if(!doc.fullscreenElement && !doc.mozFullScreenElement && !doc.webkitFullscreenElement) { 
  9.   requestFullScreen.call(docEl); 
  10. else { 
  11.   cancelFullScreen.call(doc); 

這段代碼的核心其實就是加上判斷不同的瀏覽器的類型而已。當(dāng)然,如果開發(fā)者覺得使用起來依然不方便,可以嘗試使用 Screenfull.js這個小巧的和全屏相關(guān)的Javascript類庫,也是挺好用的。

如何啟動全屏API的應(yīng)用

要在啟動一個頁面的時候,自動進(jìn)入全屏模式是不可能的。其原因可能在于瀏覽器廠商可能也意識到不經(jīng)過用戶允許而自動進(jìn)入全屏模式,是十分不厚道的事情。因此,用戶如果要進(jìn)入全屏模式,都必須由用戶主動確認(rèn)。目前各主流的移動瀏覽器,都支持使用標(biāo)簽和腳本等,實現(xiàn)啟動全屏API,分別介紹下:

iOS

在iPhone中,用戶可以將Web應(yīng)用安裝到home主屏中去,并且讓它們以全屏方式啟動,代碼為;

  1. <meta name="apple-mobile-web-app-capable" content="yes"

如果content設(shè)置為yes,則表示啟動全屏模式,否則默認(rèn)為否。

Chrome for Android

Chrome團(tuán)隊最近實現(xiàn)了和iOS類似的機(jī)制,當(dāng)用戶增加應(yīng)用到主屏?xí)r,實現(xiàn)全屏模式,代碼為:

  1. <meta name="mobile-web-app-capable" content="yes"

Firefox OS

=在Firefox OS手機(jī)系統(tǒng)中,實現(xiàn)的機(jī)制稍微復(fù)雜。Firefox OS需要開發(fā)者編寫部署的文件,然后Firefox OS在應(yīng)用部署的時候會進(jìn)行自動解析并安裝為全屏應(yīng)用,代碼片段:

  1.   "name""My App"
  2.   "description""My elevator pitch goes here"
  3.   "launch_path""/"
  4.   "icons": { 
  5.     "128""/img/icon-128.png" 
  6.   }, 
  7.   "fullscreen"true 

詳細(xì)的用法參考:https://developer.mozilla.org/en-US/Apps/Developing/Manifest#fullscreen

全屏API使用的技巧

如果想將body部分進(jìn)行全屏化,則在基于Webkit或者blink引擎的瀏覽器中,會發(fā)現(xiàn)body部分會縮小到只能包含內(nèi)容的區(qū)域,周圍會有黑色的縫隙(但Mozilla的Gecko不會有這個問題)。如下圖所示:

可以使用如下的方法去進(jìn)行修復(fù):

  1. document.documentElement.requestFullScreen(); 

其效果如下圖:

如何讓視頻變?yōu)槿?/strong>

下面講解如何將視頻進(jìn)行全屏顯示,代碼如下:

  1. <video id=videoElement></video> 
  2. <button id="goFS">Go Fullscreen</button> 
  3. <script> 
  4.    var goFS = document.getElementById("goFS"); 
  5.    goFS.addEventListener("click", function() { 
  6.       var videoElement = document.getElementById("videoElement"); 
  7.       videoElement.requestFullScreen(); 
  8.    }, false); 
  9. </script> 

上面的方法并不是***的,***的方法是將視頻控件放在某個div中,并且為視頻控件設(shè)置屬性,這樣用戶才能很方便地使用視頻控件,代碼如下:

  1.  <div id="container"
  2.   <video><video> 
  3.   <div> 
  4.     <button>Play<button> 
  5.     <button>Stop<button> 
  6.     <button id="goFS">Go fullscreen<button> 
  7.   <div> 
  8. <div> 
  9. <script> 
  10.    var goFS = document.getElementById("goFS"); 
  11.    goFS.addEventListener("click", function() { 
  12.       var container = document.getElementById("container"); 
  13.       container.requestFullScreen(); 
  14.    }, false); 
  15. <script> 

甚至我們可以加點CSS控制樣式,如:

  1.  <style> 
  2. #goFS:full-screen #goFS { 
  3.   display: none; 
  4. #goFS:-webkit-full-screen #goFS { 
  5.   display: none; 
  6. #goFS:-moz-full-screen #goFS { 
  7.   display: none; 
  8. <style> 

全屏應(yīng)用的設(shè)計注意事項

要注意的是,在iOS或者FireFox OS中的設(shè)備中是沒有物理的后退或刷新功能鍵的,因此必須確保用戶能在全屏模式下不會影響用戶的體驗,其中可以通過全屏相關(guān)的API去判斷用戶是否處于全屏模式中。

在iOS中的判斷方法如下:

  1.   if(window.navigator.standalone == true) { 
  2.         //應(yīng)用已經(jīng)安裝而且為全屏模式 

但在Chrome for Android中,document.fullscreenElement會返回null并且也不象Ios那樣能有window.navigator.standalone屬性,則可以使用如下的CSS代碼去顯示只有在全屏模式下才能顯示的元素。

  1.  selector:-webkit-full-screen { 
  2.   display: block; // 只在全屏模式下顯示 
  1. selector { 
  2.   display: none; // 不在全屏模式下隱藏元素 

而在Firefox OS中,用法基本是相同的,只是部分CSS代碼的拼寫有點不同,即:

  1. selector:-moz-full-screen { 
  2.   display: block; // hides the element when not in fullscreen mode 
  3.  
  4. selector { 
  5.   display: none; // hides the element when not in fullscreen mode 

讓用戶在全屏模式下操作要注意的

盡管全屏模式有這樣那樣的好處,但事實上各瀏覽器廠商也想了很多辦法能讓用戶隨時跳出全屏應(yīng)用,因此是不可能實現(xiàn)同時在多個頁面中使用全屏的,因為:

1) 一旦使用window.location去改變url連接則會退出全屏模式

2) 用戶一旦點了外部鏈接,則會退出全屏模式

3) 使用navigator.pushState也會退出全屏模式

那么你可以考慮以下的兩個方法盡可能實現(xiàn)全屏模式:

1) 使用可安裝的web app去實現(xiàn)全屏效果

2) 盡可能使用#錨點的語法去在頁面間導(dǎo)航

讓用戶有選擇全屏方式的權(quán)利

千萬不要過分濫用全屏方式,而且盡量避免用戶一開始進(jìn)入應(yīng)用就馬上切換到全屏,模式。每當(dāng)需要用到全屏方式前,應(yīng)該要提醒用戶。當(dāng)然瀏覽器也會

提醒用戶,比如在Firefox OS中,提醒的方式如下圖:

適當(dāng)提醒用戶安裝你的應(yīng)用

如果想通過安裝app的機(jī)制去提供全屏模式體驗,則必須考慮以下幾點:

•    在頁頭或頁腳使用足夠的信息提醒用戶可以安裝這個app

•    如果用戶取消了安裝提示,則不要再顯示,否則用戶會感到厭倦

•    用戶在***次訪問的時候,除非是特別喜愛你的應(yīng)用提供的服務(wù),否則是不會馬上安裝應(yīng)用的。應(yīng)該考慮在用戶使用足夠長的時間后才提示用戶是否安裝應(yīng)用

•    如果發(fā)現(xiàn)你的用戶經(jīng)常有規(guī)律地訪問你的應(yīng)用,但并不安裝,則很大可能他們以后也不大愿意安裝了,這個時候不要老給出提示信息以打擾用戶。

小結(jié)

本文小結(jié)了目前主流移動瀏覽器中對全屏模式的主要支持情況,介紹了如何用多種方法支持移動應(yīng)用的全屏模式,以及其中HTML 5中全屏模式主要API的使用。在移動應(yīng)用中使用全屏API有利有弊,利在于可以讓用戶在使用移動應(yīng)用的時候,有更足夠的視野空間操作,但弊端在于如果不給予用戶足夠提示的話,則有可能讓用戶在操作上感到迷茫,因此開發(fā)者必須十分留意。

責(zé)任編輯:張葉青 來源: 51CTO
相關(guān)推薦

2015-04-21 13:50:53

電信運(yùn)營商移動互聯(lián)網(wǎng)應(yīng)用開發(fā)

2012-01-03 19:09:42

移動應(yīng)用

2014-08-21 13:43:26

移動互聯(lián)網(wǎng)租車應(yīng)用研究報告

2013-01-06 16:03:18

Facebook移動廣告

2016-08-02 14:29:49

移動支付移動通訊移動金融

2009-07-16 16:09:51

Swing全屏幕模式

2011-05-02 11:32:24

Android應(yīng)用商店

2011-06-02 18:02:50

iPhone MVC

2011-04-21 09:46:41

設(shè)計模式

2013-09-04 11:26:41

移動應(yīng)用界面設(shè)計

2011-03-23 08:34:43

設(shè)計應(yīng)用

2012-03-07 10:07:19

云計算云應(yīng)用

2010-07-29 14:58:49

Flex全屏模式

2011-07-11 16:25:25

控制臺

2023-12-14 12:42:42

2011-12-15 21:24:46

應(yīng)用

2012-03-09 14:19:12

企業(yè)移動應(yīng)

2015-05-21 18:14:44

2009-12-30 14:22:12

Silverlight

2011-05-20 10:11:19

點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 久久99精品久久久久久国产越南 | 在线色网站 | 午夜男人视频 | 日日干日日 | 国产一区二区三区色淫影院 | 99精品亚洲国产精品久久不卡 | 欧美一区 | 一区二区三区国产好 | 99久久精品国产一区二区三区 | 日本电影免费完整观看 | 亚洲av毛片 | 一区二区三区av | av大全在线观看 | 欧美jizzhd精品欧美巨大免费 | 欧美黑人巨大videos精品 | 亚洲视频二区 | 久久久久久久国产 | 国产在线中文字幕 | 一区二区影院 | 国产天堂 | 久久国产一区二区三区 | 毛片在线免费 | 亚洲精品白浆高清久久久久久 | 国产精品免费在线 | 精品一区二区观看 | 久久精品国产一区 | 五月综合久久 | 国产乱码一二三区精品 | 日韩精品视频在线 | 人人干人人玩 | 国产成人午夜电影网 | 羞羞视频在线观看网站 | 亚洲综合无码一区二区 | 国产成人高清在线观看 | 国产男女视频网站 | 成人免费视频观看 | 色综合天天天天做夜夜夜夜做 | 欧美一级小视频 | 香蕉国产在线视频 | 91五月婷蜜桃综合 | 久久福利电影 |