jQuery ScrollTo导致元素在IE中消失

时间:2013-06-04 11:56:57

标签: jquery internet-explorer scrollto visual-glitch

我一直在开发一个站点,它依赖于jquery ScrollTo插件在页面之间水平移动。每个“页面”都是100%x 100%的部分,内部有一个包装div,然后是绝对定位的元素。

除了IE之外,这在所有浏览器中都完美地运行了100%。在IE的所有版本(甚至10个)中,内容元素正在消失,只有在以某种方式悬停或选择时才会出现。

Here's有关问题的视频和question中的开发页面:

这真的很奇怪而且不一致,有些元素有时出现,有时是部分出现,但通常根本不出现。调整窗口大小只会显示当前在视口中的元素,但不会显示在其外部(如果向外滚动,则会再次出现故障)。删除ScrollTo并使用默认锚定行为很好,但我无能为力,似乎有所作为。

谷歌在这个问题上的搜索完全没有发现。

内容的基本结构是有效的:

<section id="content">
    <div class="mask">
        <section id="pagename">
            <div class="wrap">
                <div></div>
                <div></div>
            </div>
        </section>
        <section>
            <div class="wrap">
                <div></div>
                <div></div>
            </div>
        </section>
    </div>
</section>

CSS:

#content       {width: 100%; height: 100%; overflow: hidden; }
#content .mask {width: 800%; height: 100%;}
section        {position: relative; display: block; width: 12.5%; height: 100%; float: left;}
.wrap          {position: absolute; display: block; top: 50%; left: 50%; height: 860px; margin-top: -430px; width: 860px; margin-left: -430px; overflow: visible;}

然后.wrap中的div绝对位于页面周围。

一切都在正确的位置,内容呈现正确(一旦可见)。它似乎只是问题开始的.wrap的内容(在.wrap上设置测试背景表明它不会出现故障,只是它的内容)。

如果有人能够解释造成这个问题的原因,那将会使它表现得非常受欢迎。

干杯, 森

1 个答案:

答案 0 :(得分:1)

好的,我已经解决了这个问题。

在页面的其他地方(不在#content部分内),我有一个单独的div,它是固定位置。无论出于何种原因,保持这个固定是导致IE问题与其他元素滚动查看。将div更改为绝对定位(在这种情况下不是问题,因为所有滚动都是在#content部分内完成的),这一切都有所不同。

我应该补充一点,jQuery ScrollTo与此无关(删除所有脚本并在#content上使用overflow auto来获取滚动条,表明问题甚至没有发生)。这纯粹是一个渲染问题,在固定定位元素的顶部滚动元素。