javascript页面返回顶部吸顶效果,导航栏吸顶,缓慢返回顶部,

本文详细介绍了如何使用JavaScript实现页面滚动时导航栏的吸顶效果,以及平滑返回页面顶部的功能。通过监听滚动事件,动态调整元素定位,确保导航栏在滚动到一定位置后固定在屏幕顶部。同时,介绍了一个优雅的回顶按钮,当用户滚动到页面底部时逐渐显示,点击后页面会缓缓滚动回到顶部,提供更好的用户体验。
摘要由CSDN通过智能技术生成
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
    *{margin: 0; padding: 0;}
    html,body{height: 6000px; width: 100%;}
	
	.logo{
		width: 100%;
		height: 100px;
		background: palevioletred;
	}
    .toubu{
        margin: 0 auto;
        width: 1256px;
        height: 48px;
        border-bottom: 2px solid red;
		
		opacity: 1;
		
		top: 300px;
		
    }
    .toubu .nav{
        margin: 0 auto;
        width: 986px;
        height: 48px;
      display: flex;
	  /* justify-content: space-between; */
	  align-items: center;
	    background: #FFF;
	    border: 1px solid red;
		
    }
    .toubu .nav .left{
        width: 100px;
        height: 30px;
       
		margin-left: 16px;
		background:url(logo1.png) no-repeat center center;
		background-size: 100% 100%;
    }

    .toubu .nav .center{
        width: 486px;
        height: 34px;
        background: #e2231a;
		margin-left: 106px;
		display: flex;
		justify-content: space-between;
		align-items: center;
            }
			
  .toubu .nav .center form{
	  margin-left: 2px;
	  width: 425px;
	  height: 30px;
	  background: #fff;
	 
  }
  .toubu .nav .center input{
	  width: 425px;
	  height: 30px;
	  border: none;
	  background: url(xj.png) no-repeat 380px center;
  }
  
  .toubu .nav .center #sub{
	  background: #e2231a;
	  background: url(fdj.png) no-repeat center center;
  }
    .toubu .nav .right{
        width: 130px;
        height: 32px;
        border: 1px solid rosybrown;
        background:pink;
		margin-left: 18px;
		background:url(gwc.png) no-repeat 18px center;
		
    }
	 .toubu .nav .right p{
		 font-size: 12px;
		 text-align: center;
		 line-height: 32px;
		 margin-left: 50px;
		
	 }
	
	.ret{
		width: 50px;
		height: 50px;
		background: #008000;
		font-size: 32px;
		color: #F1F1F1;
		text-align: center;
		line-height: 50px;
		position: fixed;
		right: 20px;
		bottom: 20px;
		opacity: 0;
	}
    </style>
</head>
<body>
<div class="logo"></div>
    <div class="toubu">
        <div class="nav">
            <div class="left"></div>
            <div class="center">
				<form action="" method="">
					<input type="text" name="" id="" value="矿泉水" />
					
				</form>
				<input type="button" name="" id="sub" value="" />
			</div>
            <div class="right">
				
			<p>我的购物车</p>
			</div>
        </div>
    </div>
	<div class="ret">
		<bottom>^</bottom>
	</div>
	
	<script type="text/javascript">
		//通过函数封装获取元素
		 function $(id){
			 return document.querySelector(id)
		 }
		 var toubu = $(".toubu")
		 var ret = $(".ret")
		
		//绑定浏览器页面滚动事件,触发函数执行
		onscroll =function(){
			//浏览器滚动事件兼容写法
			var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
			//判断条件 当浏览器页面大于100的时候 ,执行吸顶效果,固定
			if(scrollTop>100){
				toubu.style.position="fixed";
				//固定在top:0
				toubu.style.top="0"
				//过度2s
				toubu.style.transition="all 2s"
				
				//浏览器页面大于100的时候,出现返回顶部的按钮
				ret.style.opacity="1"
				ret.style.transition="all 2s"
			}else{
				//若小于100,那么久执行以下代码
				toubu.style.opacity="1"
				ret.style.opacity="0"
				toubu.style.top="100px"
			}
		}
	

	//判断点击事件,触发返回顶部效果
		ret.onclick=function(){
		
			//开启定时器,执行函数里面的条件语句
			time= setInterval(function(){
				//浏览器滚动事件兼容写法
				var topp = document.documentElement.scrollTop || document.body.scrollTop;
				//怕判断当浏览器页面大于0 的时候,点击按钮是页面返回顶部
				 if(topp > 0){
					 //在定时器执行一次的时候(定时器设置的是0.0003秒一次) 让页面减30.,循环,从而使得页面缓慢返回顶部,不会突然跳到顶部.....
					  document.documentElement.scrollTop -=30
				 }else{
					 document.body.scrollTop -=30
					 
				 }
				
				  
				
				  
				// console.log(topp)
				 // console.log("执行了从"+topp)
				  
				  
				 //当页面高度为0 的时候,关闭定时器
				 if(topp == 0){
					 clearInterval(time)
					 }
				 
				
			 },30)
		}
		
		
	</script>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值