0

我目前正在将 smoothdivscroll 与混合媒体可变宽度类一起使用——它实际上并没有设置为做的事情(它喜欢所有类都是固定宽度的,但是添加了空白代码,它似乎工作得很好.

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

http://www.betweenmanandbeast.com/bmb_om

我知道这不是插件应该做的——但它几乎可以正常工作(如果每个人都在 100mb 线上,那会很好!),我觉得它只需要在某个地方添加一些额外的代码。

这是代码的jsfiddle:

http://jsfiddle.net/wnD3r

另外值得一提的是,当它是一个自动宽度的帖子时(例如,如果你点击“博客”),它在加载时都停留在一行上,这意味着它使用一个自动宽度类正确计算,而不是在那里页面上有多个。初始化代码为:

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

有任何想法吗?

提前非常感谢!

4

3 回答 3

0

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

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

您也可以尝试使用overflow:hidden 应用于滚动条,并使其高到只有一个元素可见。然后,在所有内容加载并计算其宽度之前,元素垂直堆叠并不重要。

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

于 2013-12-18T15:08:44.847 回答
0

感谢您亲自回复此问题,并感谢您提供了一个很棒的插件,让我可以做其他任何事情都无法做到的事情!

进一步描述问题 - 当您单击第一个链接时,您是否看到多行加载(在所有内容加载之前)?如果没有,我可以尝试设置另一个示例。

就插件如何计算宽度而言;我完全理解它为什么会这样做,而且我不知道足够多的 JS 能够亲自提出解决方案,但是有几件事 - 例如,是否可以将临时宽度设置为像 9999 这样的东西,所以当插件合计宽度时,内容不会断线?

我实际上通过从 0 更改到 9999 来尝试这个,但它实际上并没有什么不同,也许它需要改变其他东西才能工作?

于 2013-10-31T11:27:25.010 回答
0

我不是 100% 确定我理解这个问题,但 Smooth Div Scroll 需要知道滚动条中每个元素的宽度才能设置可滚动区域的总宽度。它通过迭代滚动条内的所有元素,将每个元素的宽度添加到所有元素的组合宽度来实现这一点。

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

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

以上就是今天 Smooth Div Scroll 加载内容的背景。如果您认为其中有什么可以更有效地或以不同的方式完成,我很想听听,因为宽度计算是我有很多问题的问题。

于 2013-10-26T14:20:38.943 回答