跳到主要内容

自定义窗口样式

无边框窗口

Frameless Window

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

要创建无边框窗口,请在 BrowserWindow 构造函数中将 BaseWindowContructorOptionsframe 参数设置为 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 构造函数中将 BaseWindowContructorOptionstransparent 参数设置为 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() 滤镜仅应用于窗口的网页内容,因此无法对窗口下方的内容(即用户系统上打开的其他应用程序)应用模糊效果。
  • 打开 DevTools 时,窗口将不再透明。
  • Windows
    • 透明窗口无法使用 Windows 系统菜单或双击标题栏进行最大化。原因详见 PR #28207
  • macOS
    • 透明窗口不会显示原生窗口阴影。