2013-10-24 34 views
0

我目前使用的是与混合媒体可变宽度类一起使用的smoothdivscroll - 它实际上没有设置做的事情(它喜欢所有的类都是固定宽度的,但是加上空白代码似乎大部分工作正常使用smoothdivscroll修复多线加载

我遇到的问题是,当页面加载内容时,它将div垂直放置在彼此之上,然后在加载所有内容时正确显示它们。例子:

http://www.betweenmanandbeast.com/bmb_om

我明白,这是不太什么插件在应该做的 - 但它几乎工作正常(如果每个人都在100MB线,它会没事的!),我觉得它只是需要一些额外的代码的地方。

这里是该代码的jsfiddle:

http://jsfiddle.net/wnD3r

另外值得一提的是,当它是一个单一的自动调宽后(比如,如果你点击“博客”),这一切都停留在一条线加载,这意味着它正确地计算一个自动宽度的类,而不是当页面上有多个时。初始化代码是:

$("#content").smoothDivScroll({ 
    mousewheelScrolling: "allDirections", 
    manualContinuousScrolling: true, 
    autoScrollingMode: "onStart", 
    hiddenOnStart: false 
    }); 

任何想法?

非常感谢提前!

回答

0

我不是100%确定我理解这个问题,但Smooth Div Scroll需要知道滚动条中每个元素的宽度,以便能够设置可滚动区域的总宽度。它通过迭代滚动器中的所有元素来完成此操作,将每个元素的宽度添加到所有元素的组合宽度。

如果你总是会在你的标记中设置固定的元素宽度(在CSS中指定,或者甚至是HTML标签上的属性,就像你可以对图像所做的那样),Smooth Div Scroll在计算总宽度时没有问题在滚动条的实际内容加载之前的所有元素。这意味着我可以在jQuery事件$(document).ready中设置可滚动区域的总宽度。

但问题是许多用户没有设置他们的内容的宽度,有时他们不能指定宽度,因为内容是动态的或以某种方式通过AJAX加载,所以元素的宽度不是事先已知。因此,Smooth Div Scroll会在尝试计算可滚动区域内所有元素的总宽度之前等待内容加载(发生在$(window).load上)。

所以,这就是今天Smooth Div Scroll加载内容的背景。如果有什么事情你认为可以更有效地或以不同的方式做,我很乐意听到它,因为宽度计算是我得到许多问题的东西。

0

感谢您对此做出的个人回复,以及一个伟大的插件,它允许我做一些我无法做到的事情!

为了进一步描述问题 - 当你点击第一个链接时,你看到多线加载(在所有内容加载之前)?如果没有,我可以尝试设置另一个例子。

根据插件如何计算宽度;我完全理解它为什么会这样做,并且我不知道足够的JS能够亲自提出解决方案,但是有一些东西 - 例如,是否可以将临时宽度设置为像9999这样的东西,所以虽然插件是合计宽度的内容不会破坏线?

我实际上是通过从0 - 9999改变来尝试的,但它并没有真正改变,也许它需要别的东西改变工作?

0

您应该可以将可滚动区域的宽度设置为CSS中的任何宽度,然后它将被内联样式属性覆盖,该属性指定计算所有元素的总宽度时的宽度。事情是这样的:

div.scrollableArea 
{ 
    position: relative; 
    width: 9999px; 
    height: 100%; 
} 

您也可以尝试与溢出的工作:隐藏应用于滚动,使其只是如此之高,只有一个元素是可见的。然后,在所有内容加载并计算宽度之前,元素垂直堆叠并不重要。

当然,这些只是建议 - 我没有自己尝试过。