免费企业网站源码生成黑帽seo联系方式
说明
在写electron项目时,只有一个主窗口不足以满足需求,我们通常还会打开很多个窗口。
怎么打开一个子窗口像微信的聊天界面一样,全贴合在一起,看起来像一个整体呢:
分析
这个窗口有点像element ui中的抽屉(drawer)
,但是我们知道electron主体就是一个容器盒子,而抽屉
只能在容器盒子内部显示,很明显贴合窗口并不能用抽屉来实现。
那么久只能新建一个窗口了,需要考虑以下几点:
- 新开贴合窗口的左侧,需要与主窗口的右侧贴合,即x坐标一致;
- 新开贴合窗口的顶部要与主窗口的顶部对齐,即顶部y坐标一致;
- 新开贴合窗口的高度,要与主窗口高度一致(因为主窗口可能会被拉伸)
获取主窗口的高度
此处的height是主窗口高度,在触发ipcMain.on
事件时,把高度赋值给贴合窗口的高度
const [ width, height ] = mainWindow.getSize();
计算坐标
假设主窗口名为mainWindow
,那么获取x,y坐标,赋值给新建的贴合窗口
x: mainWindow.getPosition()[0] + mainWindow.getSize()[0], // 位置在主窗口右侧
y: mainWindow.getPosition()[1],
关键代码
新建贴合窗口:
new BrowserWindow({width: 250, // 可自定义固定值height: height, // 上面动态获取的height值x: mainWindow.getPosition()[0] + mainWindow.getSize()[0],y: mainWindow.getPosition()[1],autoHideMenuBar: true,resizable: false,titleBarStyle: 'hidden',frame: true,transparent: true,hasShadow: false,backgroundColor: '#F7F7F7',webPreferences: {preload: join(__dirname, '../preload/index.js'),sandbox: false,contextIsolation: false}
})