Google Chrome 中大型 html 表格的滚动行为缓慢

2023-12-25

我正在尝试创建一个带有滚动条的大型 HTML 表(大约 5000 行),因此我考虑将该表插入到<div>然后我可以随意格式化。

它在 Firefox 47 和 IE 11 中运行良好,但在 Chrome 59 中滚动行为缓慢。

工作演示 https://jsfiddle.net/ocbno8Lt/

<!DOCTYPE html>
<html>
    <head>
        <title>Test page</title>
    </head>

    <body>
        <div style="width: 400px; height: 300px; overflow: scroll;" id="test"></div>
        <script>
            let table = '<table style="table-layout: fixed; width: 3000px">';
            table += '<thead>';
            table += '<tr>';
            for(let i=0; i < 30; i++) { 
                table += '<th style="width: 100px">#' + i +'</th>';
            }
            table += '</tr>';
            table += '</thead>';
            table += '<tbody>';
            for(let i=0; i < 5000; i++) { 
                table += '<tr>';
                for(let j=0; j < 30; j++) { 
                    table += '<td>r: '+ i +' || c: '+ j +'</td>';
                }
                table += '</tr>';
            }
            table += '</tbody>';
            table += '</table>';
            document.getElementById('test').innerHTML = table;
        </script>
    </body>

</html>

但是,如果我只是将表格添加到文档正文中,则滚动行为在我测试过的 3 个浏览器中是平滑的(但我只能在本地开发服务器中运行代码时观察到此行为;如果我将表格附加到JSFiddle 中的文档正文再次出现了 Chrome 的缓慢行为)。

我的问题是,是什么导致了 Chrome 的这种缓慢行为,我该怎么做才能获得更平滑的滚动表格?

*编辑:我已经删除了style="position: relative"来自<td>在代码块中,因为这就是我在小提琴中所做的。我正在尝试这种风格,因为我注意到当表格元素相对定位时,IE 滚动起来往往会变得缓慢。我的最终目标是创建一个带有固定/冻结标题的大型 html 表格,该表格具有包含大量行的可滚动正文。


尝试添加transform: translate3d(0, 0, 0)到桌子上。下面给出一个例子。然而,这个技巧已经过时了。有关它的帖子可以追溯到 2012 年。例如,参见这个帖子 http://blog.teamtreehouse.com/increase-your-sites-performance-with-hardware-accelerated-css.

目前,浏览器 [...] 附带硬件加速;他们仅在有迹象表明 DOM 元素会从中受益时才使用它。有了CSS,最强烈的迹象是正在应用 3D 转换到一个元素。

在我的公司,我们几乎将它用于每个较大的列表。大多数情况下,它工作得很好。另一个解决方案是虚拟化。

let table = '<table style="table-layout: fixed; width: 3000px">';
table += '<thead>';
table += '<tr>';

for(let i=0; i < 30; i++) { 
  table += '<th style="width: 100px">#' + i +'</th>';
}

table += '</tr>';
table += '</thead>';
table += '<tbody>';

for(let i=0; i < 5000; i++) { 
  table += '<tr>';
  for(let j=0; j < 30; j++) { 
    table += '<td>r: '+ i +' || c: '+ j +'</td>';
  }
  table += '</tr>';
}

table += '</tbody>';
table += '</table>';
document.getElementById('test').innerHTML = table;
document.getElementById('test2').innerHTML = table;
#test {
  -webkit-transform: translate3d(0, 0, 0);
          transform: translate3d(0, 0, 0);
}
<h2>With translate3d</h2>
<div style="width: 400px; height: 300px; overflow: scroll;" id="test"></div>
<h2>Without translate3d</h2>
<div style="width: 400px; height: 300px; overflow: scroll;" id="test2"></div>

