javascript - JS pageX和pageY取坐标加上相对位置div的margin?

标签 javascript css events position

我有一个要居中的 div,所以我使用

margin-left: auto;
margin-right: auto;
position: relative;

我承认这是最简单的居中方式,但是当我想使用 event.pageX 和 event.pageY 时,它需要坐标加上左边距,这是错误的。

这是 fiddle 。单击绿色矩形上的某处以查看结果:

http://jsfiddle.net/FGkUq/

任何想法如何解决以显示正方形到没有左边距的坐标?

最佳答案

看看 updated fiddle .

快速解决方案删除 Canvas 的定位:

#canvasDiv { 
    width: 30%;
    height: 400px;  
    cursor:crosshair;  
    background-color: #458B00; 
    /* position: relative; */  
    ...
}

问题出在模板的定位上。因为 absolute 仍然是“相对的”。

绝对定位的定义:绝对定位元素是相对于第一个非静态定位的父元素定位的。

因此 #template 的位置将考虑 #canvasDiv 的位置,除非您将 #canvasDiv 保留为默认 静态定位。

w3schools 了解更多关于定位的信息

在相对定位元素内绝对定位元素:here

很棒example of your problem选项卡 3 和 4。

如果你想坚持 canvasDiv 的相对定位,你必须更新脚本,所以它考虑了 canvasDiv 的定位:

var x = event.pageX;  
var y = event.pageY;   
var canvasPos = $(this).offset(); // in the context of your script this refers to #canvasDiv
var styles = {
   "left" : x - canvasPos.left, // remove its left offset
   "top" : y - canvasPos.top // remove its top offset
};

查看 fiddle

关于javascript - JS pageX和pageY取坐标加上相对位置div的margin?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16479179/

相关文章:

javascript - 当我在提交按钮级别停止传播时,为什么会触发表单提交事件?

html - CSS 动画 slider

jquery - 使用 Bootstrap 进行绝对定位

javascript - 在 Javascript 中检测触摸板与鼠标

javascript - 碰撞检测功能可防止程序在数组中绘制多个球

html - 仅使用 CSS 隐藏未选中的单选按钮

events - 在复选框中设置 onclick 事件观察者的原型(prototype)函数

javascript - 动态创建的元素上的事件绑定(bind)?

javascript - 如何隐藏数据类型不是选择值的所有 div

javascript - 没有 MongoDB 的 Meteor Mysql 和 Session