最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

前端Vue全屏screenfull通用解決方案及原理詳細(xì)分析

 更新時(shí)間:2024年10月18日 10:09:47   作者:溜_x_i_a_o_迪  
這篇文章主要給大家介紹了關(guān)于前端Vue全屏screenfull通用解決方案及原理的相關(guān)資料,使用screenfull這一第三方庫可以實(shí)現(xiàn)更穩(wěn)定的全屏功能,需要的朋友可以參考下

全屏 API

原理

對于 screenfull 而言,瀏覽器本身已經(jīng)提供了對用的 API點(diǎn)擊這里即可查看,這個(gè) API 中,主要提供了兩個(gè)方法:

  • [Document.exitFullscreen()](https://developer.mozilla.org/zh-CN/docs/Web/API/Document/exitFullscreen):該方法用于請求從全屏模式切換到窗口模式
  • [Element.requestFullscreen()](https://developer.mozilla.org/zh-CN/docs/Web/API/Element/requestFullScreen):該方法用于請求瀏覽器(user agent)將特定元素(甚至延伸到它的后代元素)置為全屏模式

    比如我們可以通過 document.getElementById('app').requestFullscreen() 在獲取 id=app 的 DOM 之后,把該區(qū)域置為全屏

原生方法存在問題

嘗試了一個(gè)網(wǎng)頁,(整個(gè)) 區(qū)域背景顏色為黑色

所以通常情況下我們不會(huì)直接使用該 API 來去實(shí)現(xiàn)全屏效果,而是會(huì)使用它的包裝庫 screenfull

方案

方案實(shí)現(xiàn)分為兩步:

  • 封裝 screenfull 組件

    展示切換按鈕

    基于 screenfull (第三方庫)實(shí)現(xiàn)切換功能

  • 在 navbar 中引入該組件

實(shí)現(xiàn) screenfull 組件

封裝 **screenfull** 組件:

npm i screenfull@5.1.0
  • 創(chuàng)建 Screenfull 組件

icon是一個(gè)變化的值:需要監(jiān)聽全屏的變化然后切換圖標(biāo)非全屏模式展示:

全屏模式展示:

<template>
  <div>
    <svg-icon
      :icon="isFullscreen ? 'exit-fullscreen' : 'fullscreen'"
      @click="onToggle"
    />
  </div>
</template>

<script setup>
import { ref, onMounted, onUnmounted } from 'vue'
import screenfull from 'screenfull'

// ref 對象,用于存儲當(dāng)前是否為全屏狀態(tài),初始值為 false。
const isFullscreen = ref(false)

// 監(jiān)聽screenfull的變化
const change = () => {
  isFullscreen.value = screenfull.isFullscreen
}

// 切換事件
const onToggle = () => {
  // 切換全屏模式
  screenfull.toggle()
}

// 設(shè)置偵聽器
onMounted(() => {
  // on:綁定監(jiān)聽
  screenfull.on('change', change)
})

// 刪除偵聽器
onUnmounted(() => {
  // off:取消監(jiān)聽
  screenfull.off('change', change)
})
</script>

<style lang="scss" scoped></style>

引入該組件:

<screenfull class="right-menu-item hover-effect" />
import Screenfull from '@/components/Screenfull'

總結(jié)

  • 功能: 該組件允許用戶通過點(diǎn)擊圖標(biāo)在全屏和窗口模式之間切換。圖標(biāo)會(huì)根據(jù)當(dāng)前狀態(tài)自動(dòng)切換顯示 “進(jìn)入全屏” 或 “退出全屏” 圖標(biāo)。
  • 核心邏輯: 使用 screenfull 庫來處理全屏切換,并使用 Vue 的 ref 和生命周期鉤子 onMounted、onUnmounted 來管理全屏狀態(tài)的監(jiān)聽與更新。
  • 用戶體驗(yàn): 用戶點(diǎn)擊圖標(biāo)時(shí),界面會(huì)根據(jù)全屏狀態(tài)自動(dòng)更新圖標(biāo)和界面顯示,確保全屏功能的順暢操作。

到此這篇關(guān)于前端Vue全屏screenfull通用解決方案及原理的文章就介紹到這了,更多相關(guān)前端Vue全屏screenfull通用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mint-ui在vue中的使用示例

    mint-ui在vue中的使用示例

    Mint UI 是 由餓了么前端團(tuán)隊(duì)推出的 一個(gè)基于 Vue.js 的移動(dòng)端組件庫,這篇文章主要介紹了mint-ui在vue中的使用示例,這里整理了詳細(xì)的代碼,有需要的小伙伴可以參考下
    2018-04-04
  • Vue中指令v-model的原理及使用方法

    Vue中指令v-model的原理及使用方法

    v-model是Vue中的一個(gè)重要語法糖,主要用于實(shí)現(xiàn)數(shù)據(jù)的雙向綁定,它通過結(jié)合value屬性和input事件,簡化了代碼并提高了開發(fā)效率,文中通過代碼介紹的非常詳解,需要的朋友可以參考下
    2024-09-09
  • window.onresize在vue中只能使用一次,自適應(yīng)resize報(bào)錯(cuò)問題

    window.onresize在vue中只能使用一次,自適應(yīng)resize報(bào)錯(cuò)問題

    這篇文章主要介紹了window.onresize在vue中只能使用一次,自適應(yīng)resize報(bào)錯(cuò)問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • element日歷calendar組件上月、今天、下月、日歷塊點(diǎn)擊事件及模板源碼

    element日歷calendar組件上月、今天、下月、日歷塊點(diǎn)擊事件及模板源碼

    這篇文章主要介紹了element日歷calendar組件上月、今天、下月、日歷塊點(diǎn)擊事件及模板源碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • vue如何動(dòng)態(tài)設(shè)置class、動(dòng)態(tài)設(shè)置style

    vue如何動(dòng)態(tài)設(shè)置class、動(dòng)態(tài)設(shè)置style

    這篇文章主要介紹了vue如何動(dòng)態(tài)設(shè)置class、動(dòng)態(tài)設(shè)置style,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • 關(guān)于vue-i18n在單文件js中的使用

    關(guān)于vue-i18n在單文件js中的使用

    這篇文章主要介紹了關(guān)于vue-i18n在單文件js中的使用,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Vue下拉選擇框Select組件使用詳解(一)

    Vue下拉選擇框Select組件使用詳解(一)

    這篇文章主要為大家詳細(xì)介紹了Vue下拉選擇框Select組件的使用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 基于VUE移動(dòng)音樂WEBAPP跨域請求失敗的解決方法

    基于VUE移動(dòng)音樂WEBAPP跨域請求失敗的解決方法

    這篇文章主要介紹了基于VUE移動(dòng)音樂WEBAPP跨域請求失敗的解決方法,需要的朋友可以參考下
    2018-01-01
  • Vue多種高效刪除node_modules的方法

    Vue多種高效刪除node_modules的方法

    本文介紹了多種高效刪除node_modules目錄的方法,包括使用專用工具、系統(tǒng)命令、包管理器功能、腳本自動(dòng)化、配置優(yōu)化以及進(jìn)階技巧,推薦使用rimraf或系統(tǒng)原生命令,它們通常比手動(dòng)刪除快10倍以上,感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • vue3配置permission.js和router、pinia實(shí)現(xiàn)路由攔截的簡單步驟

    vue3配置permission.js和router、pinia實(shí)現(xiàn)路由攔截的簡單步驟

    這篇文章主要介紹了如何在場景網(wǎng)站中實(shí)現(xiàn)對未登錄用戶訪問的攔截,通過配置Pinia,創(chuàng)建一個(gè)user.js文件來存儲用戶數(shù)據(jù),并在main.js中進(jìn)行配置,同時(shí)通過在router目錄下創(chuàng)建permission.js文件,可以實(shí)現(xiàn)對未登錄用戶的攔截,需要的朋友可以參考下
    2024-11-11

最新評論

平南县| 玉山县| 宽城| 贡觉县| 郯城县| 洛川县| 深泽县| 永靖县| 柳林县| 岑溪市| 卢氏县| 阜平县| 衡阳市| 碌曲县| 黑河市| 阳西县| 莱芜市| 财经| 靖安县| 越西县| 门源| 寿阳县| 孙吴县| 大同县| 凉城县| 阿拉善左旗| 汤原县| 手游| 阿瓦提县| 汝阳县| 老河口市| 徐州市| 阿克| 霍林郭勒市| 勃利县| 泽库县| 白水县| 武义县| 额济纳旗| 高碑店市| 黑河市|