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

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

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

全屏 API

原理

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

  • [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ū)域置為全屏

原生方法存在問題

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

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

方案

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

  • 封裝 screenfull 組件

    展示切換按鈕

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

  • 在 navbar 中引入該組件

實現(xiàn) screenfull 組件

封裝 **screenfull** 組件:

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

icon是一個變化的值:需要監(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é)

  • 功能: 該組件允許用戶通過點擊圖標(biāo)在全屏和窗口模式之間切換。圖標(biāo)會根據(jù)當(dāng)前狀態(tài)自動切換顯示 “進入全屏” 或 “退出全屏” 圖標(biāo)。
  • 核心邏輯: 使用 screenfull 庫來處理全屏切換,并使用 Vue 的 ref 和生命周期鉤子 onMountedonUnmounted 來管理全屏狀態(tài)的監(jiān)聽與更新。
  • 用戶體驗: 用戶點擊圖標(biāo)時,界面會根據(jù)全屏狀態(tài)自動更新圖標(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 是 由餓了么前端團隊推出的 一個基于 Vue.js 的移動端組件庫,這篇文章主要介紹了mint-ui在vue中的使用示例,這里整理了詳細的代碼,有需要的小伙伴可以參考下
    2018-04-04
  • Vue中指令v-model的原理及使用方法

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

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

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

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

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

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

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

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

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

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

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

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

    基于VUE移動音樂WEBAPP跨域請求失敗的解決方法

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

    Vue多種高效刪除node_modules的方法

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

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

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

最新評論

临泉县| 阳新县| 玉屏| 迁西县| 沂水县| 车险| 昔阳县| 绥芬河市| 昭觉县| 康马县| 东乌| 光山县| 新丰县| 麦盖提县| 营口市| 涿州市| 南投市| 博乐市| 北票市| 航空| 元阳县| 黔江区| 团风县| 宁远县| 定日县| 崇仁县| 朝阳市| 禄丰县| 东乡县| 甘南县| 灵武市| 宜兰市| 彰化市| 郁南县| 明溪县| 藁城市| 文昌市| 南漳县| 商水县| 格尔木市| 滨州市|