A simple Vue.js component for fullscreen
Install from GitHub via NPM
npm install vue-fullscreen
To use vue-fullscreen
, simply import it, and call Vue.use()
to install.
<template>
<div id="app">
<fullscreen ref="fullscreen" @change="fullscreenChange">
Content
</fullscreen>
<!-- deprecated
<fullscreen :fullscreen.sync="fullscreen">
Content
</fullscreen>
-->
<button type="button" @click="toggle" >Fullscreen</button>
</div>
</template>
<script>
import fullscreen from 'vue-fullscreen'
import Vue from 'vue'
Vue.use(fullscreen)
export default {
methods: {
toggle () {
this.$refs['fullscreen'].toggle() // recommended
// this.fullscreen = !this.fullscreen // deprecated
},
fullscreenChange (fullscreen) {
this.fullscreen = fullscreen
}
},
data() {
return {
fullscreen: false
}
}
}
</script>
Caution: Because of the browser security function, you can only call these methods by a user gesture(click
or keypress
).
Caution: Since the prop watcher can not be a sync action now, the browser will intercept the subsequent operation of the callback. I recommend you to call the method directly by refs
instead of changing the prop like the old version.
In your vue component, You can use this.$fullscreen
to get the instance.
<template>
<div id="app">
<div class="example">
Content
</div>
<button type="button" @click="toggle" >Fullscreen</button>
</div>
</template>
<script>
import fullscreen from 'vue-fullscreen'
import Vue from 'vue'
Vue.use(fullscreen)
export default {
methods: {
toggle () {
this.$fullscreen.toggle(this.$el.querySelector('.example'), {
wrap: false,
callback: this.fullscreenChange
})
},
fullscreenChange (fullscreen) {
this.fullscreen = fullscreen
}
},
data() {
return {
fullscreen: false
}
}
}
</script>
Toggle the fullscreen mode.
- target:
- Type:
Element
- Default:
document.body
- The element target for fullscreen.
- Type:
- options (optional):
- Type:
Object
- The fullscreen options.
- Type:
- force (optional):
- Type:
Boolean
- Default:
undefined
- pass
true
to force enter ,false
to exit fullscreen mode.
- Type:
enter the fullscreen mode.
- target:
- Type:
Element
- Default:
document.body
- The element target for fullscreen.
- Type:
- options (optional):
- Type:
Object
- The fullscreen options.
- Type:
exit the fullscreen mode.
get the fullscreen state.
- Type:
Boolean
Caution: The action is asynchronous, you can not get the expected state immediately following the calling method.
check browser support for the fullscreen API.
- Type:
Boolean
- Type:
Function
- Default:
null
It will be called when the fullscreen mode changed.
- Type:
String
- Default:
fullscreen
The class will be added to target element when fullscreen mode is on.
- Type:
Boolean
- Default:
true
If true
, the target element will be wrapped up in a background div
, and you can set the background color.
- Type:
String
- Default:
#333
The background style of wrapper, only available when fullscreen mode is on and wrap
is true.
You can simply import the component and register it locally.
<template>
<div id="app">
<fullscreen ref="fullscreen" @change="fullscreenChange">
Content
</fullscreen>
<button type="button" @click="toggle" >Fullscreen</button>
</div>
</template>
<script>
import Fullscreen from "vue-fullscreen/src/component.vue"
export default {
components: {Fullscreen},
methods: {
toggle () {
this.$refs['fullscreen'].toggle()
},
fullscreenChange (fullscreen) {
this.fullscreen = fullscreen
}
},
data() {
return {
fullscreen: false
}
}
}
</script>
Toggle the fullscreen mode.You can pass force
to force enter or exit fullscreen mode.
- force (optional):
- Type:
Boolean
- Default:
undefined
- pass
true
to force enter ,false
to exit fullscreen mode.
- Type:
enter the fullscreen mode.
exit the fullscreen mode.
get the fullscreen state.
- Type:
Boolean
Caution: The action is asynchronous, you can not get the expected state immediately following the calling method.
- Type:
String
- Default:
fullscreen
The class will be added to the component when fullscreen mode is on.
- Type:
String
- Default:
#333
The background style of component, only available when fullscreen mode is on.
- isFullscreen: The current fullscreen state.
This event fires when the fullscreen mode changed.
If you need to avoid name conflict, you can import it like this:
<template>
<div id="app">
<fs ref="fullscreen">
Content
</fs>
<div class="example">
Content
</div>
<button type="button" @click="toggle" >Fullscreen</button>
</div>
</template>
<script>
import Fullscreen from 'vue-fullscreen'
import Vue from 'vue'
Vue.use(Fullscreen, {name: 'fs'})
export default {
methods: {
toggle () {
this.$refs['fullscreen'].toggle()
this.$fs.toggle(this.$el.querySelector('.example'), {
wrap: false,
callback: this.fullscreenChange
})
},
fullscreenChange (fullscreen) {
this.fullscreen = fullscreen
}
},
data() {
return {
fullscreen: false
}
}
}
</script>