關(guān)于微信H5頁面的圖片和視頻全屏問題

項目需求

  1. 圖片或者視頻在頁面中居中顯示(邊框圓角)
  2. 點擊圖片或者視頻時,全屏顯示/播放

看起來是很簡單吧,但是移動端仿荆、微信內(nèi)置的QQ垃圾瀏覽器組合起來臊泌,事情就沒有那么簡單了鲤桥。。渠概。還是先說簡單的吧茶凳。

圖片全屏

img標(biāo)簽上不綁定任何事件時,在安卓機(jī)上點擊可以全屏顯示播揪,再次點擊退出全屏贮喧,簡直是perfect。完全符合需求猪狈,但是O渎佟!雇庙!
在IOS的部分機(jī)型上谓形,點擊偽全屏顯示(微信頂部Bar有占位),再次點擊沒有反應(yīng)疆前。還有一些IOS機(jī)型是點擊完全沒有反應(yīng)寒跳。好吧,沒法偷懶了峡继。

由于有頂部Bar的存在冯袍,無法完全全屏實現(xiàn)(目前沒有發(fā)現(xiàn)可行方法)。降級為可視區(qū)域內(nèi)全屏顯示碾牌。

實現(xiàn)思路
  1. 首先獲取到手機(jī)可視區(qū)域的寬康愤。
var width = document.documentElement.clientWidth;
  1. 設(shè)置一個modal層,包含要顯示圖片舶吗,占滿全屏征冷,浮在最上層。
  2. 頁面剛開始加載進(jìn)入的時候誓琼,隱藏modal層检激。只顯示居中的圖片。
  3. 當(dāng)點擊居中的圖片時腹侣,顯示modal層叔收,點擊modal層時,隱藏modal傲隶。

視頻全屏播放

QQ垃圾瀏覽器video標(biāo)簽安卓機(jī)上面非常丑陋饺律,視頻播放完會自動加入推薦視頻。優(yōu)先級最高跺株,浮在最頂層复濒,不支持border-radius脖卖。
在某華為機(jī)型上不會自動全屏播放,在其他一些安卓機(jī)上全屏播放完返回頁面時巧颈,會導(dǎo)致樣式錯亂畦木,好像冒出去了似的。

QQ瀏覽器提供的同層播放器接入規(guī)范也并沒有什么卵用砸泛。

還是給大家隆重介紹一下video.js吧十籍。純英文文檔,對于小白的我來說晾嘶,看起來還是比較費勁的妓雾。我踩過的坑希望大家都能繞過去娶吞。

使用方法

引入方法:

第一種

   <link rel="shortcut icon" type="image/ico" href="/static/favicon.ico" />
   <link  rel="stylesheet">

第二種

npm install video.js

初始化:

<video id="video" class="video-js"></video>
// 引入核心就在class="video-js"

或者使用js初始化垒迂,這里不再介紹
實例化對象:

var video=videojs('video');
// 對應(yīng)video標(biāo)簽的id

video.js相關(guān)的API豐富。

參考videojs入門指南1——videojs基礎(chǔ)使用

1. autoplay()獲取或者設(shè)置自動播放屬性
2. currentTime()設(shè)置或者獲取當(dāng)前播放進(jìn)度
3. duration()獲取視屏的總長度妒蛇,一般要等到視屏對象完全加載后才能獲取到机断,一般我們會使用定時輪詢的方式來獲取總時長
4. ended()獲取當(dāng)前視屏對象是否已經(jīng)處于結(jié)束狀態(tài)
5. enterFullWindow() 當(dāng)全屏不支持我們可以視頻容器延伸到瀏覽器將讓我們一樣寬。經(jīng)過試驗改api完全無法使視屏進(jìn)入全屏绣夺。分析源碼后發(fā)現(xiàn)真正進(jìn)入全屏的api應(yīng)該是requestFullscreen()吏奸,但可惜該api只能又手勢觸發(fā)函數(shù)執(zhí)行,連模擬點擊都沒法觸發(fā)他陶耍。
// requestFullscreen()這個我的庫中沒有這個API奋蔚? 因此我用的isFullscreen。
6. exitFullscreen() 退出全屏烈钞,有效的
7. exitFullWindow() 退出全屏泊碑,試了沒什么用
8. height() 設(shè)置/獲取播放器的高度
9. width() 設(shè)置/獲取播放器的寬度
10. isFullscreen() 檢查是否處于全屏模式
11. load() 開始加載視屏
12. loop() 在視頻中獲取或設(shè)置循環(huán)屬性元素
13. muted() 獲取當(dāng)前的靜音狀態(tài)
14. pause() 暫停視頻
15. paused() 檢查視屏是否暫停
16. play() 播放視屏
17. played() 檢查視屏播放狀態(tài)
18. preload() 獲取或設(shè)置預(yù)加載屬性
19. ready() 視屏對象加載完成后調(diào)用ready中的回調(diào)函數(shù)
20. poster() 獲取或設(shè)置海報圖像源url
21. reset() 重載視屏
22. src() 更換視頻源

