【问题标题】:HTML table with fixed headers and a fixed first column for the iPhone适用于 iPhone 的带有固定标题和固定第一列的 HTML 表格
【发布时间】:2011-04-30 06:29:48
【问题描述】:

我正在开发一个针对 iPhone 优化的网络应用程序。

在其中一个页面上,我将有一个包含数百行和数十列的表格。

我想让它工作,以便当用户向右滚动时第一列是固定的(保持可见),而当用户向下滚动时,标题是固定的(即,就像 Excel 中的“冻结窗格” )。

还有一篇文章解决了这个确切的问题:

HTML table with fixed headers and a fixed column?

...并提出了一个很好的解决方案:

http://fixed-header-using-jquery.blogspot.com/2009/05/scrollable-table-with-fixed-header-and.html

...和一个演示:http://acatalept.com/common/test/fixed-table.html

但是,这似乎不适用于 iPhone - 整个 PAGE 滚动。

我将如何修改此示例以使其在 iPhone 上运行?

(幸运的是,一个解决方案只需要在 iPhone 上运行,所以我可以利用任何特定的 webkit 功能,而忽略其他浏览器的问题。当然,一个跨浏览器兼容的解决方案更好......)

[更新]

好的,所以我意识到我问错了问题。

我认为,问题在于 iPhone 的 webkit 没有提供在固定大小(宽度/高度)div 内滚动内容的本机方式。所以基本上不可能有一个固定的页眉/页脚和一个滚动的中心区域。

(下面 Galambalazs 的回答非常出色,可以在我测试过的任何桌面浏览器中使用,但不能在 iPhone 中使用,因为它不是仅滚动表格主体,而是滚动整个页面)。

然后,我遇到了 Mateo Spinelli 的 iScroll (http://cubiq.org/iscroll)。我还没有完成我正在寻找的完整解决方案的实现,但他的脚本似乎可以处理我遇到的确切问题。

我还不能评论他的代码运行得如何,但他的演示绝对很棒,所以我的预感是 iScroll 将是一个很好的解决方案。

【问题讨论】:

    标签: html css iphone web-applications html-table


    【解决方案1】:

    更新

    我想我找到了适合你的解决方案:iScroll 作者:Matteo Spinelli

    移动 webkit 的溢出:滚动。 项目开始是因为 webkit for iPhone 不提供原生方式 在固定大小内滚动内容 (宽度/高度)div。所以基本上它 不可能有一个固定的 页眉/页脚和滚动中心 区域。到现在为止。


    您可以在这里找到一个非常简洁的 CSS 解决方案:http://www.imaputz.com/cssStuff/bigFourVersion.html

    一个非常基本的 webkit-only 精简版是:http://jsbin.com/awoqi/2

    CSS

    .viewport        { overflow: hidden; width:616px; height:300px;  }
    table            { overflow: hidden; width:616px;  }
    table td         { width: 200px; } 
    .fixedHeader tr  { display: block; }
    .fixedHeader th  { width: 200px; text-align:left; padding-right: 16px; }
    .scrollContent   { overflow: auto; display: block; height: 300px; }
    

    HTML

    <div class="viewport">
    <table border="0" cellpadding="0" cellspacing="0"  class="scrollTable"> 
    <thead class="fixedHeader"> 
      <tr> 
        <th>Header 1</th> 
        <th>Header 2</th> 
        <th>Header 3</th> 
      </tr> 
    </thead> 
    <tbody class="scrollContent"> 
      <tr> 
        <td>Cell Content 1</td> 
        <td>Cell Content 2</td> 
        <td>Cell Content 3</td> 
      </tr> 
      <tr> 
        <td>More Cell Content 1</td> 
        <td>More Cell Content 2</td> 
        <td>More Cell Content 3</td> 
      </tr>
    </tbody> 
    </table> 
    </div>
    

    600+16px 因为滚动条

    【讨论】:

    • 感谢您的详细回复!但是,它似乎不适用于 iPhone。当我查看它时,它不会为表格主体绘制垂直滚动条,并且在屏幕上拖动会移动整个 PAGE,而不仅仅是 tbody。就其价值而言,它确实在 Mac 上的 Safari 中完美运行,但这不是我所追求的。
    • 我刚刚注意到您自己找到了脚本。那么祝你好运吧。 :)
    • 如果您找到了一个好的解决方案,我很想知道您是否可以分享您的代码。我需要一个好的 iScroll 表格选项
    【解决方案2】:

    好的,所以我意识到我问错了问题。

    我认为,问题在于 iPhone 的 webkit 没有提供在固定大小(宽度/高度)div 内滚动内容的本机方式。所以基本上不可能有一个固定的页眉/页脚和一个滚动的中心区域。

    (Galambalazs 的回答非常好,可以在我测试过的任何桌面浏览器中使用,但在 iPhone 中却不行,因为它不仅滚动表格正文,还滚动整个页面)。

    然后,我遇到了 Mateo Spinelli 的 iScroll (http://cubiq.org/iscroll)。我还没有完成我正在寻找的完整解决方案的实现,但他的脚本似乎可以处理我遇到的确切问题。

    我还不能评论他的代码运行得如何,但他的演示绝对完美,所以我的预感是 iScroll 将是一个很好的解决方案。

    非常感谢,马特奥!

    【讨论】:

      【解决方案3】:

      你不能用两根手指滑动来滚动这样的 div 吗? (是的,这很模糊,但我知道它适用于 iFrame。)

      【讨论】:

      • Hdort,感谢您的回答。你绝对是对的 - 两指滑动有效。但是我发现许多非技术人员(我的大多数用户)都不知道这个手势,所以我无法构建依赖它的 UI。我还注意到,两指滚动速度很慢,通常很生涩,并且没有人们与优质 iPhone 应用程序相关的酷炫惯性滚动动作。所以,我希望有一些更优雅的东西。
      猜你喜欢
      • 2014-02-22
      • 2013-08-11
      • 2014-09-08
      • 1970-01-01
      • 2010-10-15
      • 1970-01-01
      • 1970-01-01
      • 2016-01-20
      • 2012-01-27
      相关资源
      最近更新 更多