jquery写一个表格内容tr自动往上滚动且表头固定鼠标悬浮到表格停止滚动
时间: 2023-08-23 22:05:42 浏览: 153
jQuery实现固定表头标题栏让表格数据在滚动栏里滚动.zip
以下是一个实现表格内容tr自动往上滚动且表头固定,鼠标悬浮到表格停止滚动的jQuery代码:
HTML代码:
```html
<div class="table-container">
<table>
<thead>
<tr>
<th>列1</th>
<th>列2</th>
<th>列3</th>
</tr>
</thead>
<tbody>
<tr>
<td>内容1-1</td>
<td>内容1-2</td>
<td>内容1-3</td>
</tr>
<tr>
<td>内容2-1</td>
<td>内容2-2</td>
<td>内容2-3</td>
</tr>
<tr>
<td>内容3-1</td>
<td>内容3-2</td>
<td>内容3-3</td>
</tr>
<!-- 其他行省略 -->
</tbody>
</table>
</div>
```
CSS代码:
```css
.table-container {
height: 300px;
overflow: auto;
}
th {
position: sticky;
top: 0;
background-color: #fff;
}
```
jQuery代码:
```javascript
(function($) {
$(function() {
var table = $('.table-container table');
var tbody = table.find('tbody');
var trs = tbody.find('tr');
var trHeight = trs.eq(0).outerHeight(); // 获取每一行的高度
var delay = 3000; // 滚动间隔时间,单位毫秒
var timer = null;
var stopScroll = false;
// 鼠标悬浮时停止滚动
table.on('mouseenter', function() {
stopScroll = true;
}).on('mouseleave', function() {
stopScroll = false;
});
function scroll() {
if (stopScroll) {
// 如果鼠标悬浮在表格上,则不进行滚动
return;
}
var firstTr = trs.eq(0);
var lastTr = trs.eq(trs.length - 1);
tbody.append(firstTr); // 将第一行移动到最后一行
// 如果最后一行已经到达表格顶部,则重置滚动位置
var scrollTop = table.scrollTop();
if (lastTr.position().top + trHeight <= table.height() - scrollTop) {
table.scrollTop(0);
}
// 继续滚动
timer = setTimeout(scroll, delay);
}
// 开始滚动
timer = setTimeout(scroll, delay);
});
})(jQuery);
```
解释:首先,我们在HTML中创建了一个包含表格的容器,设置了容器的高度和overflow属性,使得表格内容超出容器高度时可以自动出现滚动条。然后,在CSS中设置了表头的样式,使其固定在顶部。最后,在jQuery中实现了滚动功能和停止滚动功能。具体实现思路是:首先获取每一行的高度和滚动间隔时间,然后定时器每隔一段时间将第一行移动到最后一行,如果最后一行已经到达表格顶部,则重置滚动位置。同时,如果鼠标悬浮在表格上,则停止滚动。
阅读全文