vue 項(xiàng)目全屏插件screenfull使用案例
一、使用screenfull插件
1. npm安裝screenfull插件
npm install screenfull --save
提示:在vue項(xiàng)目中導(dǎo)入screenfull插件,出現(xiàn)編譯錯(cuò)誤,錯(cuò)誤如圖所示:

原因分析:
安裝的screenfull插件版本過高
解決方法:
降低插件版本
npm install screenfull@4.2.0 --save
2. 在vue文件中引入screenfull插件
import screenfull from 'screenfull'
3. vue文件demo
<template>
<div>
<ul>
<li @click="clickFun">{{isFullFlag?'退出全屏':'全屏'}}</li>
<li @click="clickFun1">{{isFullFlag1?'退出部分全屏':'部分全屏'}}</li>
</ul>
<!--需要全屏展示的內(nèi)容-->
<div id="content"></div>
</div>
</template><script>
import screenfull from 'screenfull'
export default {
name: "HelloWorld",
data() {
return {
isFullFlag: false,
isFullFlag1: false,
}
},
mounted() {
// 監(jiān)聽頁面全屏
window.addEventListener("fullscreenchange", (e) => {
console.log(screenfull.isFullscreen)
this.isFullFlag = screenfull.isFullscreen
})
},
methods: {
clickFun() {
this.isFullFlag = !this.isFullFlag
console.log(screenfull)
if (!screenfull.enabled) {
this.$message({
message: 'Your browser does not work',
type: 'warning'
})
return false
}
screenfull.toggle()
},
clickFun1() {
this.isFullFlag1 = !this.isFullFlag1
const element = document.getElementById('content');//指定全屏區(qū)域元素
if (this.isFullFlag1) {
// screenfull.request(element);
element.requestFullscreen()
} else {
document.exitFullscreen();
}
},
},
};
</script>4. 監(jiān)聽F11和手動(dòng)的全屏、退出全屏事件
<i class="i_icon el-icon-full-screen" @click="isScreenFull"></i>
import screenfull from 'screenfull'
mounted() {
this.screenFull();
},
methods: {
//監(jiān)聽Esc事件;
screenFull() {
//監(jiān)聽f11事件
window.addEventListener("keydown", this.KeyDown, true);
//這些監(jiān)聽,可以監(jiān)聽到esc按鍵按下導(dǎo)致的全屏變化,但是監(jiān)聽不到F11的打開全屏的變化,isScreenFull
document.addEventListener("fullscreenchange", () => {
this.isFullscreen = !this.isFullscreen;//你要切換得圖標(biāo)使用得屬性
});
document.addEventListener("mozfullscreenchange", () => {
this.isFullscreen = !this.isFullscreen;
});
document.addEventListener("webkitfullscreenchange", () => {
this.isFullscreen = !this.isFullscreen;
});
document.addEventListener("msfullscreenchange", () => {
this.isFullscreen = !this.isFullscreen;
});
},
KeyDown(event) {
if (event.keyCode === 122) {
event.returnValue = false;
this.isScreenFull(); //觸發(fā)全屏的方法
}
},
//全屏方法
isScreenFull() {
if (!screenfull.isEnabled) {
return false;
}
// 這個(gè)方法會(huì)請(qǐng)求全屏,如果當(dāng)前是全屏則會(huì)退出全屏。
// 無需自己再判斷當(dāng)前屏幕狀態(tài)
screenfull.toggle();
},
}二、快速了解screenfull插件
1. 使用方法
- 首先安裝 npm install screenfull --save
- 在使用.vue文件中 引入 import screenfull from ‘screenfull’
- 在按鈕方法中調(diào)用 screenfull.toggle()
- 還可以檢測(cè)全屏狀態(tài) screenfull.isFullscreen
- 測(cè)試瀏覽器是否支持全screenfull screenfull.isEnabled
2. API
- .request(ele) 全屏
- .exit() 退出全屏
- .toggle() 切換全屏
- .on(event, function) : event為 ‘change’ | ‘error’ 注冊(cè)事件
- .off(event, function) : 移除前面已經(jīng)注冊(cè)的事件
- .element: 返回一個(gè)全屏的dom節(jié)點(diǎn),如果沒有就為 null
- .isFullscreen : 是否是全屏狀態(tài)
- .isEnabled : 判斷是否支持全屏
3. 使用注意事項(xiàng)
- requestFullscreen方法只能由用戶觸發(fā)。
- 頁面跳轉(zhuǎn)需先退出全屏
- 進(jìn)入全屏的元素,將脫離其父元素,所以可能導(dǎo)致之前某些css的失效
- 解決方案:使用 :full-screen偽類 為元素添加全屏?xí)r的樣式(使用時(shí)為了兼容注意添加-webkit、-moz或-ms前綴)
- 我這里是使用原生的方法修改了css
- 一個(gè)元素A全屏后,其子元素要再全屏,需先讓元素A退出全屏
到此這篇關(guān)于vue 項(xiàng)目設(shè)置全屏,使用screenfull插件的文章就介紹到這了,更多相關(guān)vue設(shè)置全屏內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何在 Vite 項(xiàng)目中自動(dòng)為每個(gè) Vue 文件導(dǎo)入 base.les
在Vite配置中通過添加css.preprocessorOptions實(shí)現(xiàn)自動(dòng)導(dǎo)入base.less,簡化Vue組件的樣式設(shè)置,提高代碼的可維護(hù)性,感興趣的朋友跟隨小編一起看看吧2024-09-09
Vue數(shù)據(jù)變化監(jiān)聽錯(cuò)誤的常見原因與解決方案
在?Vue.js?開發(fā)中,watch?是一個(gè)強(qiáng)大的工具,用于監(jiān)聽數(shù)據(jù)的變化并執(zhí)行相應(yīng)的操作,然而,許多開發(fā)者在使用?watch?時(shí)會(huì)遇到數(shù)據(jù)變化未被正確監(jiān)聽的問題,這可能導(dǎo)致程序邏輯錯(cuò)誤或視圖更新失敗,本文將探討這些問題的常見原因,并提供相應(yīng)的解決方案,需要的朋友可以參考下2025-03-03
Vue SPA 初次進(jìn)入加載動(dòng)畫實(shí)現(xiàn)代碼
今天小編就為大家分享一篇Vue SPA 初次進(jìn)入加載動(dòng)畫實(shí)現(xiàn)代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-11-11
Vue axios 將傳遞的json數(shù)據(jù)轉(zhuǎn)為form data的例子
今天小編就為大家分享一篇Vue axios 將傳遞的json數(shù)據(jù)轉(zhuǎn)為form data的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-10-10
vue3?el-table結(jié)合seamless-scroll實(shí)現(xiàn)表格數(shù)據(jù)滾動(dòng)的思路詳解
這篇文章主要介紹了vue3?el-table結(jié)合seamless-scroll實(shí)現(xiàn)表格數(shù)據(jù)滾動(dòng),創(chuàng)建兩個(gè)table,隱藏第一個(gè)table的body部分,這樣就能得到一個(gè)固定的head,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07
vue項(xiàng)目中銷毀window.addEventListener事件監(jiān)聽解析
這篇文章主要介紹了vue項(xiàng)目中銷毀window.addEventListener事件監(jiān)聽,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07

