跳转到主要内容

自定义窗口样式

无边框窗口

Frameless Window

无边框窗口会移除操作系统应用的所有 chrome,包括窗口控件。

要创建无边框窗口,请在 BrowserWindow 构造函数中将 BaseWindowContructorOptions frame 参数设置为 false

const { app, BrowserWindow } = require('electron')

function createWindow () {
const win = new BrowserWindow({
width: 300,
height: 200,
frame: false
})
win.loadURL('https://example.com')
}

app.whenReady().then(() => {
createWindow()
})

透明窗口

Transparent Window Transparent Window in macOS Mission Control

要创建完全透明的窗口,请在 BrowserWindow 构造函数中将 BaseWindowContructorOptions transparent 参数设置为 true

以下示例利用透明窗口和 CSS 样式来创建圆形窗口的错觉。

const { app, BrowserWindow } = require('electron')

function createWindow () {
const win = new BrowserWindow({
width: 100,
height: 100,
resizable: false,
frame: false,
transparent: true
})
win.loadFile('index.html')
}

app.whenReady().then(() => {
createWindow()
})

限制

  • 无法穿透透明区域进行点击。详情请参阅 #1335
  • 透明窗口无法调整大小。将 resizable 设置为 true 可能会导致透明窗口在某些平台上停止工作。
  • CSS blur() 滤镜仅应用于窗口的 web 内容,因此无法将模糊效果应用于窗口下方的内容(即用户系统上打开的其他应用程序)。
  • 打开 DevTools 时,窗口将不再透明。
  • Windows
    • 无法使用 Windows 系统菜单或双击标题栏来最大化透明窗口。关于此原因的解释可以在 PR #28207 中找到。
  • macOS
    • 透明窗口不会显示原生窗口阴影。