72 lines
1.7 KiB
Vue
72 lines
1.7 KiB
Vue
|
|
<template>
|
|||
|
|
<div title="$'layouts.Exit full screen'" @mouseover.stop="onMouseover" @mouseout.stop="onMouseout">
|
|||
|
|
<div @click.stop="onCloseFullScreen" class="close-full-screen" :style="{ top: state.closeBoxTop + 'px' }">
|
|||
|
|
<Icon name="el-icon-Close" />
|
|||
|
|
</div>
|
|||
|
|
<div class="close-full-screen-on"></div>
|
|||
|
|
</div>
|
|||
|
|
</template>
|
|||
|
|
|
|||
|
|
<script setup lang="ts">
|
|||
|
|
import { reactive, onMounted } from 'vue'
|
|||
|
|
import { useNavTabs } from '@/stores/navTabs'
|
|||
|
|
|
|||
|
|
const navTabs = useNavTabs()
|
|||
|
|
|
|||
|
|
const state = reactive({
|
|||
|
|
closeBoxTop: 20,
|
|||
|
|
})
|
|||
|
|
onMounted(() => {
|
|||
|
|
setTimeout(() => {
|
|||
|
|
state.closeBoxTop = -30
|
|||
|
|
}, 300)
|
|||
|
|
})
|
|||
|
|
/*
|
|||
|
|
* 鼠标滑到顶部显示关闭全屏按钮
|
|||
|
|
* 要检查 hover 的元素在外部,直接使用事件而不是css
|
|||
|
|
*/
|
|||
|
|
const onMouseover = () => {
|
|||
|
|
state.closeBoxTop = 20
|
|||
|
|
}
|
|||
|
|
const onMouseout = () => {
|
|||
|
|
state.closeBoxTop = -30
|
|||
|
|
}
|
|||
|
|
const onCloseFullScreen = () => {
|
|||
|
|
navTabs.setFullScreen(false)
|
|||
|
|
}
|
|||
|
|
</script>
|
|||
|
|
|
|||
|
|
<style scoped lang="scss">
|
|||
|
|
.close-full-screen {
|
|||
|
|
display: flex;
|
|||
|
|
align-items: center;
|
|||
|
|
justify-content: center;
|
|||
|
|
position: fixed;
|
|||
|
|
right: calc(50% - 20px);
|
|||
|
|
z-index: 9999999;
|
|||
|
|
height: 40px;
|
|||
|
|
width: 40px;
|
|||
|
|
background-color: rgba($color: #000000, $alpha: 0.1);
|
|||
|
|
border-radius: 50%;
|
|||
|
|
box-shadow: var(--el-box-shadow-light);
|
|||
|
|
transition: all 0.3s ease;
|
|||
|
|
.icon {
|
|||
|
|
color: rgba($color: #000000, $alpha: 0.6) !important;
|
|||
|
|
}
|
|||
|
|
&:hover {
|
|||
|
|
background-color: rgba($color: #000000, $alpha: 0.3);
|
|||
|
|
.icon {
|
|||
|
|
color: rgba($color: #ffffff, $alpha: 0.6) !important;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
.close-full-screen-on {
|
|||
|
|
position: fixed;
|
|||
|
|
top: 0;
|
|||
|
|
z-index: 9999998;
|
|||
|
|
height: 60px;
|
|||
|
|
width: 100px;
|
|||
|
|
left: calc(50% - 50px);
|
|||
|
|
}
|
|||
|
|
</style>
|