jQuery偏移量顶部没有'工作不正常
jQuery offset top doesn't work correctly
我正试图创建一个脚本,用鼠标在元素中绘制一些东西,我正在使用Raphaeljs
来完成这项工作。
对于正确的图纸,我需要找到的top
和left
CCD_ 4元素。我用var offset = $("#input").offset();
得到left
和top
。
但top
值不正确。低于10px
实际CCD_ 10距离。我认为10px
可能会以不同的分辨率更改,然后我无法正常添加10px
,然后我想知道如何解决问题
我在这里上传了我的测试。
.offset()
函数有以下限制:
注意:jQuery不支持获取隐藏元素的偏移坐标,也不支持在body元素上设置边框、边距或填充。
在这种情况下,主体有一个10px的顶部边框,这就是为什么您的图形会偏离10个像素的原因。
推荐解决方案:
var offset = $("#input").offset();
x = x - offset.left - $(document.body).css( "border-left" );
y = y - offset.top + $(document.body).css( "border-top" );
在与此斗争了一段时间并查看了各种潜在的答案后,我得出结论:jQueryoffset().top(可能还有它使用的DOM API)对于一般使用来说太不可靠了。它不仅被记录为排除html级别的边距,而且在其他几种情况下也会返回意外的结果。
position().top确实有效,但将页面设计为等效页面可能不实用/不可能。
幸运的是,我发现元素.getBoundingClientRect().top可以完美地获得相对于视口的位置。然后,如果需要,您可以添加$(document).sollTop()以获取文档顶部的位置。
我有两种不同的解决方案:
1)您可以使用outerHeight(true)方法计算上述元素的总高度。此方法将使用边距、填充和边框来计算高度。
并且这个不会产生冲突,它将返回真值。下面是jsFiddle示例。
html
<div class="header"></div>
<div class="nav"></div>
<div class="myEle"></div>
jQuery
var myEleTop = $('.header').outerHeight(true) + $('.nav').outerHeight(true);
2)如果将top
css定义为相对于主体定位的元素,则也可以使用此值:
parseInt($('#myEle').css('top'));
- Javascript.getHours()工作不正常
- removeClass函数没有'工作不正常
- jQuery Ajax GET请求工作不正常
- Cordova ng路线工作不正常
- 更新属性工作不正常Meteor/MongoDB
- 为什么文本对齐:对;工作不正常
- Javascript作用域和Ajax调用;工作不正常
- JavaScript DOM insertBefore'工作不正常
- Angular Js布线工作不正常
- onmouseout函数工作不正常
- 承诺工作不正常
- JQuery.live()工作不正常
- Alloy UI文本区域工作不正常
- ng src工作不正常,但src工作正常
- Canvas.toDataUrl(“image/png”)工作不正常
- JQuery `length`属性工作不正常.为什么?
- Javascript setInterval工作不正常
- 我的Javascript代码没有'工作不正常
- 表单验证工作不正常,在不检查条目的情况下继续
- $localStorage array select with ng选项工作不正常