水平滚动失败,width = device-width iscroll

Rec*_*nic 8 mobile-safari viewport jquery-mobile iscroll4

示例代码:http://pastebin.com/95z3pftQ

我正在尝试构建一个带有固定标题的移动页面和一个"内容"部分,它将填充外部(已清理,但在其他方面是任意的)HTML.我需要使用iscroll或类似的东西,因为我需要支持垂直/水平滚动和缩放,这没有本机等效.

问题在于,使用width=device-width元视口指令,移动Safari会将所有块级元素调整为屏幕宽度,而不管其内容的宽度如何,除非它们具有指定的宽度. iscroll然后查看容器的宽度(这是屏幕的宽度),并且不知道有更多内容可以水平滚动.所以在这个例子中,div#container我iPhone上的计算宽度是290px,但计算出的宽度是1000px table#really-wide-content.

是否有一些禁用元视口指令在页面上的一个div内的效果?请注意,虽然我可以根据需要以编程方式更改内联样式,但我无法知道内容有多宽,或者html结构是什么样的.

JSu*_*uar 0

您可以在加载后的某个时刻设置 iScroll 的宽度吗,例如这个 JQuery 示例:

$('#scroller').width(your_width);
Run Code Online (Sandbox Code Playgroud)

通过/sf/answers/972892091/

无论如何,您可以按照此处的建议在页面加载后销毁并重新创建 iScroll:如何在 iScroll 中为滚动器设置动态宽度?

width=device-width另外,您可以在加载发生后将视口宽度设置为吗?也许这将允许 iScroll 首先加载容纳内容。

  • 我最终直接设置元素的宽度,尽管这个解决方案可能更干净。我先验地不知道宽度(问题的原因),但我后来了解了 element.scrollWidth。https://developer.mozilla.org/en-US/docs/DOM/element.scrollWidth (2认同)