syannu
4/26/2017 - 1:39 AM

pagetopボタンの追従, スクロールトリガー

function setPositionPagetop() {
	var $btnPagetop      = $('.btn-pagetop');
	var btnPagetopHeight = $btnPagetop.height() + 10;  // ボタン下余白
	var $boxCopyright    = $('.box-copyright-footer');
	var classSet = 'stay';
	var flag = true;  // 追従
	
	// setOffset
	var fps = 30;
	var frameTime = 1000 / fps;
	var boxOffset;
	var btnOffsetBtm;
	var windowOffsetBtm;

	function setOffset() {
		boxOffset       = $boxCopyright.offset().top;
		btnOffsetBtm    = $btnPagetop.offset().top + btnPagetopHeight;
		windowOffsetBtm = $(window).scrollTop() + $(window).height();

		setTimeout(setOffset, frameTime);
	}

	$(window).scroll(function() {
		setOffset();

		if (flag == true && btnOffsetBtm >= boxOffset) {
			// 停止
			flag = false;
			$btnPagetop.addClass(classSet);
			btnOffsetBtm = $btnPagetop.offset().top + btnPagetopHeight;
		}
		if (flag == false && boxOffset >= windowOffsetBtm) {
			// 追従再開
			flag = true;
			$btnPagetop.removeClass(classSet);
		}
	});
}