is changed the FIRST time from 'machine-floating'
* to 'machine-sticky', the entire
-- with the exception of the canvas inside it -- disappears
* until you lift your finger or the scrolling stops.
*
* The fix, according to http://stackoverflow.com/questions/32875046/ios-9-safari-changing-an-element-to-fixed-position-while-scrolling-wont-paint,
* is to add a "transform: translateZ(0)", or alternatively "transform: translate3d(0px,0px,0px)",
* to the machine
first. Note that before I added that, the problem also seemed to be exacerbated
* by my attempt to remove any pre-existing 'machine-floating' or 'machine-sticky' class separately, which
* is why I now have redundant replace() calls below, updating the style in one step instead of two.
*/
machine.style.transform = "translateZ(0)";
if (window.pageYOffset <= topMachine) {
if (machineSibling) machineSibling.style.paddingTop = 0;
machine.className = 'machine-floating ' + machine.className.replace(/machine-(floating|sticky) /g, '');
} else {
if (machineSibling) machineSibling.style.paddingTop = (machine.offsetHeight + 8) + 'px';
machine.className = 'machine-sticky ' + machine.className.replace(/machine-(floating|sticky) /g, '');
}
if (prevOnScroll) prevOnScroll();
}
}
};
}
/**
* findTop(obj)
*
* @param {Object} obj
*/
function findTop(obj)
{
var curTop = 0;
if (typeof obj.offsetParent != 'undefined' && obj.offsetParent) {
while (obj.offsetParent) {
curTop += obj.offsetTop;
obj = obj.offsetParent;
}
curTop += obj.offsetTop;
}
else if (obj.y) {
curTop += obj.y;
}
return curTop;
}