原生js实现侧边栏广告上下浮动

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style>
		*{padding: 0;margin: 0;}
		#box{width: 300px;height: 300px;background: red;display: flex;position: absolute;right: 50px;top: 100px;}
		#box p{width: 250px;height: 300px;font-size: 24px;text-indent: 2em;}
		body>p{font-size: 32px;text-align: center;}
		span{display: block;width: 50px;height: 300px;background: green;font-size: 40px;cursor: pointer;}
		</style>
		<script src="startMove.js"type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
	
	<div id="box">
	   <span id="span1">侧边栏=》</span>
       <p>哈迪斯撒娇是的撒旦很骄傲和打电话嘎嘎的撒旦很骄傲和打电话嘎嘎的撒旦很骄傲和打电话嘎嘎的撒旦很骄傲和打电话嘎嘎打火锅的萨达化</p>	
  
	</div>
	<p id="pp1">上课不要睡觉,好好学习</p>
	<script type="text/javascript">
	var Pp1 =document.getElementById("pp1");
	for(let i=0;i<=40;i++){
	     var p1= Pp1.cloneNode();
	        var text1 =document.createTextNode("上课不要睡觉,好好学习");
	        p1.appendChild(text1);
	        document.body.appendChild(p1)
	}
	
	
	  var oSpan=document.getElementById("span1");
	  var oBox =document.getElementById("box");
	   window.onscroll=function(){
	   var Scroll =document.documentElement.scrollTop||document.body.scrollTop;
	            var cH=document.documentElement.clientHeight;
	            var tag=Math.floor((cH-oBox.offsetHeight)/2)+Scroll;
	            startMove(oBox,{top:tag});
	           }
	</script>
	</body>
</html>

startMove.js的封装

var timer=null;
function startMove(obj,json,fn){
	      clearInterval(timer);
	      timer =setInterval(function(){
	            var flag=true;           //假设全部为真
	            for(let attr in json){   //遍历对象
	            if(attr =="opacity"){
	            var cur1 =parseInt(getStyle(obj,"opacity")*100)
	            }else{
	            var cur1 =parseInt(getStyle(obj,attr));
	              }
	                
	                target1=json[attr];
	                speed= (target1-cur1)/6;  //减速运动
	                var speed=speed>0?Math.ceil(speed):Math.floor(speed);    //判断speed的正负值
	                if(attr == "opacity"){
				obj.style.opacity = (cur1+speed)/100;
				obj.style.filter = "alpha(opacity="+(cur1+speed)+")";
			}else{
	                obj.style[attr]=cur1+speed+"px"; 
	                }
	                //console.log(cur1)
	                if(target1!=cur1){   //判断若有一处未完成 ,flag为假
	                    flag=false;
	                }
	              }
	                if(flag){
	                clearInterval(timer); 
	                if(fn){
	                      fn();
	                        }
	                }
	                
	      },30)
	     
}
function getStyle(obj,attr){
 	if(obj.currentStyle){      //支持IE
 		return obj.currentStyle[attr]
 	}else{                   //不支持IE
 		return getComputedStyle(obj,null)[attr]
 	}
 }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值