Ich repariere ein div an der Unterseite des Fensters, sobald seine Position aus der Fensteransicht gescrollt ist. Ich 'fixiere' es dann, wenn die Position zurückgescrollt wird. Wenn das Scrollen langsam ausgeführt wird, gibt es ein schreckliches Flackern von Positionen. Gibt es eine Möglichkeit, dies zu bekämpfen?Stoppen Sie flackern, wenn Sie div dynamisch fixieren
DEMO https://jsfiddle.net/3146nxLx/
var initSet = false;
$(window).scroll(function() {
if (isScrolledIntoView($('#myDivTrigger'))) {
if (!initSet) {
initSet = true;
}
$("#myDiv").removeClass('fixed');
} else if (initSet) {
$("#myDiv").addClass('fixed');
}
});
function isScrolledIntoView(elem) {
var $elem = $(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));
}
Die _flick_ erfolgt becau Sie "entfernen" (zeitlich) ein Element im DOM-Fluss. –
Verwenden Sie einen sicheren Rand, der den Trick machen könnte –
Sie könnten ein Duplikat des von Ihnen festgelegten Duplikats (über js) nur an dieser Stelle erstellen/entfernen, wenn es behoben ist. –