当前位置: 首页> 财经> 访谈 > electron自定义顶部

electron自定义顶部

时间:2025/7/9 15:38:06来源:https://blog.csdn.net/weixin_60523038/article/details/139493663 浏览次数:0次

我的项目是采用的electron-vite搭建的,希望下面的内容可以给你带来帮助

自定义菜单栏Vue

<template><div class="title-bar"><div class="left-section"><img src="../assets/icon.png" alt="Icon" class="icon"/><span class="title">云希网盘</span></div><div class="right-section"><button @click="changeSkin">//这里一定记得自己的路径配置<img src="../assets/icon-image/huanfu.png" alt="换肤" class="icon-button " style="width: 23px; height: 23px;" title="换肤"/></button><button @click="toggleTop"><img src="../assets/icon-image/no-top.png" alt="" v-if="isTop" class="icon-button " title="取消置顶"><img src="../assets/icon-image/top.png" alt="" v-else class="icon-button " title="置顶"></button><button @click="minimizeWindow"><img src="../assets/icon-image/mini.png" alt="小化" class="icon-button" title="小化"/></button><button @click="maximizeWindow"><img src="../assets/icon-image/big.png" alt="放大" class="icon-button" title="全屏"/></button><button @click="closeWindow"><img src="../assets/icon-image/close.png" alt="关闭" class="icon-button" title="关闭"/></button></div></div></template><script setup>import { ref, onMounted } from 'vue';const { ipcRenderer } = window.electron;const isTop = ref(false);const changeSkin = () => {// 换肤逻辑};const toggleTop = () => {ipcRenderer.send('toggle-top');isTop.value = !isTop.value;};const minimizeWindow = () => {ipcRenderer.send('minimize-window');};const maximizeWindow = () => {ipcRenderer.send('maximize-window');};const closeWindow = () => {ipcRenderer.send('close-window');};onMounted(() => {ipcRenderer.on('top-status-changed', (event, status) => {isTop.value = status;});});</script><style scoped>.title-bar {display: flex;justify-content: space-between;align-items: center;padding: 0 10px;height: 40px;background-color: white;color: black;-webkit-app-region: drag;}.left-section {display: flex;align-items: center;}.icon {width: 20px;height: 20px;margin-right: 10px;}.title {font-size: 13px;}.right-section {display: flex;gap: 10px;}button {background: none;border: none;color: black;cursor: pointer;-webkit-app-region: no-drag;}.icon-button {width: 20px;height: 20px;margin-right: 3px;&:hover{background-color: #c4c4c4;}
}</style>

electron主进程

const mainWindow = new BrowserWindow({width: 1300,height: 780,minWidth:1250,minHeight:680,icon: join(__dirname,'../../build/icon.ico'),show: false,frame: false, // 这里一定要记得隐藏标题栏autoHideMenuBar: true,...(process.platform === 'linux' ? { icon } : {}),webPreferences: {preload: join(__dirname, '../preload/index.js'),sandbox: false},  })ipcMain.on('toggle-top', (event) => {const win = BrowserWindow.getFocusedWindow();const isAlwaysOnTop = win.isAlwaysOnTop();win.setAlwaysOnTop(!isAlwaysOnTop);event.sender.send('top-status-changed', !isAlwaysOnTop);});ipcMain.on('minimize-window', (event) => {const win = BrowserWindow.getFocusedWindow();win.minimize();});ipcMain.on('maximize-window', (event) => {const win = BrowserWindow.getFocusedWindow();if (win.isMaximized()) {win.unmaximize();} else {win.maximize();}});ipcMain.on('close-window', (event) => {const win = BrowserWindow.getFocusedWindow();win.close();});

App.vue代码

<template><div class="main"><Navi></Navi><el-config-provider :locale="locale" :message="config"><router-view></router-view></el-config-provider></div></template><script setup>import { reactive } from "vue";import Navi from "./components/Navi.vue";import zhCn from 'element-plus/dist/locale/zh-cn.mjs'const locale = zhCn;const config = reactive({max: 1,});</script><style lang="scss" scoped>.main{width: 100vw;height: 100vh;overflow: hidden;}</style>

 最终运行效果

关键字:electron自定义顶部

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: