electron自定义导航栏、菜单

15 篇文章 0 订阅
13 篇文章 0 订阅

在这里插入图片描述
其实自定义导航栏比较简单,但是一般自用的软件没有必要自定义,面向客户的可能需要自定义一下。
主要分为两步:1.关闭默认的边框win和mac的方法不一样。2.在html里写自己的导航栏。3.给自定义的导航添加css样式。有两个-webkit-app-region: drag;-webkit-app-region: no-drag;,可以拖动和不可以拖动。

取消默认边框(导航栏)

BrowserWindow里面设置frame:false,如果你的是mac系统则titleBarStyle: 'hidden',

// 主进程
var electron=require("electron")
// console.log(electron)
var app=electron.app // 引用app
var BrowserWindow=electron.BrowserWindow // 窗口引用
var BrowserView=electron.BrowserView // 窗口嵌入
app.commandLine.appendSwitch('ignore-gpu-blacklist');

var mainWindow=null // 声明要打开的窗口

app.on("ready",()=>{
    mainWindow=new BrowserWindow({
        width:1000,
        height:660,
        minWidth:800,
        minHeight:500,
        frame:false,
        backgroundColor: '#123456',
        title:"IC365club",
        icon:"icon/icon.png",
        webPreferences: {
            nodeIntegration: true, //设置开启nodejs环境
            contextIsolation: false,
            enableRemoteModule: true, //允许子进程调用主进程的api
            nativeWindowOpen:true,
            webgl:true,
            webSecurity: false
            // experimentalFeatures:true
        }
    })
    // require('./menu.js') // 引入自定义菜单
    mainWindow.loadFile('index.html') // 加载页面    
    mainWindow.on("close",()=>{
        mainWindow=null // 关闭窗口时就关闭程序,避免占用过多资源
    })
})

这样第一步就是是完成了
在这里插入图片描述

自定义

<style>      
        header{
            height: 60px;
            width: 100%;
            -webkit-app-region: drag;
            /* -webkit-app-region: no-drag; */
            background: rgb(155, 5, 5);
        }
        button{
        	width:40px;
        	height:40px;
        	background: rgb(80,80, 80);
        	/* -webkit-app-region: no-drag; */
        }
    </style>
    <header>这里是菜单栏<button>功能按钮</button></header>

这样就算自定义好了。
但是里面还没有给按钮添加功能,比如关闭窗口,最大化,标准化,最小化,logo,icon等等的,这些就不做详细的描述了,功能可以参考官方文档,很详细。

文章首发:www.ic365club.com
ic365club旨在共同学习,共同进步

在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Electron 中,可以使用自定义 HTML/CSS/JavaScript 来创建应用程序的操作栏,并使用 Electron 的 API 来使其可拖拽。以下是一个简单的示例: 1. 创建一个 HTML 文件,用于定义操作栏的外观和布局。 ``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Custom Toolbar</title> <style> /* 操作栏样式 */ .toolbar { background-color: #333; color: white; height: 30px; padding: 5px; -webkit-app-region: drag; } /* 操作栏中按钮的样式 */ .toolbar button { background-color: transparent; border: none; color: white; cursor: pointer; font-size: 16px; margin-right: 10px; outline: none; } </style> </head> <body> <div class="toolbar"> <button id="close">X</button> <button id="minimize">-</button> <button id="maximize">+</button> </div> </body> </html> ``` 2. 在 Electron 的主进程中创建窗口,并将该 HTML 文件加载到该窗口中。 ``` const { app, BrowserWindow } = require('electron') function createWindow() { const win = new BrowserWindow({ width: 800, height: 600, frame: false, // 隐藏默认操作栏 webPreferences: { nodeIntegration: true } }) win.loadFile('toolbar.html') // 加载操作栏 HTML 文件 // 允许拖拽窗口 win.on('maximize', () => { win.webContents.send('maximized') }) win.on('unmaximize', () => { win.webContents.send('unmaximized') }) } app.whenReady().then(createWindow) ``` 3. 在 HTML 文件中添加 JavaScript 代码,以便在用户点击操作栏按钮时执行相应的窗口操作。 ``` const { ipcRenderer, remote } = require('electron') // 通过 IPC 通信接收窗口最大化/还原事件 ipcRenderer.on('maximized', () => { document.getElementById('maximize').innerHTML = '-' }) ipcRenderer.on('unmaximized', () => { document.getElementById('maximize').innerHTML = '+' }) // 获取当前窗口 const win = remote.getCurrentWindow() // 关闭窗口 document.getElementById('close').addEventListener('click', () => { win.close() }) // 最小化窗口 document.getElementById('minimize').addEventListener('click', () => { win.minimize() }) // 最大化/还原窗口 document.getElementById('maximize').addEventListener('click', () => { if (win.isMaximized()) { win.unmaximize() } else { win.maximize() } }) ``` 4. 使用 CSS 的 `drag` 属性,使操作栏可拖拽。 ``` .toolbar { -webkit-app-region: drag; } ``` 以上是一个简单的示例,您可以根据自己的需求进行扩展。注意,在使用自定义操作栏时,需要禁用 Electron 默认的操作栏(通过设置 `frame: false`)。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

圈点Studio

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值