一、效果
- esc退出会监听
二、代码
bom.js
(工具)
/**
* 浏览器全屏
* @param {HTMLElement} [el=document] 全屏元素
*/
export function fullScreen(el) {
el = el || document.documentElement;
const rfs = el.requestFullScreen || el.webkitRequestFullScreen || el.mozRequestFullScreen || el.msRequestFullscreen;
if (typeof rfs !== 'undefined' && rfs) {
rfs.call(el);
}
}
/**
* 退出全屏
*/
export function exitFullScreen() {
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if (document.webkitCancelFullScreen) {
document.webkitCancelFullScreen();
} else if (document.msExitFullscreen) {
document.msExitFullscreen();
}
}
/**
* 浏览器当前是否全屏
* @return {*|boolean}
*/
export function isFullScreen() {
return document.isFullScreen || document.mozIsFullScreen || document.webkitIsFullScreen
}
design.js
(通用)
function toggle(ele, that, exitFullScreen, fullScreen) {
if (that.isFullScreen) {
exitFullScreen()
that.isFullScreen = false
} else {
fullScreen(document.getElementById(ele))
that.isFullScreen = true
}
}
export default {
testVueThis,
toggle
}
- index.vue
(示例)
<template>
<my-panel fit
id="test"
:shadow="'never'"
:border="false"
title="cs">
<div id="test">
<div >
<span>cs123</span>
123
</div>
<el-tooltip :content="tooltipText">
<span style="cursor: pointer">
<i :class="icon"
style="font-size: x-large"
@click="toggle"></i>
</span>
</el-tooltip>
</div>
</my-panel>
</template>
<script>
import Design from '@/utils/design'
import { fullScreen, exitFullScreen, isFullScreen } from '$ui/utils/bom'
export default {
data() {
return {
isFullScreen: false
}
},
computed: {
icon() {
return this.isFullScreen ? 'el-icon-switch-button' : 'el-icon-full-screen'
},
tooltipText() {
return this.isFullScreen ? '退出全屏' : '全屏'
}
},
created() {
// 初始化监听器
this.resizeListener()
},
methods: {
resizeListener() {
const that = this
window.addEventListener('resize', function () {
if (!isFullScreen()) {
if (!isFullScreen()) {
that.isFullScreen = false
}
}
})
},
toggle() {
Design.toggle('test', this, exitFullScreen, fullScreen)
}
}
}
</script>
<style>
</style>