事件監(jiān)聽方法:

video.on('ended', function() {
    //
  });
需求實現(xiàn)思路

video.js解決了微信安卓端視頻播放完畢樣式混亂,但是依然無法實現(xiàn)四周圓角毯欣。只能做繞過處理馒过。進(jìn)入頁面顯示視頻的首幀圖和播放鍵,讓其看起來像是視頻的樣子酗钞。然后點擊后腹忽,真正的視頻標(biāo)簽全屏播放。這樣變向的實現(xiàn)圓角砚作。

<div class="share-video" >
    <img class="poster" src="{{videoPoster}}" on-click="changePlay">
    <img src="{{icon}}" class="pausePlay {{isPlay?'hidden':''}}" on-click="changePlay"/>
    <video id="video" class="video-js" style="width:0px;height:0px;">
    </video>
 </div> 
// SAN框架組件
// 組件attached生命周期函數(shù)中執(zhí)行
// res為ajax請求返回的數(shù)據(jù)窘奏,包含視頻和首幀圖的url
videoInit(res) {
    this.data.set('videoPoster', res.data.image);
    const video = videojs('video', {
        sources: [{
            src: res.data.video
        }]
    });
    // 視頻初始化時,設(shè)置寬高為0葫录,隱藏
    video.ready(() => {
        video.width('0px');
        video.height('0px');
    });
    video.isFullscreen(true);// 設(shè)置要全屏播放着裹。
    video.on('ended', () => {
        video.exitFullscreen();//退出全屏
        video.width('0px');
        video.height('0px');
        this.showIcon();//顯示播放鍵
    });
    video.on('pause', this.showIcon.bind(this));
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市压昼,隨后出現(xiàn)的幾起案子求冷,更是在濱河造成了極大的恐慌瘤运,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件匠题,死亡現(xiàn)場離奇詭異拯坟,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)韭山,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進(jìn)店門郁季,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人钱磅,你說我怎么就攤上這事梦裂。” “怎么了盖淡?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵年柠,是天一觀的道長。 經(jīng)常有香客問我褪迟,道長冗恨,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任味赃,我火速辦了婚禮掀抹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘心俗。我一直安慰自己傲武,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布城榛。 她就那樣靜靜地躺著揪利,像睡著了一般。 火紅的嫁衣襯著肌膚如雪吠谢。 梳的紋絲不亂的頭發(fā)上土童,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天,我揣著相機(jī)與錄音工坊,去河邊找鬼献汗。 笑死,一個胖子當(dāng)著我的面吹牛王污,可吹牛的內(nèi)容都是我干的罢吃。 我是一名探鬼主播,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼昭齐,長吁一口氣:“原來是場噩夢啊……” “哼尿招!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤就谜,失蹤者是張志新(化名)和其女友劉穎怪蔑,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體丧荐,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡缆瓣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了虹统。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片弓坞。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖车荔,靈堂內(nèi)的尸體忽然破棺而出渡冻,到底是詐尸還是另有隱情,我是刑警寧澤忧便,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布族吻,位于F島的核電站,受9級特大地震影響茬腿,放射性物質(zhì)發(fā)生泄漏呼奢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一切平、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧辐董,春花似錦悴品、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至孤澎,卻和暖如春届氢,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背覆旭。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工退子, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人型将。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓寂祥,卻偏偏與公主長得像,于是被迫代替她去往敵國和親七兜。 傳聞我的和親對象是個殘疾皇子丸凭,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明先生_X自主閱讀 15,982評論 3 119
  • 畢業(yè)前铛碑,收到太多謝意, 像收到季節(jié)的果實虽界, 像收到旅行的船票亚茬。 從你們嘴里說出, 感謝母校浓恳,感謝老師刹缝, 絕不客套的...
    玉藕閱讀 256評論 0 4
  • 畫主先畫了房子,然后是草地颈将,樹梢夯,吊床,吊床上的是畫主二寶晴圾,旁邊是畫主自己颂砸,本來想畫面對孩子的,但不知道分析圖能不能...
    何呵_d71d閱讀 395評論 1 1
  • 蔣先生是個孤兒死姚,不孤獨的孤兒人乓。 米小姐是個知了,嘰嘰喳喳的知了都毒。 蔣先生只知道自己姓蔣色罚,除此以外沒有任何關(guān)于親生父...
    蘇景先生愛吃魚閱讀 275評論 1 0
  • 情刀 作者:嶼上日光 愛是箭 情是刀 箭射中的是 一點傷心 刀劈中了是 一道傷口 一箭穿心 一刀入...
    嶼上日光閱讀 206評論 0 0