【问题标题】:IE8 CSS Absolute Positioning Random BugIE8 CSS绝对定位随机Bug
【发布时间】:2011-12-24 01:02:32
【问题描述】:

我在 IE8 中遇到了一个令人沮丧但看似随机的渲染错误。我在页面上有一些绝对定位的元素(相对于页面正文定位),它们的显示由 jQuery 切换。

10 次中有 8 次元素被正确渲染,但有时不遵守定位,它们只是简单地放置在浏览器窗口的左上角(实际上绝对定位在顶部 0,左侧 0)。

如果我查看 IE Developer Toolbar 中的元素属性,我可以看到设置了正确的 css 属性 - 它们只是没有被应用。如果我调整浏览器窗口的大小,那么元素将跳转到正确的位置 - 所以它看起来确实是一个真正的渲染错误。

我在页面上设置了正确的 DOCTYPE,所以浏览器不处于 quirks 模式。

有什么想法可以解决这个问题,或者其他人有类似的经历吗?

【问题讨论】:

    标签: jquery css internet-explorer internet-explorer-8 css-position


    【解决方案1】:

    如果我没记错的话,当试图在显示之前设置某物的位置时会出现问题。

    例如

    1. 隐藏对象
    2. 设置位置
    3. 显示对象

    对象会出现在左上角,直到重新设置位置或调整窗口大小迫使IE重新计算位置

    【讨论】:

    • 是的,这听起来很合乎逻辑——我将如何确保添加元素​​的 jquery 函数在元素切换之前完成? (jquery / javascript 绝对不是我的强项)。
    • 我看到你已经添加了更详细的解释,谢谢。为了进一步解释我正在使用的内容 - 我有一个选项卡式表单(使用 jQuery 选项卡)以及一个名为 AddIncSearch 的替换选择元素插件。切换选项卡时调用 AddIncSearch,此调用添加绝对定位的元素。现在,理论上,由于事件处理是由 AddIncSearch 完成的,它应该只在选择元素正确初始化后才能工作 - 但情况似乎并非如此。
    • 一个问题:您是绝对定位元素,还是您的 AddIncSearch 小部件进行定位?
    • AddIncSearch 插件进行定位(如果您认为有帮助,我可以在我的问题中添加代码 sn-p)。
    • tabsshow 事件可能在标签显示之前触发。尝试将您的位置更改代码放入 setTimeout(func, 0) 以将其从流程中取出
    【解决方案2】:

    你试过IE8特有的属性吗:

    -ms-背景位置-x:1px; -ms-background-position-y: 29px;

    它们只在 IE8 中工作并解决了这个确切的问题。

    【讨论】:

      【解决方案3】:

      有类似的问题 -> IE8 文本框不可编辑(当我的应用程序的包装器具有位置:绝对时)。单击仅在边框中起作用。填充颜​​色和透明也不起作用。通过此文档类型更改,问题得到解决。

      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
      

      来源:http://www.codingforums.com/showthread.php?p=1173375#post1173375

      【讨论】:

        【解决方案4】:

        我也遇到过这种情况,我正在使用一些 jquery 来显示一个绝对定位的元素,该元素仅在单击另一个元素时才可见。微软继续完全错误地理解基础知识是多么奇怪。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多