27/04/2025
Introduktion til Fuldskærm i Vue.js
I den moderne webudvikling er evnen til at vise indhold i fuldskærm blevet en væsentlig funktion for mange applikationer, lige fra medieafspillere til præsentationer og spil. Med Vue.js, et populært JavaScript-framework, kan denne funktionalitet implementeres relativt enkelt ved hjælp af biblioteker som vue-fullscreen. Dette bibliotek giver udviklere et brugervenligt værktøj til at håndtere fuldskærmstilstand direkte i deres Vue-komponenter. I denne artikel vil vi dykke ned i, hvordan du installerer og bruger vue-fullscreen, udforske dets forskellige anvendelsesmuligheder, og se på de tilgængelige metoder og muligheder for at tilpasse oplevelsen.

Installation af vue-fullscreen
Før du kan begynde at bruge vue-fullscreen, skal det installeres i dit Vue.js-projekt. Den mest almindelige metode er at bruge npm (Node Package Manager) eller yarn. Åbn din terminal eller kommandoprompt i projektets rodmappe og kør følgende kommando:
npm install vue-fullscreeneller
yarn add vue-fullscreen
Når installationen er fuldført, er biblioteket klar til at blive integreret i din Vue-applikation.
Brug af vue-fullscreen som Plugin
En af de mest fleksible måder at bruge vue-fullscreen på er som et Vue-plugin. Dette giver dig adgang til bibliotekets funktioner via this.$fullscreen i dine komponenter. For at installere det som et plugin, skal du importere det og derefter kalde Vue.use() i din hovedfil (typisk main.js eller main.ts):
import Vue from 'vue' import Fullscreen from 'vue-fullscreen' Vue.use(Fullscreen) new Vue({ // ... din app konfiguration }).$mount('#app')Efter installationen som plugin kan du bruge this.$fullscreen-instansen i dine Vue-komponenter. Her er et eksempel på, hvordan du kan oprette en knap, der skifter en bestemt div til fuldskærm:
<template> <div id="app"> <div class="content-to-fullscreen"> Dette indhold skal vises i fuldskærm. </div> <button type="button" @click="toggleFullscreen">Toggle Fuldskærm</button> </div> </template> <script> export default { methods: { toggleFullscreen() { // Få fat i elementet, der skal vises i fuldskærm const targetElement = this.$el.querySelector('.content-to-fullscreen');// Brug toggle-metoden fra plugin'et this.$fullscreen.toggle(targetElement, { callback: this.handleFullscreenChange, wrap: true, // Pak elementet ind i en wrapper background: '#000' // Sæt baggrundsfarve for wrapper }); }, handleFullscreenChange(isisFullscreen) { // Håndter ændringer i fuldskærmstilstanden console.log('Fuldskærm er nu:', isisFullscreen); } } } </script> <style> .content-to-fullscreen { padding: 20px; background-color: #f0f0f0; border: 1px solid #ccc; margin-bottom: 20px; } </style>
Vigtig bemærkning: På grund af browserens sikkerhedsfunktioner kan fuldskærmstilstand kun aktiveres via en brugergestus, såsom et museklik. Dette betyder, at du ikke kan starte fuldskærm automatisk ved indlæsning af siden.
Brug af vue-fullscreen som Komponent
Udover at bruge biblioteket som et plugin, kan du også importere og registrere vue-fullscreen som en lokal komponent i dine Vue-komponenter. Dette giver en mere komponentbaseret tilgang.
Først skal du importere komponenten:
import FullscreenComponent from 'vue-fullscreen/src/component.vue' export default { components: { Fullscreen: FullscreenComponent }, // ... din komponent logik } Derefter kan du bruge komponenten i din template:
<template> <div id="app"> <fullscreen ref="fullscreen" :fullscreen.sync="isContentFullscreen"> <div class="fullscreen-content"> Dette er indholdet i komponenten. </div> </fullscreen><button type="button" @click="toggleComponentFullscreen">Fuldskærm Komponent</button> <button type="button" @click="exitComponentFullscreen">Afslut Fuldskærm Komponent</button> </div> </template> <script> import FullscreenComponent from 'vue-fullscreen/src/component.vue' export default { components: { Fullscreen: FullscreenComponent }, data() { return { isContentFullscreen: false }; }, methods: { toggleComponentFullscreen() { // Brug toggle-metoden på komponenten this.$refs['fullscreen'].toggle(); // Eller synkroniser via .sync // this.isContentFullscreen = !this.isContentFullscreen; }, exitComponentFullscreen() { this.$refs['fullscreen'].exit(); } } } </script> <style> .fullscreen-content { padding: 30px; background-color: lightblue; color: white; text-align: center; } </style>
Når du bruger komponenten, kan du binde en datavariabel til :fullscreen.sync-proppen. Denne prop kan både læses og skrives til, hvilket giver dig mulighed for at styre fuldskærmstilstanden via din datamodel og modtage opdateringer, når tilstanden ændres (via change-eventen).
Metoder og Muligheder
Både plugin- og komponentmetoden tilbyder et sæt af metoder til at styre fuldskærmstilstanden:
Metoder (Plugin & Komponent)
toggle([force]): Skifter mellem fuldskærm og normal tilstand. Kan tage et valgfritforce-argument (boolean) til at tvinge ind- eller udgang af fuldskærm.enter([target, options]): Går ind i fuldskærmstilstand. Kan tage et valgfrittarget-element ogoptions-objekt.exit(): Afslutter fuldskærmstilstand.getState(): Returnerer den aktuelle fuldskærmstilstand (boolean). Bemærk, at denne operation er asynkron, så du kan ikke altid få den korrekte tilstand øjeblikkeligt efter kaldet.
Muligheder (Options)
Når du bruger toggle, enter eller exit metoderne, kan du specificere et options-objekt for at tilpasse adfærden:
callback: En funktion, der kaldes, når fuldskærmstilstanden ændres. Den modtager et boolean-argument, der angiver, om fuldskærm er aktiv.fullscreenClass: En streng, der angiver den CSS-klasse, der skal tilføjes til mål-elementet, når det er i fuldskærm. Standard er 'fullscreen'.wrap: Et boolean-værdi. Hvistrue, vil mål-elementet blive indkapslet i endivmed en standard baggrundsfarve. Dette kan være nyttigt til at håndtere baggrundsfarver og styling. Standard ertrue.background: En streng, der definerer baggrundsstilen for wrapper-elementet, nårwrapertrue. Standard er '#333'.
Hvis du har brug for at undgå navnekonflikter, især hvis du bruger andre biblioteker, der bruger lignende navne, kan du specificere et brugerdefineret navn, når du bruger vue-fullscreen som plugin:
import Vue from 'vue' import Fullscreen from 'vue-fullscreen' Vue.use(Fullscreen, { name: 'fs' }) // Nu kan du tilgå det via this.$fs i dine komponenterI din template kan du så bruge det nye alias:
<template> <div id="app"> <fs ref="fullscreen" :fullscreen.sync="fullscreen"> Indhold til fs. </fs> <button @click="triggerFs">Fuldskærm med fs</button> </div> </template> <script> export default { methods: { triggerFs() { this.$refs['fullscreen'].toggle(); // Eller brug plugin-metoden med det nye navn // this.$fs.toggle(this.$el.querySelector('fs'), { wrap: false }); } } } </script>Løsning af Højde-problemer (min-height) i Vue 3
Et relateret problem, som nogle udviklere støder på, er at få deres Vue-applikationer til at fylde hele browserens synlige højde, især når man bruger frameworks som Bootstrap. Selvom vue-fullscreen primært handler om at aktivere fuldskærmstilstand, kan grundlæggende layout-højdeindstillinger være afgørende for en god brugeroplevelse.
Hvis du oplever, at en vh-100 klasse fra Bootstrap ikke får din app til at fylde hele højden, kan det skyldes, hvordan elementer arver højde. I Vue 3, især med en router, skal du ofte sikre dig, at de højeste niveau-elementer i din app (f.eks. i App.vue) er konfigureret korrekt.

Her er et eksempel på, hvordan du kan strukturere din App.vue for at sikre, at den fylder hele højden, hvilket kan være en forudsætning for korrekt fuldskærmsfunktion:
<template> <div id="app-container" class="h-100"> <!-- Sørg for at din router-view også kan tage højde --> <router-view class="h-100" /> </div> </template> <script> export default { name: "App" } </script> <style> /* Sørg for at html og body også kan tage højde */ html, body { height: 100%; margin: 0; padding: 0; }app-container {
height: 100%; /* Andre nødvendige styles / } / Bootstrap's vh-100 klasser burde fungere her, men hvis ikke, kan du manuelt sætte height: 100vh; / .h-100 { height: 100% !important; } @media (min-width: 576px) { .h-100 { height: 100% !important; } } / ... andre Bootstrap responsive breakpoints hvis nødvendigt */ </style>
Ved at sikre, at html, body og dit primære app-container-element har en defineret højde (ofte 100% eller 100vh), kan du undgå de problemer, hvor indholdet "krymper" og ikke fylder den tilgængelige plads, hvilket er essentielt for en glat fuldskærmsoplevelse.
Ofte Stillede Spørgsmål (FAQ)
Hvordan kan jeg få adgang til fuldskærmstilstanden i min komponent?
Du kan få adgang til den aktuelle fuldskærmstilstand ved at bruge this.$fullscreen.getState(), hvis du har installeret vue-fullscreen som et plugin, eller this.$refs['your-ref-name'].getState(), hvis du bruger det som en komponent.
Kan jeg tvinge indgang i fuldskærm uden en brugergestus?
Nej, af sikkerhedsmæssige årsomstændigheder tillader browsere ikke at aktivere fuldskærm uden en direkte brugerinteraktion (f.eks. et klik). Alle forsøg på at omgå dette vil blive blokeret af browseren.
Hvordan påvirker wrap: true min fuldskærms visning?
Når wrap er sat til true, bliver det element, du sender til fuldskærm, pakket ind i en ekstra div. Denne div får en standard baggrundsfarve (sort som standard, kan ændres med background-optionen), hvilket kan være nyttigt for at give en ensartet baggrund, når elementet fylder skærmen. Hvis du foretrækker at håndtere styling selv, kan du sætte wrap til false.
Er der kendte problemer med fuldskærm i bestemte browsere?
Nogle ældre versioner af browsere, især Firefox og Internet Explorer 11, kan have særlige måder at håndtere asynkron operation på, hvilket kan påvirke, hvornår du kan få den korrekte tilstand efter at have kaldt en metode. Bibliotekets dokumentation nævner, at tilføjelse af babel-polyfill til Webpack-konfigurationen kan hjælpe i Firefox. For IE11 kan der være behov for yderligere specifikke løsninger.
Konklusion
Med vue-fullscreen har det aldrig været nemmere at tilføje fuldskærmsfunktionalitet til dine Vue.js-projekter. Uanset om du foretrækker at bruge det som et globalt plugin eller som en lokal komponent, tilbyder biblioteket en ren og effektiv API til at styre fuldskærmstilstand. Husk at tage højde for browserkompatibilitet og brugerinteraktionskrav for at sikre den bedst mulige oplevelse for dine brugere.
Hvis du vil læse andre artikler, der ligner Gør din Vue-app fuldskærm, kan du besøge kategorien Teknologi.
