跳转到主内容

自定义窗口样式

无边框窗口

无边框窗口

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

要创建无边框窗口,设置 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()
})

透明窗口

透明窗口 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
  • 透明窗口不可调整大小。 设置 resizabletrue 可能会使透明窗口在某些平台上停止工作。
  • CSS blur() 选择器仅适用于网页,因此无法对位于透明窗口下方的内容应用模糊效果(例如在用户系统上打开的其他应用程序)。
  • 打开开发人员工具时,窗口将不透明。
  • Windows 上:
    • 透明窗口不能使用 Windows 系统菜单或双击标题栏实现最大化。 其背后的理由可以在 PR #28207 上看到。
  • macOS 上:
    • 原生窗口阴影将不会显示在透明窗口上。