跳到主要内容

自定义窗口样式

无边框窗口

Frameless Window

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

要创建无边框窗口,请将 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

以下 Fiddle 利用透明窗口和 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
    • 禁用 DWM 时,透明窗口将无法工作。
    • 无法使用 Windows 系统菜单或双击标题栏来最大化透明窗口。此背后的原因可以在 PR #28207 中查看。
  • macOS
    • 在透明窗口上不会显示原生窗口阴影。