在 NW.JS 中限制 window 纵横比

Constrain window aspect ratio in NW.JS

是否可以在 NW.JS 应用中限制 window 的纵横比?

我有 800 x 600 的内容。在 package.json 清单中,我可以将 window 设置定义为...

"window": {
  "toolbar": false
, "width": 800
, "height": 600
, "min_width": 800
, "min_height": 600
}

我使用 CSS 来保持内容的纵横比并尽可能填充 window:

html, body{
  margin: 0;
  height: 100%;
}

main {
  position: relative;

  width:100vw;
  max-width:133.3333vh; /* max-width / width = aspect ratio */
  min-width: 800px;

  height:75vw;
  max-height:100vh; /* max-height / height = aspect ratio */
  min-height: 600px;

  margin: 0 auto;
}

但是,如果 window 太宽,两边都会出现空白区域。如果你让它的宽度太高,底部会出现一个空白区域。

是否有强制指定纵横比的设置?

或者现在是否有我可以监听的 window resize 事件,以便我可以在 window 的大小更改后立即应用 window.resizeTo(height*1.333,height)

似乎确实发生了调整大小事件:

您可以使用这样的代码来设置您的事件侦听器:

gui = require('nw.gui');
w = gui.Window.get();
w.on('resize', yourFunctionHere);

但要小心更改处理程序中的 window 大小(例如使用 resizeTo()),因为这会触发调整大小并可能导致各种混乱。使调整大小以当前纵横比为条件可能有效,但我可以想象如果你达到某个限制或其他限制,你仍然 运行 会遇到问题。顺便说一句,我不知道是否有一些设施(类似于事件冒泡 &c)在这种情况下会有所帮助。