Dieses Beispiel ist etwas grob, aber sollte Ihnen etwas geben, was Sie suchen. Sie müssten <tr>
angeben, dass Sie die Klasse "sticky" einfrieren/sperren und ein Ereignis an das Dokument-Scroll-Ereignis anhängen möchten, um zu überwachen, wann das sticky-Element in Sicht kommt und die Position umgestellt wird.
Sehen Sie diese fiddle
JS
$(function() {
$(document).scroll(function() {
var $stickyRow = $('tr.sticky'),
$anchor = $stickyRow.next();
$stickyRow.removeClass('fixed top bottom');
if (!isScrolledIntoView($anchor)) {
var orientation = ($anchor.offset().top < $(window).scrollTop()) ? 'top' : 'bottom';
$stickyRow.addClass('fixed ' + orientation);
}
});
});
function isScrolledIntoView($elem) {
var $window = $(window);
var docViewTop = $window.scrollTop();
var docViewBottom = docViewTop + $window.height();
var elemTop = $elem.offset().top;
var elemBottom = elemTop + $elem.height();
return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop));
}
CSS
tr.fixed {
position: fixed;
bottom: 0;
}
tr.fixed.bottom {
bottom: 0;
}
tr.fixed.top {
top: 0;
}
Die Funktion isScrolledIntoView
von this StackOverflow answer kommt. Beachten Sie auch, dass ich überprüfe, ob die klebrigsten Zeilen, die am nächsten sind ($stickyRow.next()
), angezeigt werden, weil ich sie als Ankerpunkt verwende.
Haben Sie Scrollspy oder ähnliche Plugins ausprobiert? – mmgross
Was Sie wollen, ist wahrscheinlich eine eingefrorene/gesperrte Tabellenzeile. [Hier] (http://brentmuir.com/projects/freezeheader/demo.html) und [hier] (http://kjell.haxx.se/tablelock/) sind Demos solcher Effekte – zgood
@zgood Ja, das ist die Art der Wirkung bin ich nach aber für eine Reihe in der Mitte des Tisches und nicht den Kopf. –