使用 Electron 开发桌面应用时,为了提供更好的用户体验、更强的品牌一致性和更高的功能灵活性,时常需要隐藏默认窗口边框并使用自定义窗口控件。
隐藏默认窗口边框是 Electron
开发中的一个常见实践,特别是在需要高度定制化和跨平台一致性的应用程序中。这么做的原因主要包括以下几点:
在 Electron 中,您可以通过设置 BrowserWindow
的 frame
选项为 false
来隐藏默认的窗口边框。以下是一个简单的例子,展示了如何创建一个没有边框的窗口:
javascriptconst { app, BrowserWindow } = require('electron');
let mainWindow;
function createWindow () {
mainWindow = new BrowserWindow({
width: 800,
height: 600,
frame: false, // 隐藏窗口边框
transparent: true, // 透明窗口
webPreferences: {
nodeIntegration: true,
contextIsolation: false
}
});
// 打开URL
mainWindow.loadURL('http://127.0.0.1:8080');
mainWindow.on('closed', function () {
mainWindow = null;
});
}
app.on('ready', createWindow);
app.on('window-all-closed', function () {
if (process.platform !== 'darwin') {
app.quit();
}
});
app.on('activate', function () {
if (mainWindow === null) {
createWindow();
}
});
在上述代码中,关键的部分是:
javascript frame: false, // 隐藏窗口边框
transparent: true, // 透明窗口
这两行代码在创建 BrowserWindow
时设置了窗口没有边框,并且将原有窗口的背景色设置为透明。
注意:设置透明后,应用页面的背景色将完全由用户控制,如果用户没有设置背景色,则会使窗口变得透明,所以如果不打算自定义很多颜色的用户来说,不建议设置为透明。
通过上述步骤,您可以使用 Electron
创建一个没有默认边框的应用程序窗口。
由于隐藏了窗口边框,默认的拖动窗口功能也会被隐藏。您需要在 HTML
和 CSS
中自行实现拖动功能。例如,可以在 CSS 中使用 -webkit-app-region: drag;
来实现拖动区域:
html<!DOCTYPE html>
<html>
<head>
<style>
h1 {
-webkit-app-region: drag;
}
</style>
</head>
<body>
<h1>这是一个无边框窗口</h1>
</body>
</html>
隐藏默认窗口边框后,除 窗口拖拽 需要自行实现外,一般还需要自行实现一些控制操作:如窗口的最小化、最大化和关闭等窗口控制功能,这些功能可以使用
Electron
提供的API
来实现。后续记笔记时会将链接放到这里。
本文作者:DingDangDog
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!