【问题标题】:what is the necessary css for offset.leftoffset.left 的必要 CSS 是什么
【发布时间】:2011-02-07 05:58:19
【问题描述】:

此页面 => http://api.jquery.com/offset 没有充分解释所涉及的必要 css。我读到的与该主题相关的 5 个左右的 SO 问题中的任何一个都没有涉及 CSS 问题。

1) 什么 CSS 会导致 $(this).offset.left 返回“未定义”?

2) 还需要知道哪些其他问题会使 offset.left 复杂化(例如,$("object").hide() 会导致 offset.left 返回 undefined 吗?等)

我需要知道什么 CSS 会杀死 offset.left 以及什么 CSS 会返回正确的值。

THNX

【问题讨论】:

    标签: jquery css offset


    【解决方案1】:

    $(this).offset().left 将始终返回一个值。 jQuery 正在根据浏览器呈现页面元素的盒子模型来确定这个值。

    CSS 提供了一种通过定义的语言控制偏移值的方法,但是一旦渲染它总是有一个值。

    因此,您的问题的答案(以及您之前没有找到您正在寻找的答案的原因)是 jQuery 和 CSS 都在控制/读取底层技术。 jQuery 读取 CSS 规则。


    如果隐藏元素,则它不再是盒子模型的一部分,offset().left 将返回值 0:

    演示: http://jsfiddle.net/9xaCe/

    【讨论】:

    • 根据 'this' 是什么,它有时会返回 'undefined'。我只需要知道什么会导致 $('someobject').offset.left 是'未定义'。例如,如果 $('someobject') 之前已被 .hide() 隐藏,那么它的偏移量将是“未定义”,因为它是隐藏的。这是一个例子。此外,如果 div#someobject 不是 position: relative;在 css 中,jquery 可以根据情况说 div#someobject is 'undefined'。
    • 有这么多关于offset.left的SO问题和问题是有原因的
    • 感谢 DEMO,但问题是你没有在它被隐藏在这里后开始打印jsfiddle.net/5CYUn
    • 我看到我遗漏了括号。 offset().left 不是 offset.left
    【解决方案2】:

    你引用的页面说:

    jQuery 不支持获取 隐藏元素的偏移坐标

    如果元素被隐藏,那么我猜.offset 将返回undefined。所以你的问题 2 的答案是肯定的。

    【讨论】:

    • 但这只是会导致“未定义”的一件事,我的答案是会导致“未定义”的 css 和 js 问题以及 offset.left 保持和整数所必需的内容。
    • 我真正希望有人做的是更新有关此主题的 jquery wiki,否则我们将在黑暗中拍摄。我不喜欢坐在 CSS 编辑器前打开和关闭属性,直到某些东西起作用。 wiki 页面应解释将导致“未定义”css 或 js 相关的问题类型。
    猜你喜欢
    • 2011-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-26
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多