vue实现锁屏
Vue 实现锁屏功能
锁屏功能通常用于需要限制用户操作或保护隐私的场景。以下是几种实现方式:
方法一:使用全屏遮罩层
在 Vue 中创建一个全屏遮罩层组件,覆盖整个页面并阻止用户交互。
<template>
<div v-if="locked" class="lock-screen">
<div class="lock-content">
<h3>系统已锁定</h3>
<input v-model="password" type="password" placeholder="输入密码解锁" />
<button @click="unlock">解锁</button>
</div>
</div>
</template>
<script>
export default {
data() {
return {
locked: false,
password: ''
}
},
methods: {
lock() {
this.locked = true
},
unlock() {
if (this.password === '预设密码') {
this.locked = false
this.password = ''
}
}
}
}
</script>
<style>
.lock-screen {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.8);
z-index: 9999;
display: flex;
justify-content: center;
align-items: center;
}
.lock-content {
background: white;
padding: 20px;
border-radius: 5px;
text-align: center;
}
</style>
方法二:结合路由守卫

通过 Vue Router 的路由守卫实现页面级别的锁屏控制。
// router.js
import Vue from 'vue'
import Router from 'vue-router'
Vue.use(Router)
const router = new Router({
routes: [...]
})
router.beforeEach((to, from, next) => {
const isLocked = store.state.isLocked
if (isLocked && to.path !== '/unlock') {
next('/unlock')
} else {
next()
}
})
方法三:使用 Vuex 管理锁屏状态
通过 Vuex 集中管理锁屏状态,便于全局访问和控制。

// store.js
export default new Vuex.Store({
state: {
isLocked: false
},
mutations: {
setLocked(state, value) {
state.isLocked = value
}
},
actions: {
lockSystem({ commit }) {
commit('setLocked', true)
},
unlockSystem({ commit }) {
commit('setLocked', false)
}
}
})
方法四:结合浏览器本地存储
使用 localStorage 实现锁屏状态的持久化,页面刷新后仍保持锁定状态。
methods: {
lock() {
localStorage.setItem('systemLocked', 'true')
this.locked = true
},
unlock() {
localStorage.removeItem('systemLocked')
this.locked = false
},
checkLockStatus() {
this.locked = localStorage.getItem('systemLocked') === 'true'
}
}
注意事项
- 锁屏组件应具有最高的 z-index 值,确保覆盖所有页面元素
- 考虑添加键盘事件监听,防止用户通过快捷键绕过锁屏
- 对于敏感操作,建议结合后端验证解锁密码
- 可添加自动锁定功能,如用户长时间无操作后自动锁定
这些方法可根据实际需求组合使用,实现更完善的锁屏功能。






