You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何消除Electron无边框透明窗口的圆角?

解决Electron无边框透明窗口的圆角问题

嘿,我之前也碰到过一模一样的情况——明明照着文档配置了frame: falsetransparent: true,结果窗口还是残留圆角,顶部还有奇怪的边缘。别着急,试试下面这几个靠谱的解决办法,按顺序来:

1. 用Electron官方配置直接禁用圆角

从Electron 14版本开始,官方新增了roundedCorners这个配置项,专门用来控制窗口的圆角显示。你只需要在BrowserWindow的配置里加上这一行:

mainWindow = new BrowserWindow({ 
  width: 800, 
  height: 600, 
  title: "Aqua", 
  frame: false, 
  transparent: true, 
  show: false, 
  fullscreenable: false, 
  roundedCorners: false, // 新增这行,直接禁用圆角
  webPreferences: { plugins: true } 
})

这是最直接的官方解决方案,优先试这个,大概率能解决问题。

2. 检查并覆盖页面CSS的圆角设置

有时候问题出在你的页面样式上——比如根容器(body或者最外层的div)被设置了border-radius,导致即使窗口是直角,内容看起来还是有圆角。打开你的CSS文件,找到最外层的容器元素,强制设置:

body {
  border-radius: 0 !important;
  margin: 0;
  padding: 0;
  overflow: visible; /* 避免overflow:hidden配合圆角造成视觉残留 */
}

如果有自定义的根容器(比如#app之类的),也要给它加上同样的样式。

3. MacOS系统的特殊处理(如果是在Mac上运行)

MacOS的窗口管理器有时候会“自作主张”给无边框窗口加圆角,即使你设置了透明。如果前面的方法都不管用,可以试试在窗口创建后添加这段针对Mac的代码:

if (process.platform === 'darwin') {
  // 调整内容偏移,强制覆盖系统圆角
  mainWindow.setContentInsets({ top: 0, bottom: 0, left: 0, right: 0 });
}

这个方法有点hacky,但对付MacOS的顽固圆角很有效。

4. 确保窗口显示时机正确

你设置了show: false,应该是想等页面加载完成后再显示窗口。记得一定要在ready-to-show事件里调用show(),避免窗口渲染过程中出现样式异常:

mainWindow.on('ready-to-show', () => {
  mainWindow.show();
});

先试第一个方法,加上roundedCorners: false,应该就能解决你的问题了。如果还有残留,再检查CSS里的圆角设置,强制覆盖掉就行。

内容的提问来源于stack exchange,提问作者Matteo Piatti

火山引擎 最新活动