侧边栏固定定位的应用

侧边栏固定定位的应用

以京东为例:示例图以及背景图

       

问题:

1:用image-position取图。略

2:position:fixed固定定位。

3:完成动画,使用jquery库。

思路:

定位:如果使用left,当改变浏览器大小时会出现差错,所以采用right=0。

布局:如果只用一张背景图做的话,当鼠标移入时,改变width的值,背景图片的position值,添加文本,及背景颜色,文本,           颜色,发现由于宽度的变大,在取图片时会显示其它背景,所以不采用此方法。

        将文本放在一个div里,首先设置定位将其隐藏,背景图片放在一个div里,鼠标移入图片,显示文本并且鼠标移入文本仍显示,所以事件对象不可设为背景图片所在div,应为两个div的父元素,即设置一个div将其包围,在父元素设置鼠标事件,且不可设宽度。

动画:使用定时器,因为鼠标移入移出,如果频率过快,会不断触发。

html:

<div id="bar">
	<div id="bar_1"><a id='jd_hy' href="#">京东会员</a><div id="img_1"></div></div>
	<div id="bar_2"><a id='gw_c'  href="#">购物车  </a><div id="img_2"></div></div>
	<div id="bar_3"><a id='my_gz' href="#">我的关注</a><div id="img_3"></div></div>
	<div id="bar_4"><a id='my_zj' href="#">我的足迹</a><div id="img_4"></div></div>
	<div id="bar_5"><a id='my_xx' href="#">我的消息</a><div id="img_5"></div></div>
	<div id="bar_6"><a id='zx_jm' href="#">咨询JIMI</a><div id="img_6"></div></div>
	<!-- 回到顶部 -->
	<div id="bar_7"><span id='hd_top' href="#">顶部</span><div id="img_7"></div></div>
	<div id="bar_8"><a id='fk' href="#">反馈</a><div id="img_8"></div></div>
</div>

css:

#bar_1,#bar_2,#bar_3,#bar_4,#bar_5,#bar_6,#bar_7,#bar_8{
	height: 35px;
	position: fixed;
	right: 0;
	cursor: pointer;
	background: red;
	z-index: 100;/*设置层次居于最高*/
}
#img_1,#img_2,#img_3,#img_4,#img_5,#img_6,#img_7,#img_8{
	border-radius: 5px 0 0 5px;
	width: 30px;
	height: 35px;
	line-height: 35px;
	color: #fff;
	background-color: #7A6E6E;
	position: fixed;
	font-size: 12px;
	right: 0;
	background-image: url('image/toolbars.png');
	cursor: pointer;
}
#jd_hy,#gw_c,#my_gz,#my_zj,#my_xx,#zx_jm,#hd_top,#fk{
	right: 0;
	font-size: 12px;
	display: block;
	text-align: center;
	width: 75px;
	height: 35px;
	line-height: 35px;
	color: #fff;
	position: fixed;
	cursor: pointer;
}
/*京东会员*/
#bar_1{
/*不要设置宽度或者设为背景的宽度*/
	top: 220px;
}
#img_1{
	top: 220px;	
	background-position: -90px -174px;	
}
#jd_hy{
	top: 220px;
}
/*购物车*/
#bar_2{
	top: 256px;
}
#img_2{
	top: 256px;
	background-position: 410px 0px;
}
#gw_c{
	top: 256px;
}
/*我的关注*/
#bar_3{
	top: 292px;
}
#img_3{
	top: 292px;
	background-position: 410px -48px;
}
#my_gz{
	top: 292px;
}
/*我的足迹*/
#bar_4{
	top: 328px;
}
#img_4{
	top: 328px;
	background-position: 410px -99px;
}
#my_zj{
	top: 328px;
}
/*我的消息*/
#bar_5{
	top: 364px;
}
#img_5{
	top: 364px;
	background-position: 268px -148px;
}
#my_xx{
	top: 364px;
}
/*咨询JIMI*/
#bar_6{
	top:400px;
}
#img_6{
	top: 400px;
	background-position:410px -148px ;
}
#zx_jm{
	top: 400px;
}
/*回到顶部*/
#bar_7{
	bottom: 36px;
}
#img_7{
	bottom: 36px;
	background-position: 410px -250px;
}
#hd_top{
	bottom: 36px;
}
/*反馈*/
#bar_8{
	bottom: 0;
}
#img_8{
	bottom: 0;
	background-position: 410px -298px;
}
#fk{
	bottom: 0;
}

js:

由于高度是固定的当浏览器大小改变时,要随浏览器做出变化。

	// 改变浏览器大小侧边栏top变化
	window.onresize = function(){
		var height = document.documentElement.clientHeight||document.body.clientHeight;
		var top_1 = (height-35)/2+'px';  //将第一个居中
		var top_2 = parseInt(top_1)+36+'px';
		var top_3 = parseInt(top_2)+36+'px';
		var top_4 = parseInt(top_3)+36+'px';
		var top_5 = parseInt(top_4)+36+'px';
		var top_6 = parseInt(top_5)+36+'px';
		$("#bar_1,#jd_hy,#img_1").css('top',top_1);
		$("#bar_2,#gw_c,#img_2").css('top',top_2);
		$("#bar_3,#my_gz,#img_3").css('top',top_3);
		$("#bar_4,#my_zj,#img_4").css('top',top_4);
		$("#bar_5,#my_xx,#img_5").css('top',top_5);
		$("#bar_6,#zx_jm,#img_6").css('top',top_6);
	}

PS:回到顶部:

window.onscroll = function(){
		var scrollTop = document.documentElement.scrollTop||document.body.scrollTop;
		if(scrollTop>0){
			$('#bar_7').css('display','block');
		}else{
			$('#bar_7').css('display','none');
		}
	}
	// 用定时器匀减速,让scrollTop逐渐减小
	$('#bar_7,#hd_top').bind('click',function(){
		var timer = setInterval(function(){
			var scrollHeight = document.documentElement.scrollTop||document.body.scrollTop;
			var step = scrollHeight/5;  
			document.documentElement.scrollTop = scrollHeight - step;	
			if(scrollHeight==0){      
				clearInterval(timer);  //清理定时器 
				timer = null;
			}
		},30)
	})

猜你喜欢

转载自blog.csdn.net/qq_41179401/article/details/79670029
今日推荐