js右側懸浮框


示例:屏幕右側懸浮框

原理:oDiv.style.top = document.documentElement.clientHeight - oDiv.offsetHeight + scrollTop + "px";

 

知識點:

瀏覽器窗體的高度

document.documentElement.clientHeight

瀏覽器滾動的高度

var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;

 

html部分

<body style=" height:1600px;">
    <div id="div1"></div>
</body>

#div1 { position:absolute; right:0; bottom:0; width:100px; height:150px; background:green;}

js部分

<script>

window.onscroll = function(){
	var oDiv = document.getElementById("div1");
	var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
	
	//oDiv.style.top = document.documentElement.clientHeight - oDiv.offsetHeight + scrollTop + "px";
	oDiv.style.top = startMove(document.documentElement.clientHeight - oDiv.offsetHeight + scrollTop);
}

var timer = null;
function startMove(iTarget){
	clearInterval(timer);
	
	timer = setInterval(function(){
		var oDiv = document.getElementById("div1");
		var speed = (iTarget - oDiv.offsetTop)/4;
		speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
		
		if(oDiv.offsetTop == iTarget){
			clearInterval(timer);
		} else {
			oDiv.style.top = oDiv.offsetTop + speed + "px";
		}
		
	},30);

}

</script>

  

同上面這個懸浮框,可心改成另一個示例:對聯懸浮框

 

示例:對聯懸浮框

原理:

iTarget = (document.documentElement.clientHeight - oDiv.offsetHeight)/2 + scrollTop;

 

潛在問題:

對聯一直在不停的抖動

 

檢測分析:

1,打印出這個div 的offsetTop,發現它的值始終在兩個相關1像素的值之間跳動

2,再打印iTarget發現它是800.5

 

原因:iTarget不是一個整數,造成“對聯”不停的抖動

 

解決:

iTarget = parseInt((document.documentElement.clientHeight - oDiv.offsetHeight)/2 + scrollTop);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM