javascript - HTML 偏移宽度

标签 javascript offsetwidth

有人可以列出组成 offsetwidth 的属性吗?

此外,我需要通过 javascript 检索所有这些属性并将它们相加来计算 offsetwidth。所有这些属性的总和需要等于 offsetwidth

代码需要兼容IE7。

任何帮助将不胜感激。谢谢!

最佳答案

您需要一种方法来确定浏览器的滚动条宽度

// adapted from http://davidwalsh.name/detect-scrollbar-width
function getScrollBarWidth() {
    var container = document.createElement('div');
    container.style.width = '100px';
    container.style.height = '100px';
    container.style.overflow = 'scroll';
    container.style.position = 'absolute';
    container.style.top = '-9999px';
    document.body.appendChild(container);
    var width = container.offsetWidth - container.clientWidth;
    document.body.removeChild(container);
    return width;
}

您还需要一种方法来确定元素是否有垂直滚动条,然后您只需将所有宽度相加即可!

function getOffsetWidth(element) {
    var hasVerticalScrollbar = element.scrollHeight > element.clientHeight &&
        !(element.style.overflow && element.style.overflow == 'hidden');

    var style = getComputedStyle(element);

    var offsetWidth = (parseFloat(style.getPropertyValue('border-left-width'))) +
        (parseFloat(style.getPropertyValue('border-right-width'))) +
        element.clientWidth +
        (hasVerticalScrollbar ? getScrollBarWidth() : 0);

    return offsetWidth;
}

这是 IE7/8 中 window.getCompulatedStyle 的填充代码 - http://snipplr.com/view/13523/

这是一个正在运行的 jsbin - http://jsbin.com/iboharI/1/edit?html,css,js,console,output

引用

https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.offsetWidth https://developer.mozilla.org/en-US/docs/Determining_the_dimensions_of_elements http://caniuse.com/getcomputedstyle

关于javascript - HTML 偏移宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19826622/

相关文章:

javascript - 盖乐世 Note 2 屏幕尺寸

css - offsetWidth vs scrollWidth : should be different, 但相同

performance - 测量表格列中最长单元格的有效方法

javascript - offsetWidth 返回未知值 (JS)

javascript - 如何通过在函数中传递变量名的一部分来按名称获取变量

javascript - <a> 的字体颜色在 toggleClass() 上没有改变

javascript - 从未调用过 Mongodb 插入回调

javascript - iOS jQuery 更改输入值失败, "addClass"调用失败

javascript - 如何在 javascript 中删除和重置 cookie?