(or 完整片段 https://jsfiddle.net/rdqdxhsk/1/)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Google Chrome 中大型 html 表格的滚动行为缓慢 的相关文章

  • 具有 dropdown-menu-right 类的下拉菜单未向右对齐

    我有以下导航栏结构 current user username 来自我的模板系统 ul class navbar nav mr auto mt 2 mt lg 0 ul div class dropdown show a class dro
  • -webkit-overflow-scrolling:触摸;无效的属性值

    我不明白为什么这不起作用 我把它放在我的 html 和正文中 它仍然显示无效的属性值并被划掉 我首先尝试在媒体查询中使用它 但它在那里不起作用 有谁知道它对我不起作用的潜在原因 谢谢你 html body width 100 height
  • HTML/CSS 水平导航子菜单悬停显示错误

    我正在创建一个带有水平导航和垂直子菜单的 HTML 页面 一切工作正常 除了子菜单上的悬停显示在实际菜单项的左侧 看我的jsfiddle https jsfiddle net qmcte349 https jsfiddle net qmct
  • 如何使用Javascript统计通过ajax返回的
  • 的数量?
  • 我有一个 ajax 代码 它将列表项返回为 li one li li Two li 每次都会返回不同数量的 li 的 我想查一下数量 li li 它返回 如何使用 JavaScript 检查它 给你 returnedHTML find li
  • html 中的图像按钮

    我正在尝试获取一个带有图像的按钮 我见过类似下面的东西 但它们不会为您提供普通按钮所具有的按钮按下 释放效果
  • 如何在CSS中嵌套多个计数器?

    我想用 CSS 嵌套两个不同的编号 以获得如下所示的自动编号 1 第 1 节 1 1 小节1 1 2 小节1 2 第 2 节 2 1 小节2 2 2 小节2 这是我实现这一目标的尝试
  • 如何在没有文本修饰的文本下方添加一行:下划线? [复制]

    这个问题在这里已经有答案了 我需要在文本下方添加一行 而不需要文本装饰 下划线 否则如何在文本和行之间创建自定义空间 我们所做的 您可以使用Border Bottom和一些Padding Bottom a border bottom 1px
  • 获取要在新浏览器中显示的选择值

    嘿 基本上这是我的代码 运行的第一个脚本允许在 URL 中显示所选值
  • 更新 Parse.com 中的一行

    我所拥有的是 当单击编辑按钮时 两个输入字段中的值将创建一个新行 并删除旧行 下面是我使用的代码 但我想要的是更新原始行而不是删除原始行 实例 http jsbin com uyonek 2使用下面的代码是如何工作的 editBtn onc
  • 是否可以使用 Chrome 开发者工具审核多个页面?

    我试图找出我的网站中未使用的 CSS 类 然后我发现 Chrome 开发者工具中有一个审核功能 可以标记未使用的 CSS 类 但是 它一次只能执行一页 有没有办法让它审核多个页面 以便我可以找出所有页面中未使用的 CSS 类 我知道有一个
  • Bootstrap 4 行布局没有响应

    我正在使用 Bootstrap 4 在 MEAN 堆栈上为新闻文章布局创建一个 html 模板 但这应该不重要 对于这种总体布局的要求是 一篇 特色 文章位于其自己的列中 而其他 8 篇文章位于另一列中的两行中 当在较小的屏幕或移动设备上查
  • 给定 url,如何加载图像,然后将其转换为 Javascript 中的 tf.tensor 数据?

    我是前端和 javascript 新手 现在我正在编写一个基于 CNN 的 Web 应用程序 要从给定的 url 加载图像 然后将图像输入 CNN 我尝试编写以下代码 async function getImage var img new
  • 将 html 源拆分为多个文件

    HTML 是否支持将源代码拆分为多个文件 我正在寻找 C 的等价物 include 或者也许是类似 C 的东西partial 可以采用源路径并在该位置注入文件内容的元素 如果之前有人问过这个问题 我们深表歉意 Google 和 SO 搜索没
  • 使用 jQuery 在元素末尾添加“更多”html?

    我一开始有一个空的 div div div 我知道如何使用 jQuery 第一次将 html 添加到我的空 div 中 mydiv html my html 但我的问题是我不知道如何在非空 div 末尾推送更多 html div my ht
  • html 音频标签,持续时间总是无穷大

    我一直在研究使用 html 音频标签来播放一些音频文件 音频播放正常 但音频标签的持续时间属性始终返回无穷大 我尝试了接受的答案this https stackoverflow com questions 16849023 html5 au
  • 复制 Chrome 默认输入的轮廓样式

    如何设置默认 Chrome 输入的轮廓样式 焦点上为橙色 使其在每个浏览器中看起来都相同 Chrome 风格似乎是textarea focus outline rgb 229 151 0 auto 5px outline offset 2p
  • 如何使用 jQuery 将各种元素包装在 div 标签中?

    我有一个 html 结构 如下所示 h5 Title h5 p Content p ul li Item li li Item li ul p Content p h5 Title h5 p Content p ul li Item li
  • 从提交的表单中转义字符串中的字符

    每次发布帖子时 我都会得到转义字符 gt gt gt 我有一个多步骤表单 它将数据从一种表单传输到另一种表单 我将这些值与准备好的语句一起保存在数据库中 数据库中的值当前看起来像Paul s House 用户应该可以在字符串中使用单引号和双
  • javascript获取网页中选定文本的段落

    突出显示文本后 我想获取所选文本所在的段落 var select window content document getSelection 请问有什么指点吗 这实际上很难做到 因为你必须考虑六种情况 所选内容不在一个段落内 简单 整个选择都
  • HTML标题属性样式[重复]

    这个问题在这里已经有答案了 如何在不使用 javascript 或 CSS 的情况下更改以下标记中标题属性的样式 因为我将 HTML 插入到原本无法编辑的文档中的特定位置 span title This is information Thi

随机推荐

  • 找到所有可能的结束和开始重叠的组合

    在文中找到所有不重叠区域的组合 https stackoverflow com questions 53176104 find all combinations with non overlapped regionsI 代码粘贴在下面 该函
  • 在 sqlite 中制作字符串的规范化版本 - 波兰字符 ł

    Apple 提供了在数据库中使用存储在数据库中的文本的规范化版本创建附加列的示例 派生财产 https developer apple com library mac samplecode DerivedProperty Introduct
  • 更改线程实时调度策略失败:CONFIG_RT_GROUP_SCHED=y

    如果我在这里而不是超级用户发布此内容 我深表歉意 我试图在实时组中运行 docker 并且遇到了启用 cgroups CONFIG RT GROUP SCHED在内核中运行实时 docker 应用程序 此处 https docs docke
  • 从List>中获取对象并存储在ViewModel中

    建议 想要有逻辑地阅读答案 gt gt 选择 TAB 最旧的 Goal Presentation of books with related inventorydetails on homepage such as Book Title I
  • jQuery 中的自动完成功能以及动态添加的元素

    我的要求是当用户在输入字段之一输入一些字符 至少 3 个 时显示几个选项 这些字符也可能会动态添加 由于数据很大 我无法在页面加载时加载数据 有一个 ajax 调用来获取过滤后的数据 我得到的问题是Expected identifier第
  • 如何用JavaScript测试两个对象是否相同?

    我需要一个函数 function isSame a b 其中 如果a和b相同 则返回true 我试过return a b 但我发现 将返回 false 我期望这个函数可以得到一些结果 isSame 3 14 3 14 true isSame
  • Webpack 2 - 如何停止生成 CSS 和 HTML 的 .js 文件?

    我是 Webpack 2 的新手 所以请原谅我到目前为止的简单理解 根据网上的一些教程 我拼凑了一个工作package json and webpack babel config js file 本质上 我试图将 SCSS 转换为 CSS
  • MS SQL Server 2008“带(无锁)”相当于 IBM DB2 9.7

    在 MS SQL Server 2008 中你可以这样写 FROM EMPLOYEE as A with nolock DB2 9 7 是否有等效语法 谢谢 DB2 未提交的读取 与您一起 SELECT FROM whatevertable
  • apache 别名与符号链接

    在 UNIX 系统上使用 apache 时 如果您的文件系统在 home me web icons 中有图标 并且您希望浏览器能够在调用 url 时显示它们http www me com icons myicon jpg http www
  • 使用多值位置字段在 solr 中搜索

    我可以为 solr 中的位置类型字段索引多个值 修改后的响应schema xml索引修改后的 exampledocs 看起来像 查询 http 192 168 3 19 8983 solr select wt json indent tru
  • 从 iOS 应用程序内生成条形码

    我想获取一个数字字符串并生成一个可以由任何扫描仪读取的简单条形码 我已经可以使用相机并读取条形码 但现在我想生成条形码 有谁知道有一个 sdk 可以让我做到这一点 资源或代码片段吗 谢谢 唯一可以做到这一点的免费图书馆是可可触摸条形码 ht
  • 从 SignalR 调用特定客户端

    我想从服务器调用特定客户端 而不是广播给所有客户端 问题是我在一些 AJAX 请求的范围内 比如说在 aspx 代码隐藏中 而不是在 Hub 或 PersistentConnection 中 所以没有 Clients 属性 并且进行 aja
  • 文件在被取消之前上传[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 这里遇到了
  • 在 Windows 程序集中使用 nasm 的 Hello World

    我在用着nasm http sourceforge net projects nasm 编译以下程序集 然而 代码在 Windows 下的控制台中崩溃了 C gt nasm f win32 test asm o test o C gt ld
  • 多个函数中的未绑定本地错误[重复]

    这个问题在这里已经有答案了 我一直在创建一系列随机事件 其中每个函数对一组主要变量执行不同的操作 但我不断收到未绑定的本地错误 这是我的代码的简化版本 variable 1 def main global variable secondar
  • 如何使用 C# .NET 4.5 将文件从 ZIP 存档读取到内存而不先将其解压到文件?

    NET Framework 4 5 通过以下类添加了对 ZIP 文件的支持System IO Compression 假设我有 ZIP 存档sample xml根目录下的文件 我想直接从存档读取此文件到内存流 然后将其反序列化为自定义 NE
  • DocuSign getRecipientView ttl_expired 错误

    我正在使用 DocuSign API 发布到收件人帖子视图 URL 我收到一个响应 URL 但如果我按照该 URL 操作 它会告诉我 event ttl expired 示例网址 https demo docusign net Signin
  • 为什么VBS不能正确读取这个文本文件?

    我有以下代码来读取文本文件 Option Explicit Dim InputFile Dim FSO oFile Dim strData InputFile C Program Files x86 AVG CloudCare Client
  • JavaScript Array#map:索引参数

    我的问题是关于mapJavaScript 中的数组方法 您可以向它传递一个带有第二个参数的函数 即正在处理的数组的当前元素的索引 但是 目的是什么 当你这样做时会发生什么 当你不这样做时会发生什么区别 您会使用此功能做什么 当前项的索引始终
  • Google Chrome 中大型 html 表格的滚动行为缓慢

    我正在尝试创建一个带有滚动条的大型 HTML 表 大约 5000 行 因此我考虑将该表插入到 div 然后我可以随意格式化 它在 Firefox 47 和 IE 11 中运行良好 但在 Chrome 59 中滚动行为缓慢 工作演示 http