在Electron中实现不规则窗口,主要涉及到窗口的透明设置、边框和标题栏的自定义,以及窗口形状的控制。以下是实现不规则窗口的基本步骤:
- 创建透明窗口:首先,需要设置窗口的
transparent
属性为true
,使窗口透明。同时,为了实现不规则形状,窗口的frame
属性应设置为false
以去除标准边框和标题栏。此外,透明窗口通常不允许调整大小,因此resizable
属性应设置为false
。为了防止双击窗口的可拖拽区域触发最大化事件,maximizable
属性也应设置为false
。 - 设置窗口形状:为了实现特定的不规则形状(如圆形),可以通过CSS对窗口内容的DOM元素进行样式设置。例如,创建一个圆形窗口,可以将窗口的宽度(
width
)和高度(height
)设置为相同的值,使窗口成为正方形。然后,通过CSS的border-radius
属性对内容区域的DOM元素(如#app
元素)设置足够大的圆角,使其呈现为圆形。此外,为了实现点击穿透透明区域的效果,可以使用pointer-events
样式。将pointer-events
设置为none
可以使窗口的透明区域不响应鼠标事件,而将其设置为auto
可以使非透明区域响应鼠标事件。
示例代码如下:
win = new BrowserWindow({
width: 380,
height: 380,
transparent: true,
frame: false,
resizable: false,
maximizable: false
});
html, body {
margin: 0px;
padding: 0px;
pointer-events: none;
}
#app {
box-sizing: border-box;
width: 380px;
height: 380px;
border-radius: 190px; /* 使#app元素成为圆形 */
border: 1px solid green;
background: #fff;
overflow: hidden;
pointer-events: auto; /* 使#app内的元素可以响应鼠标事件 */
}
通过上述步骤,可以实现一个基本的不规则窗口。此外,除了圆形,还可以通过调整CSS样式来实现其他任意形状的不规则窗口。
electron版本
"electron": "^29.0.1"