我有一个解决方案,可以使用较小的jQuery和CSS创建带有固定页眉/页脚的可滚动表-但我正在寻找一种方法,使之成为跨浏览器兼容的仅CSS解决方案。
需要明确的是,我所寻求要做的是使用 只有
一个table
标签(和它是有效的子标签,colgroup
,col
,thead
,tbody
,tfoot
,tr
,th
,td
),而是采用了一套将符合下列条件的CSS规则:
此代码示例:http :
//jsfiddle.net/TroyAlford/SNKfd/显示了我当前的方法。大部分JS只是用随机值填充表,但最后一部分是驱动左右滚动的因素。
$tbody.bind('scroll', function(ev) {
var $css = { 'left': -ev.target.scrollLeft };
$thead.css($css);
$tfoot.css($css);
});
注意:提供的示例无法在IE中正确呈现,并且需要jQuery提供水平滚动。无论如何,我都不在乎水平滚动,所以如果解决方案不这样做就很好。
该答案将用作不完全支持的占位符position: sticky
,并将随着时间的推移而更新。当前建议不要在生产环境中使用本机实现。
有关当前支持,请参见此:https :
//caniuse.com/#feat=css-sticky
position: sticky
另一种答案是使用position: sticky
。如W3C所述:
粘性放置的框的位置类似于相对放置的框,但偏移量是使用滚动框参照最近的祖先,如果没有祖先具有滚动框,则参照视口进行计算。
这恰好描述了相对静态头的行为。将其分配给<thead>
或第一个<tr>
HTML标签将很容易,因为W3C应当支持此标签。但是,Chrome,IE和Edge都无法为这些标签分配粘性位置属性。目前,解决这一问题似乎也没有优先考虑。
对于表格元素似乎起作用的是将sticky属性分配给表格单元。在这种情况下,<th>
单元格。
因为表不是尊重您为其分配的静态大小的块元素,所以最好使用 包装器元素 来定义滚动溢出。
div {
display: inline-block;
height: 150px;
overflow: auto
}
table th {
position: -webkit-sticky;
position: sticky;
top: 0;
}
/* == Just general styling, not relevant :) == */
table {
border-collapse: collapse;
}
th {
background-color: #1976D2;
color: #fff;
}
th,
td {
padding: 1em .5em;
}
table tr {
color: #212121;
}
table tr:nth-child(odd) {
background-color: #BBDEFB;
}
<div>
<table border="0">
<thead>
<tr>
<th>head1</th>
<th>head2</th>
<th>head3</th>
<th>head4</th>
</tr>
</thead>
<tr>
<td>row 1, cell 1</td>
<td>row 1, cell 2</td>
<td>row 1, cell 2</td>
<td>row 1, cell 2</td>
</tr>
<tr>
<td>row 2, cell 1</td>
<td>row 2, cell 2</td>
<td>row 1, cell 2</td>
<td>row 1, cell 2</td>
</tr>
<tr>
<td>row 2, cell 1</td>
<td>row 2, cell 2</td>
<td>row 1, cell 2</td>
<td>row 1, cell 2</td>
</tr>
<tr>
<td>row 2, cell 1</td>
<td>row 2, cell 2</td>
<td>row 1, cell 2</td>
<td>row 1, cell 2</td>
</tr>
<tr>
<td>row 2, cell 1</td>
<td>row 2, cell 2</td>
<td>row 1, cell 2</td>
<td>row 1, cell 2</td>
</tr>
</table>
</div>
在此示例中,我使用一个简单的<div>
包装器来定义滚动高度(静态高度为)150px
。当然可以是任何大小。现在已经定义了滚动框,粘性<th>
元素将“与滚动框最靠近的祖先”作为核心。
position: sticky
polyfill不支持的设备可以使用polyfill,该polyfill通过代码实现行为。粘性位就是一个例子,它的行为类似于浏览器的实现position: sticky
。
polyfill的示例: http :
//jsfiddle.net/7UZA4/6957/
我有一个解决方案,通过它,我可以使用minor jQuery和CSS创建带有固定页眉/页脚的可滚动表,但我正在寻找一种方法,使其成为唯一一个跨浏览器兼容的CSS解决方案。 明确地说,我想要做的是只使用一个标记(它是有效的子标记,,,,,,,,),但采用一组满足以下条件的CSS规则: 必须在页眉/页脚/内容行之间保持列对齐 必须允许页眉/页脚在内容垂直滚动时保持固定 必须不需要任何jQuery或其他
问题内容: 是否有跨浏览器的CSS / JavaScript技术来显示较长的HTML表,以使列标题在屏幕上保持固定并且不随表主体滚动。考虑一下Microsoft Excel中的“冻结窗格”效果。 我希望能够滚动浏览表的内容,但始终能够看到顶部的列标题。 问题答案: 一段时间以来,我一直在寻找解决方案,但发现大多数答案都不起作用或不适合我的情况,因此我用jQuery写了一个简单的解决方案。 这是解决
问题内容: 我需要在网页上显示一个大表,并且需要防止第一列和第一行滚动。 我想动态设置此表的垂直大小(在某些静态大小的页眉/页脚页面内容之间),以使其尽可能高,而不必强制浏览器窗口具有垂直滚动条。 这仅需要在使用所有/任何版本的现代浏览器中工作:html,css,javascript,jquery 重要顺序: 具有许多表单字段,隐藏值,行的javascript折叠等的复杂表,稍后将添加 第一行将有
问题内容: 我一直在寻找一种仅使用CSS3单击位于页面顶部的按钮时向下滚动的方法。 但这对于我的需求而言有点太先进了,因为我只希望浏览器单击页面顶部的一个按钮即可向下滚动,所以我想知道:是否可以在没有输入按钮的情况下进行那些CSS滚动,有锚标签? HTML看起来像这样: 我已经有一些CSS,需要在单击按钮时触发: 问题答案: 您可以使用css3 伪选择器使用锚标记来完成此操作,当与当前URL哈希具
我一直在努力解决HTML/CSS粘滞头+滚动条的问题。我们正在创建一个程序,一旦containersize达到某个点(取决于用户的分辨率),就需要滚动条显示出来。 我在表中的第二列上强制设置一个min-width,因此表在某个点停止递减,并强制容器保持在某个宽度。容器上的溢出显示水平滚动条。一切正常。一旦我为垂直滚动添加了第二个滚动条,事情就会变得一团糟。有人有解决这个问题的办法吗?我想在.tab
我有一个PrimeFaces dataTable,我想让它的头是可滚动的。我将嵌入一个图像到头,所以当内容向下滚动时,图像应该消失。代码看起来像;