JavaScript 實(shí)現(xiàn)點(diǎn)擊關(guān)閉全屏示例詳解
引言
今天,我們來(lái)探討的問(wèn)題是:
當(dāng)點(diǎn)擊圖片的時(shí)候,我們需要其全屏展示,當(dāng)我們?cè)俅吸c(diǎn)擊的時(shí)候,圖片退出全屏播放。
PS: 我們退出全屏播放的情況一般是按 esc 退出。圖片可以延伸到任何的 DOM 節(jié)點(diǎn)
在文末,我會(huì)將問(wèn)題升級(jí),留一個(gè)題目給讀者思考??
圖片全屏,這個(gè)跟文章全屏的效果一樣,比如下面的文章全屏:
就是一個(gè)元素鋪平整個(gè)屏幕
思路
那么,問(wèn)題我們知道了。解決問(wèn)題的思路是怎么樣的呢?
- 我們獲取到圖片元素的 DOM 節(jié)點(diǎn)
- 我們調(diào)用全屏的函數(shù)進(jìn)行全屏展示
- 瀏覽器監(jiān)聽(tīng)點(diǎn)擊事件,當(dāng)圖片是全屏的狀態(tài),再次點(diǎn)擊圖片的時(shí)候,調(diào)用函數(shù)退出全屏
好了,思路有了,我們來(lái)實(shí)現(xiàn)下。
具體實(shí)現(xiàn)
假設(shè)我們有 html 代碼如下:
<img id="image" src="path/to/image.postfix" alt="img" />
現(xiàn)在我們編寫(xiě)下 javascript 代碼。
// 退出全屏 ngAfterViewInit() { const image = document.getElementById('image'); image.addEventListener('click', (event: any) => { if(document.fullscreenElement === image) { document.exitFullscreen(); } event.preventDefault(); }) } // 全屏查看 public fullscreenView(): void { const image = document.getElementById('image'); image.requestFullscreen() }
這里我用了 typescript 來(lái)編寫(xiě)
當(dāng)然,上面的代碼并沒(méi)有考慮相關(guān)的兼容性。
requestFullscreen 和 exitFullscreen 方法對(duì)現(xiàn)代的瀏覽器支持還是很可以的,在 PC 端上展示毫無(wú)壓力。
但是,我們還是得對(duì)代碼進(jìn)行瀏覽器兼容寫(xiě)法:
這里我新建了個(gè) utils.ts 的文件:
export class Utils { public static gotoFullscreen(dom: any): void { if (dom.requestFullscreen) { dom.requestFullscreen() } else if (dom.mozRequestFullScreen) { dom.mozRequestFullScreen() } else if (dom.webkitRequestFullscreen) { dom.webkitRequestFullscreen() } else if (dom.msRequestFullscreen) { dom.msRequestFullscreen() } else { console.error('當(dāng)前瀏覽器不支持部分全屏!') } } public static exitFullscreen(dom: any): void { if (dom.exitFullscreen) { dom.exitFullscreen() } else if (dom.webkitExitFullscreen) { dom.webkitExitFullscreen() } else if (dom.msExitFullscreen) { dom.msExitFullscreen() } } }
上面兩個(gè)方法都是靜態(tài)方法,調(diào)用方式 類名.靜態(tài)方法,比如:Utils.gotoFullscreen(dom)。
問(wèn)題升級(jí)
單點(diǎn)擊圖片,我們需要其全屏展示。然后設(shè)置全屏?xí)r候,右上角有一個(gè)退出的按鈕。點(diǎn)擊退出按鈕,退出全屏展示。
感興趣的讀者可以先自己嘗試下。
這里我給出簡(jiǎn)單的思路,可以作為參考。
1. 設(shè)定布局,將一個(gè) div 包裹圖片
2. 在 div 中設(shè)置一個(gè)按鈕的元素 button,并對(duì) button 進(jìn)行 css 布局
3. 在圖片全屏的時(shí)候,顯示 button,并對(duì) button 進(jìn)行按鈕事件(調(diào)用退出全屏的函數(shù))
以上就是JavaScript 實(shí)現(xiàn)點(diǎn)擊關(guān)閉全屏示例詳解的詳細(xì)內(nèi)容,更多關(guān)于JavaScript 點(diǎn)擊關(guān)閉全屏的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
微信小程序聯(lián)網(wǎng)請(qǐng)求的輪播圖
這篇文章主要介紹了微信小程序聯(lián)網(wǎng)請(qǐng)求的輪播圖的相關(guān)資料,需要的朋友可以參考下2017-07-07無(wú)UI?組件Headless框架邏輯原理用法示例詳解
這篇文章主要為大家介紹了無(wú)UI?組件Headless框架邏輯原理用法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10JS前端實(shí)現(xiàn)fsm有限狀態(tài)機(jī)實(shí)例詳解
這篇文章主要為大家介紹了JS前端實(shí)現(xiàn)fsm有限狀態(tài)機(jī)實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09微信小程序 兩種滑動(dòng)方式(橫向滑動(dòng),豎向滑動(dòng))詳細(xì)及實(shí)例代碼
這篇文章主要介紹了微信小程序 兩種滑動(dòng)方式詳細(xì)及實(shí)例代碼的相關(guān)資料,這里對(duì)橫向滑動(dòng)和豎向滑動(dòng)都做介紹,需要的朋友可以參考下2017-01-01微信小程序 scroll-view隱藏滾動(dòng)條詳解
這篇文章主要介紹了微信小程序 scroll-view隱藏滾動(dòng)條和跳轉(zhuǎn)頁(yè)面的相關(guān)資料,需要的朋友可以參考下2017-01-01JS實(shí)現(xiàn)大數(shù)相加大數(shù)相乘示例詳解
這篇文章主要為大家介紹了JS實(shí)現(xiàn)大數(shù)相加大數(shù)相乘示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08微信小程序 ecshop地址三級(jí)聯(lián)動(dòng)實(shí)現(xiàn)實(shí)例代碼
這篇文章主要介紹了微信小程序 ecshop地址3級(jí)聯(lián)動(dòng)實(shí)現(xiàn)實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-02-02