我正在开发一个拥有无框窗口的应用,并且有一个html5视频元素,可以100%显示填充document.body的网络摄像头。
我将mainWindow
设置为可调整大小mainWindow.isResizable(true)
,但我无法调整窗口大小。
当我使用chrome dev工具进行调试时,我只能调整侧面chrome dev工具所在的窗口大小。 (不确定它是否有帮助,但我在基于Ubuntu 14.04的Linux发行版(称为Elementary OS Freya)上进行开发)
有人可以解释为什么即使我将mainWindow设置为可调整大小,我也无法调整可调整大小的窗口大小吗?
此外,我还能做些什么来解决这个问题?
var app = require("app");
var BrowserWindow = require("browser-window");
var mainWindow = null;
// Quit when all windows are closed.
app.on("window-all-closed", function() {
app.quit();
});
app.on("ready", function() {
mainWindow = new BrowserWindow({
width: 640,
height: 480,
frame: false
});
mainWindow.loadUrl("file://" + __dirname + "/index.html");
// Set Window Resizable
mainWindow.isResizable(true);
mainWindow.focus();
});
答案 0 :(得分:5)
我设法弄清楚问题是什么,并且发现它甚至不是一个javascript问题,我所要做的就是修改我的CSS以获得我想要的东西以及我不想要的东西。吨。
因为我的html和正文也设置为可拖动的,这就是我无法调整大小的原因。这是我的解决方案......
我必须创建一个新元素(div.dialog
)并将其内容包含在其中。以及下面的CSS。
.dialog {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: #000;
background: rgba(0, 0, 0, 0.5);
-webkit-app-region: no-drag;
}
.tips {
position: absolute;
top: 4px;
left: 4px;
right: 4px;
bottom: 4px;
-webkit-app-region: drag;
}
<强> HTML 强>:
<div class="dialog" data-action="toggle">
<header class="tips" data-action="toggle">
<div>
<nav>
[Space] for Snapshot<br>
[Esc] to Close
<p data-action="toggle-tips">[Tab] to Toggle Dialog</p>
</nav>
</div>
</header>
</div>
答案 1 :(得分:5)
你使用的方法不对:
mainWindow.setResizable(false)
设置是否可以由用户手动调整窗口大小。
mainWindow.isResizable()
返回布尔值 - 是否可以由用户手动调整窗口大小。
答案 2 :(得分:0)
在https://stackoverflow.com/a/32897808/11167389处提到的答案是可以的,但是还有另一种方法不会影响您的任何其他样式,并且可以将其放置在您拥有的任何无框架窗口中。 使用电子创建的VS Code使用类似的方法来允许从标题调整大小。
因此,大多数情况下,您的结构类似于带有-webkit-app-region: drag;
的标题栏:
.title-bar {
display: flex;
height: 30px;
border: 1px solid gray;
align-items: center;
-webkit-app-region: drag;
}
.title {
margin-left: 10px;
}
.title-bar-btns {
margin-left: auto;
-webkit-app-region: no-drag;
}
<div class="title-bar">
<div class="title">Window Header</div>
<div class="title-bar-btns">
<button id="min-btn">-</button>
<button id="max-btn">+</button>
<button id="close-btn">x</button>
</div>
</div>
现在,您可以在标题栏中添加一个类为titlebar-drag-region
的div,将position:relative;
设置为标题栏,然后从其中删除-webkit-app-region: drag;
。
.titlebar-drag-region
的作用是创建一个可拖动区域,该区域的尺寸比标题(标题栏)短。然后,我们在边框处留下的6px间距用于调整大小。而已。您将具有可拖动的标题以及可从所有边缘调整大小的标题。
因此,只需创建一次.titlebar-drag-region
,然后将<div class="titlebar-drag-region">
放在所有窗口的标题中即可。
.titlebar-drag-region { /*added*/
top: 6px;
left: 6px;
display: block;
position: absolute;
width: calc(100% - 12px);
height: calc(100% - 6px);
z-index: -1;
-webkit-app-region: drag;
}
.title-bar {
display: flex;
height: 30px;
border: 1px solid gray;
align-items: center;
position: relative; /*added*/
/*-webkit-app-region: drag;*/ /*removed*/
}
.title {
margin-left: 10px;
}
.title-bar-btns {
margin-left: auto;
-webkit-app-region: no-drag;
}
<div class="title-bar">
<div class="titlebar-drag-region"></div> <! –– added ––>
<div class="title">Window Header</div>
<div class="title-bar-btns">
<button id="min-btn">-</button>
<button id="max-btn">+</button>
<button id="close-btn">x</button>
</div>
</div>