如何使缩放器更新 XUL 中的项目位置?

发布于 2024-11-01 09:49:31 字数 1315 浏览 1 评论 0原文

我有以下代码,其中一个按钮有四个调整器。例如,当我使用左上角的缩放器时,它的按钮从右下角收缩,而不是收缩和移动以使左上角跟随光标。我查看了 Mozilla 的文档和 Google,并尝试在 mousedown 事件处理程序上添加自定义以移动该事件 - 但无济于事。我该如何使其行为正确?

<?xml version="1.0"?>

<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>

<window id="main" title="My App" width="300" height="300" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

  <script type="application/javascript" src="chrome://ades/content/main.js"/>
    <hbox>
      <stack style="padding: 0;">
        <button id="b" label="Resizable" style="margin: 0;"/>
        <resizer dir="topleft" style="background: red; -moz-appearance: none;"
                 element="b" left="0" top="0" width="5" height="5" />
        <resizer dir="topright" style="background: black; -moz-appearance: none;"
                 element="b" right="0" top="0" width="5" height="5"/>
        <resizer dir="bottomleft" style="background: black; -moz-appearance: none;"
                 element="b" left="0" bottom="0" width="5" height="5"/>
        <resizer dir="bottomright" style="background: black; -moz-appearance: none;"
                 element="b" right="0" bottom="0" width="5" height="5"/>
      </stack>
    </hbox>
</window>

I have the following code, where a button has four resizers. When I use the top left resizer for example, it button shrinks from the bottom right, as opposed to shrinking and moving so that the top left corner follows the cursor. I've looked in Mozilla's docs and on Google, and tried adding custom on mousedown event handlers to move the thing around - but to no avail. How do I make this behave correctly?

<?xml version="1.0"?>

<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>

<window id="main" title="My App" width="300" height="300" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

  <script type="application/javascript" src="chrome://ades/content/main.js"/>
    <hbox>
      <stack style="padding: 0;">
        <button id="b" label="Resizable" style="margin: 0;"/>
        <resizer dir="topleft" style="background: red; -moz-appearance: none;"
                 element="b" left="0" top="0" width="5" height="5" />
        <resizer dir="topright" style="background: black; -moz-appearance: none;"
                 element="b" right="0" top="0" width="5" height="5"/>
        <resizer dir="bottomleft" style="background: black; -moz-appearance: none;"
                 element="b" left="0" bottom="0" width="5" height="5"/>
        <resizer dir="bottomright" style="background: black; -moz-appearance: none;"
                 element="b" right="0" bottom="0" width="5" height="5"/>
      </stack>
    </hbox>
</window>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

顾冷 2024-11-08 09:49:31

我不知道如何实现你想要的,但如果你调整按钮的大小,它总是会在堆栈中重新定位自己(位于水平盒的开头),因此它将始终位于水平盒的开头。您可以尝试使用绝对定位,但我不确定这是否有效。

I'm not sure how to achieve what you want but if you're resizing your button it will always reposition itself in the stack (which is at the beginning of the hbox), so it will always be at the beginning of the hbox. You might try with absolute positioning but I'm not sure if that'll work either.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文