Web css+js实现返回顶部例子

                                                   Web css+js实现返回顶部例子

一、简述

       记--使用css+js实现返回顶部的例子,兼容IE6浏览器。

二、效果

       左边是谷歌浏览器的测试效果,右边是IETester模拟的IE6浏览器。方式1是直接回到顶部,方式2和方式3是使用定时器将滚动条慢慢滚动到顶部。不同点在于方式2使用setInterval(),方式3使用setTimeout();

三、代码

<!DOCTYPE html>
<html lang="zh-CN">
	<head>
		<meta charset="UTF-8"> <!-- 设置字符集(编码)-->
		<title>js实现回到顶部例子</title> <!--页面标题-->
		
		<style type="text/css">
			li{
				list-style:none; /*去掉小圆点*/
				text-decoration:none;/*去掉下划线*/
				padding:3px;
				margin-bottom:5px;
				border:2px solid #00677C;
				_position:absolute;
				_right:10px;
			}	
			
			#rightBox{
				position:fixed;
				top:60%;
				right:12px;
				float:right;				
				display:none;
			}	
			
			/*a标签样式 默认样式, 点击之后的样式, 鼠标悬停在上面时的样式, 点击时的样式*/
			a:link{text-decoration:none;color:black}
			a:visited{text-decoration:none;} 
			a:hover{text-decoration:none;color:#56d471;}
			a:active{text-decoration:none;} 
			
			
			/* 兼容IE6 */
			#backTop1{
				cursor:pointer;	
				_top:expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight-this.offsetHeight-(parseInt(this.currentStyle.marginTop,10)||0)-(parseInt(this.currentStyle.marginBottom,10)||0)-210));
			}
			
			#backTop2{
				cursor:pointer;	
				_top:expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight-this.offsetHeight-(parseInt(this.currentStyle.marginTop,10)||0)-(parseInt(this.currentStyle.marginBottom,10)||0)-145));
			}
			
			#backTop3{
				cursor:pointer;
				_top:expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight-this.offsetHeight-(parseInt(this.currentStyle.marginTop,10)||0)-(parseInt(this.currentStyle.marginBottom,10)||0)-80));
			}
			
			/* 解决IE6闪烁现象*/
			*html{
				background-image:url(about:blank);
				background-attachment:fixed;
			}
		</style>
		
		<script type="text/javascript">
			var timer;
			function go2Top1(){
				timer = setInterval(function () {
					var scrollTop = document.documentElement.scrollTop | document.body.scrollTop; <!--获取当前跟滚动条的位置(最上面的边)-->
					document.documentElement.scrollTop = document.body.scrollTop = scrollTop - scrollTop/3 - 20; <!-- 设置滚动条位置-->					
					scrollTop = document.documentElement.scrollTop | document.body.scrollTop;
					if(scrollTop <= 0) <!--滚动条到达最顶部时,清除定时器;  这里会多执行一次因为重新设置滚动条位置之后没有更新scrollTop-->
					{
						clearTimeout(timer);
					}
				}, 100); <!-- 每100毫秒执行一次-->
			}
			
			function go2Top2(){
				var scrollTop = document.documentElement.scrollTop | document.body.scrollTop; <!--获取当前跟滚动条的位置(最上面的边)-->
				window.scrollBy(0, -(scrollTop/3+20));//滚动条向上滚scrollTop/3+10
				timer = setTimeout('go2Top2()', 100); <!-- 每100毫秒执行一次go2Top2() -->
				if(scrollTop <= 0)<!-- 滚动条到达最顶部时,清除定时器; 这里会多执行一次因为重新设置滚动条位置之后没有更新scrollTop-->
				{
					clearTimeout(timer);
				}
			}

			
			window.onload = function(){ <!-- 页面加载时-->	
				var rightBox = document.getElementById("rightBox");
				var backTop2 = document.getElementById("backTop2");
				var backTop3 = document.getElementById("backTop3");
				backTop2.onclick = go2Top1;
				backTop3.onclick = go2Top2; <!-- 设置backtop3的点击事件为go2Top2-->
				window.onscroll = function(){ <!-- 当滚动条滚动时-->					
					var viewHeight = document.documentElement.clientHeight; <!--获取可视高度-->
					var scrollTop = document.documentElement.scrollTop | document.body.scrollTop; <!--获取当前跟滚动条的位置(最上面的边)-->
					<!-- console.log("viewHeight:"+viewHeight+" scrollTop:"+scrollTop); --> <!-- 打印到控制台-->
					if(scrollTop > viewHeight/2) <!-- 当滚动超过半屏就显示"回到顶部"-->
					{
						rightBox.style.display = "block"; <!-- 显示"回到顶部"-->
					}
					else
					{
						rightBox.style.display = "none"; <!-- 不显示"回到顶部"-->
					}
				}
			}
		</script>
		
	</head>
	
	<body>
		<div style='height:2000px;border:1px solid #0000FF;text-align:center;'>回到顶部 测试例子</div>
		<div id='rightBox'>
			<ul>
				<li id='backTop1' title='点击返回顶部方式1'><a href='javascript:scroll(0,0)'>回到</br>顶部</a></li>
				<li id='backTop2' title='点击返回顶部方式2'>回到</br>顶部</li>
				<li id='backTop3' title='点击返回顶部方式3'>回到</br>顶部</li>
			</ul>
		</div>
	</body>
	
</html>

四、总结

       4.1 鼠标滚动事件

             在页面加载事件中进行绑定相关动作。 有些js操作元素前提是html元素已经存在,所以通常js操作是在页面加载时或加载之后。

window.onload = function()
{
    //编写js语句
}

            滚动条滚动事件  

window.onscroll = function()
{
    //编写js语句
}

       4.2 滚动条回到顶部

             方式1: javascript:scroll(0,0)

             方式2:document.documentElement.scrollTop = 0;document.body.scrollTop = 0; //这里为了兼容性,设置了两个属性

       4.3 定时器            

var timer = setTimeout('go2Top()', 100); <!-- 每100毫秒执行一次go2Top() -->
或 var timer = setInterval('go2Top()', 100); <!-- 每100毫秒执行一次go2Top() -->

clearTimeout(timer); <!--清除定时器-->

       4.4 DIV浮动位置

        

          上面的position:fixed;和top:60%;属性设置在IE6浏览器不起作用, 固定在右下角了。

         

       因此使用以下设置,将div位置跟随滚动态进行调整,如跟滚动条往下滚动10px,div也往下移10px。 

       ( IE6 能识别_ 符号,以区分其他浏览器) 

_top:expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight-this.offsetHeight-(parseInt(this.currentStyle.marginTop,10)||0)-(parseInt(this.currentStyle.marginBottom,10)||0)-80));*/

     

      但是div还有闪烁现象:

      

      解决方式:添加以下设置       (IE6能解析 * html)

*html{
	background-image:url(about:blank);
	background-attachment:fixed;
}

     效果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值