html - Chrome 中的 CSS 网格布局似乎无法在超过 1000 行的情况下正常工作

标签 html css google-chrome css-grid

我使用“CSS 网格布局”和“粘性位置”技术创建了一个带有固定标题的滑动网格示例。为了方便起见,网格的内容是通过脚本生成的,我认为效果很好。

function fillGrid(selector, rows) {
  let cols = 3;
  let grid = $(selector);
  
  grid.empty();
  
  //cr header
  grid.append($('<div>').addClass('hcr').text('#'));
  
  //col headers
  for (let c = 1; c <= cols; c++) {
    grid.append($('<div>').addClass('hc').text(`Column ${c}`));
  }
  
  for (let r = 1; r <= rows; r++) {
    //row header
    grid.append($('<div>').addClass('hr').text(r));
    
    //cells
    for (let c = 1; c <= cols; c++) {
      grid.append($('<div>').addClass('c').text(`Cell ${r}-${c}`));
    }
  }
}

$('#reload').click(e => {
  var rows = Number.parseInt($('#rows').val());
  fillGrid('#grid1', rows);
})

$(document).ready(function() {
  fillGrid('#grid1', 10);
});
body {
  font-family: 'Segoe UI', sans-serif;
  font-size: 12px;
}

.grid {
  display: grid;
  width: 600px;
  height: 300px;
  grid-template-columns: 40px 200px 100px 500px;
  grid-auto-rows: min-content;
  border: 1px solid #ccc;
  overflow: scroll;
  margin-top: 20px;
  background-color: #aaa;
  margin-right: 10px;
}

.hcr, .hc, .hr {
  background-color: #ddd;
  border-right: 1px solid #ccc;
  border-bottom: 1px solid #ccc;
  padding: 2px;
  position: sticky;
}

.hcr {
  top: 0;
  left: 0;
  z-index: 1;
  text-align: center;
}

.hc {
  top: 0;
  white-space: nowrap;
}

.hr {
  left: 0;
  text-align: center;
}

.c {
  padding: 2px;
  border-right: 1px solid #ccc;
  border-bottom: 1px solid #ccc;
  background-color: #fff;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
  <input type="text" id="rows" value="10" />
  <input type="button" id="reload" value="Reload" />
</div>
<div class="grid" id="grid1"></div>

网格最多可运行 999 行。当加载超过 999 行时,仅显示第 999 行之前的单元格,而后面的单元格错误地位于第 999 行标题上方的左侧。

同一示例在 Firefox 56 和 Edge 16(版本 16299)中正常运行。

我哪里错了?

最佳答案

好的,出于稳定性和 RAM 消耗的原因,已将 1000 行(以及 1000 列)限制有意引入 Chrome 引擎。新版本的网格功能似乎正在开发中,应该可以解决问题。

来源:

UPD:从 Chrome 版本 96.0.4642 开始,元素数量扩展到 100,000 行/列

关于html - Chrome 中的 CSS 网格布局似乎无法在超过 1000 行的情况下正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47218341/

相关文章:

javascript - 无法运行包含的js文件

jquery - 将 jquery 回调构建到 requestAnimationFrame 函数中用于间隔

javascript - 执行随机 css 更改

javascript - Google Chrome 不显示 javascript 更新(使用 Three.js)

php - 文本区域值未插入到 MYSQL 数据库中

html - 在CSS3的@page中动态设置样式

css - 固定标题消失

javascript - 如何在不同组件的 angular2 中设置 css 样式,以便它们能够很好地适应彼此?

html - 选取框在 Google Chrome 中不工作?

javascript - 使用 nvidia GPU 在 Windows x64 上的 Chrome 中 Webgl 闪烁