[英]Fixing multi-line load with smoothdivscroll
我目前正在将Smoothdivscroll与混合媒体可变宽度类结合使用-实际上并未设置要执行的操作(它喜欢将所有类都设置为固定宽度,但是添加空白代码似乎可以正常工作。
我遇到的问题是,当页面加载内容时,它会将div垂直放置在彼此之上,然后在加载所有内容时正确显示它们。 参见以下示例:
http://www.betweenmanandbeast.com/bmb_om
我知道这不是插件应该做的事情-但它几乎可以正常工作(如果每个人都在100mb行上,那太好了!),我感觉到它只需要在某个地方添加一些额外的代码即可。
这是代码的jsfiddle:
还值得一提的是,当它是单个自动宽度的帖子(例如,如果您单击“博客”)时,它们在加载时都停留在一行上,这意味着它可以正确地使用一个自动宽度类进行计算,而不是在在页面上有多个。 用于初始化的代码是:
$("#content").smoothDivScroll({
mousewheelScrolling: "allDirections",
manualContinuousScrolling: true,
autoScrollingMode: "onStart",
hiddenOnStart: false
});
有任何想法吗?
预先感谢!
我不确定是否100%理解问题,但是Smooth Div Scroll需要知道滚动条中每个元素的宽度才能设置可滚动区域的总宽度。 它通过迭代滚动器中的所有元素,并将每个元素的宽度添加到所有元素的组合宽度中来实现。
如果您总是在标记中设置固定的元素宽度(在CSS中指定,甚至在HTML标签上指定为属性,就像对图像一样),Smooth Div Scroll会毫无问题地计算所有元素的总宽度加载滚动条的实际内容之前。 这意味着我可以在jQuery事件$(document).ready中设置可滚动区域的总宽度。
但是问题在于,许多用户没有为其内容设置宽度,有时他们不能指定宽度,因为内容是动态的或通过AJAX加载的,因此元素的宽度事先未知。 因此,Smooth Div Scroll会等到内容加载完毕(在$(window).load上)之后,才尝试计算可滚动区域内所有元素的总宽度。
因此,这就是今天“平滑Div滚动”如何加载内容的背景。 如果您认为有什么办法可以更有效地完成或以其他方式完成,那么我很想听听,因为宽度计算是我遇到的许多问题。
感谢您亲自回答此问题,并感谢一个出色的插件,该插件使我能够做其他事情无法实现的事情!
为了进一步描述问题-单击第一个链接时,是否看到多行加载(在加载所有内容之前)? 如果没有,我可以尝试建立另一个示例。
关于插件如何计算宽度; 我完全理解为什么它会以这种方式起作用,并且我不了解足够的JS来亲自提出解决方案,但是有两件事-例如,是否可以将临时宽度设置为像9999之类的东西,因此,当插件总计宽度时,内容不会中断吗?
我实际上是通过将0更改为9999来尝试的,但实际上并没有什么不同,也许还需要其他更改才能起作用?
您应该能够将可滚动区域的宽度设置为CSS中的任何宽度,然后当计算所有元素的总宽度时,将由指定宽度的内联样式属性覆盖它。 像这样:
div.scrollableArea
{
position: relative;
width: 9999px;
height: 100%;
}
您也可以尝试将overflow:hidden应用于滚动条,并将其设置得很高,以至于只有一个元素可见。 然后,在所有内容加载完毕并计算其宽度之前,垂直堆叠这些元素都没关系。
当然,这些只是建议-我自己还没有尝试过。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.