我有一个热力图应用程序,存储了点击的x、y坐标以及视口宽度和高度。两次点击的真实数据:
x, y, width, height
433, 343, 1257, 959
331, 823, 1257, 959
当我在响应式网站上调整屏幕大小时,显示的点击位置都不正确了。我在搜索中找不到答案,是否有公式或算法可以重新计算不同分辨率下的x和y坐标。例如,如果宽度从1257变为990,高度从959变为400,则如何重新计算x和y,使它们放置在同一位置?编辑:我向数据库添加了两个字段,width_percentage和height_percentage,来存储宽度的x百分比和高度的y百分比。因此,如果x是433而屏幕宽度是1257,则x距离屏幕左侧的距离为35%。我然后对高度使用相同的理论进行计算,但它没有像我想象的那样按比例缩放点击点以达到相同的位置。我通过在全分辨率1257宽度下单击,然后在900宽度下重新打开进行测试。请参阅以下代码以显示较低分辨率下的点击点。
Ajax PHP
while ($row = mysql_fetch_array($results)) {
if( $_GET['w'] < $row['width'] ) {
$xcorr = $row['width_percentage'] * $_GET['w'];
$ycorr = $row['y'];
}
}
在页面加载时,此代码使用$_GET
变量传递屏幕分辨率的宽度和高度。然后,它从数据库获取点击点作为$results
。由于我只将分辨率宽度从1257缩放到900,所以我没有计算高度,并且其像素与初始点击相同。我将新宽度乘以百分比并设置该百分比距屏幕左侧的点。由于百分比为35%,所以新的x坐标为900 * .35 = 315px
。但是它没有起作用,我仍然在思考如何在响应式网站上保持点击相同位置的问题。
document
上添加一个resize
监听器,并使用element.getBoundingClientRect()
进行一些魔法操作。请参考以下问题的答案:检索HTML元素的位置(X,Y)。 - zero298x
和y
坐标。只有宽度和高度可能会改变。但由于坐标从左上角开始,所以x
和y
始终具有相同的值(除了它们应该比宽度和高度小)。 - Goowik