位置(X,Y坐标)更新页面调整大小

时间:2016-02-09 07:21:11

标签: javascript jquery

尝试捕获图像上的点击位置(最终用户标记为x)。但在窗口调整大小的' X'职位变动。我的代码中缺少什么,我如何在纵向和横向模式中保持位置

<script>
$("#_img").on("click",function(event){
   var X = event.pageX-5, Y = event.pageY-5;
   $("#marker").css({
     "left":X,
     "right":Y 
   }).show();
});
</script>

<img id="_img" src="car.png" width="550px" height="168px"/>
<div id="_mrk" style="display:none;">x</div>

enter image description here enter image description here

3 个答案:

答案 0 :(得分:1)

每次调整窗口大小或方向改变时,你必须更新'x'的位置,图像应该是perentage而不是像素

var width = 0;
    var height = 0;

    $("#_img").on("click", function(event) {
      var X = event.pageX,
        Y = event.pageY;
      $("#_mrk").css({
        "left": X,
        "top": Y
      }).show();
      width = $("#_img").width();
      height = $("#_img").height();
    });

    function getNewValue(posValue, oldImgPos, newImgPos) {
      return posValue * (newImgPos / oldImgPos);
    }

    $(window).resize(function() {
      var newx = getNewValue($('#_mrk').offset().left, width, $("#_img").width());
      $("#_mrk").css("left", newx);

      var newy = getNewValue($('#_mrk').offset().top, height, $("#_img").height());
      $("#_mrk").css("top", newy);
      width = $("#_img").width();
      height = $("#_img").height();
    });
 #_mrk {
      position: absolute;
    }
    
    #_img {
      width: 100%;
    }
<img id="_img" src="http://clipartion.com/wp-content/uploads/2015/11/colorable-car-line-art-free-clip-art.png" width="550px" height="168px" />
  <div id="_mrk" style="display:none;">x</div>

答案 1 :(得分:0)

单击img时保存文档宽度的值。向resize事件添加事件监听器,并在触发时更改XY值:

var X, Y, doc_width, a_ratio;

$("#_img").on("click", function(event){
   X = event.pageX-5;
   Y = event.pageY-5;
   doc_width = document.documentElement.clientWidth;
   a_ratio = $(this).width()/$(this).height();
   move_mark(X, Y);   
});

$(window).on("resize", function(){
   var x = X + (document.documentElement.clientWidth - doc_width);
   var y = Y + (x - X)/a_ratio;
   move_mark(x, y);
})

function move_mark(X,Y){
    $("#marker").css({
     "left":X,
     "right":Y 
   }).show();
}

答案 2 :(得分:0)

您可以使用百分比而不是像素来支持所有尺寸 首先确保img和标记的容器是相对位置的,标记是绝对位置。

然后,点击时你需要计算图像中的X和Y,然后根据计算百分比。

$sql = "SELECT * FROM teams";
$result = $conn->query($sql);

while ($tr = mysqli_fetch_array($result, MYSQLI_ASSOC)) { ?>
    <tr>
        <td><?= $tr['t_Naam'] ?></td>
    </tr>
<?php } ?>