javascript - CSS定位问题

标签 javascript jquery html css melonjs

我正在使用 melonJS 创建游戏。我想在 NPC 上动态定位对话框。

在全屏下,它看起来不错。

enter image description here

当我缩小视口(viewport)时,定位保持绝对,因此看起来很糟糕。但是如果我不绝对定位,我将无法相对于 NPC 的坐标放置它:

$("#dialogBox").css({top: game.data.currentNPC_y+50, left: game.data.currentNPC_x-50, position:'absolute'});

enter image description here

有什么办法解决这个问题吗?


编辑:

当我使用以下代码时,代码不会像上面提到的那样缩放,但至少它仍然在 NPC 附近和 Canvas 上:

        $("#dialogBox").css({
            top: game.data.currNPC_y+50, 
            left: game.data.currNPC_x-50, 
            position:'absolute'
        }); 

enter image description here

当我使用您建议的代码时,它出现在 Canvas 之外:

        $("#dialogBox").css({
            position : "absolute",
            left     : (game.data.currentNPC_x - 50) * me.sys.scale.x,
            top      : (game.data.currentNPC_y - 500) * me.sys.scale.y
        });

enter image description here

最佳答案

me.sys.scale.x 缩放 DOM 绝对左侧,按 me.sys.scale.y 缩放绝对顶部:

$("#dialogBox").css({
    "position" : "absolute",
    "left"     : (game.data.currentNPC_x - 50) * me.sys.scale.x,
    "top"      : (game.data.currentNPC_y + 50) * me.sys.scale.y
});

您还可以缩放元素的宽度和高度以更好地集成。

最后,你应该听听 WINDOW_ONRESIZE当用户更改窗口大小或移动设备方向等时动态重新缩放元素的事件。

关于javascript - CSS定位问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22599217/

相关文章:

javascript - 移动到 Azure 仪表板中的特定位置

jquery - 克隆和删除当前表

javascript - 使用 “each” 元素通过 JQuery 过滤表

html - 如何确定本周是否是该月的第一周? (最好是碳)

regex - HTML5 输入模式允许以逗号分隔千位

javascript - 当我勾选了两个复选框时,为什么标签不显示?

javascript - 递归地将嵌套的xml转换为嵌套的html

javascript - CakePHP 在元素中使用 JsHelper

javascript - 如何使用 jquery 或 javascript 搜索表中的多列

javascript - 如何在没有更改功能的情况下在标签中显示 <select> 的当前值