webkit-app-region

Electron

-webkit-app-region 是一个 Electron 中的 CSS 属性,可以用于指明用户是否可以通过拖拽当前的 HTML 元素来完成对整个窗体的拖拽。这种情况主要是针对 frameless 窗口的。因为对于 frameless 窗口来说,由于没有了顶部 toolbar,所以默认是无法让用户直接拖拽的。-webkit-app-region 相当于提供了一个编程可指明的自定义拖拽区域,用于实现类似窗口顶部 toolbar 的效果。

具体的使用方法非常简单,只需要针对特定的 HTML 元素,应用如下的 CSS 就可以了:

.draggable {
  -webkit-app-region: drag;
}

当然,这里需要注意到的一点是,如果一个区域因为某个 HTML 元素的存在变成了 -webkit-app-region: drag,那么对于 Windows 系统来说(Mac 经测试不会有这个问题),这个区域上的其他元素(不论是否在 drag 元素的“上方”)都无法收到鼠标的事件(如 click / hover 等)。如果希望可以继续保留某些元素(比如按钮)的鼠标事件,需要在这些元素上通过如下的方式显示声明:

.button {
  -webkit-app-region: no-drag;
}

Electron 相关的文档说明

关于使用 -webkit-app-region: drag 后其他区域内元素就无法收获鼠标事件的讨论,可以参考 Electron 的这个 issue