代码之家  ›  专栏  ›  技术社区  ›  Azmisov

关于边界宽度的谎言?!如何获取实际值?

  •  3
  • Azmisov  · 技术社区  · 14 年前

    在JavaScript中进行同时需要clientXY和screenXY的计算时,这会带来问题。由于这两个值之间有一个边界,因此必须通过添加borderWidth来进行补偿。默认情况下,此边框为2px(除非修改页面)。

    但是,由于主体也可以有用户定义的边框(如7px的纯红),因此不能仅仅通过添加或减去2px来进行补偿。显然,您需要使用实际值 document.body.currentStyle['borderTopWidth'] medium . 因为价值 中等的 可能因浏览器版本而异,您需要执行getPixelValue检查(我使用: http://blog.stchur.com/2006/09/20/converting-to-pixels-with-javascript/ ).

    中等的 回报 4px . 但那不对!尸体的边缘实际上是 2px ,尽管它说 中等的 中等的 ,修正为4px。由于某种原因,我撒谎了。

    所以,我的问题是:有没有办法得到身体边界的真实价值?或者有没有办法检查用户是否已经设置了边框(因此不再是默认的2px)。执行用户更改的边框检查绝对是我最后的选择,因为IE可能会决定删除默认边框,从而破坏我的脚本。

    1 回复  |  直到 14 年前
        1
  •  0
  •   Azmisov    14 年前

    今天早上我在浴室里顿悟,我找到了解决办法。

    var b = document.body;
    var first1 = b.clientHeight;
    var first2 = b.clientWidth;
    b.style.borderTopWidth = '0px';
    b.style.borderLeftWidth = '0px';
    b.style.borderTopWidth = first1 - b.clientHeight + "px";
    b.style.borderLeftWidth = first2 - b.clientWidth + "px";
    

    这证明IE是不正确的 medium