本篇笔记基于网友的分享基于jQuery实现table无缝滚动,具体效果如下所示:
原网址:https://www.jq22.com/webqd4722
下面内容是波波改动部分,主要解决了在一个页面中存在多个table滚动时的调用和样式冲突的问题。改动不大,仅供参考。
- //参数1 tableID,参数2 div高度,参数3 速度,参数4 tbody中tr几条以上滚动
- function tableScroll(tableid, hei, speed, len) {
- var MyMarhq = '';
- clearTimeout(MyMarhq);
- $('#' + tableid).parent().find('.tableid_').remove();
- $('#' + tableid).parent().prepend(
- '<table class="tableid_"><thead>' + $('#' + tableid + ' thead').html() + '</thead></table>'
- ).css({
- /*'position': 'relative',*/
- 'overflow': 'hidden',
- 'height': hei + 'px'
- })
- /*
- $(".tableid_").find('th').each(function(i) {
- $(this).css('width', $('#' + tableid).find('th:eq(' + i + ')').width());
- });
- */
- //解决多个列表时样式冲突
- $('#' + tableid).siblings(".tableid_").find('th').each(function (i) {
- $(this).css('width', $('#' + tableid).find('th:eq(' + i + ')').width());
- })
- $(".tableid_").css({
- 'position': 'absolute',
- 'top': 0,
- 'left': 0,
- 'z-index': 9
- })
- $('#' + tableid).css({
- 'position': 'absolute',
- 'top': 0,
- 'left': 0,
- 'z-index': 1
- })
- if ($('#' + tableid).find('tbody tr').length > len) {
- $('#' + tableid).find('tbody').html($('#' + tableid).find('tbody').html() + $('#' + tableid).find('tbody').html());
- $(".tableid_").css('top', 0);
- $('#' + tableid).css('top', 0);
- var tblTop = 0;
- var outerHeight = $('#' + tableid).find('tbody').find("tr").outerHeight();
- function Marqueehq() {
- if (tblTop <= -outerHeight * $('#' + tableid).find('tbody').find("tr").length) {
- tblTop = 0;
- } else {
- tblTop -= 1;
- }
- $('#' + tableid).css('margin-top', tblTop + 'px');
- clearTimeout(MyMarhq);
- MyMarhq = setTimeout(function() {
- Marqueehq()
- }, speed);
- }
- MyMarhq = setTimeout(Marqueehq, speed);
- $('#' + tableid).find('tbody').hover(function() {
- clearTimeout(MyMarhq);
- }, function() {
- clearTimeout(MyMarhq);
- if ($('#' + tableid).find('tbody tr').length > len) {
- MyMarhq = setTimeout(Marqueehq, speed);
- }
- })
- }
- }