当前头像跟随着当前内容移动...

项目需要,我自己写了一个头像跟随内容移动的功能,同时也有展开更多的功能;开始实现以后,特别高兴。可后来才发现有BUG,特大一BUG。展开更多功能很漂亮,滑动功能也很漂亮。

不多说,看代码:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="format-detection" content="telephone=no"/>
<!--<link rel="stylesheet" type="text/css" href="../css/public.css" />-->
<style type="text/css">
* { -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-touch-callout:none;}
body, div, p, ul, textarea, form, input, h1, h2, h3, h4, h5, dl, dt, dd, img, section, article, aside, header, footer, nav, dialog, figure, hgroup { margin: 0; padding: 0; }
html, body { height: 100% }
body { font-family: Helvetica; -webkit-text-size-adjust: none; background: #fafafa; font-size: 14px; color: #555; }
h1, h2, h3, h4, h5 { font-weight: normal; font-size: 14px; }
em { font-style: normal; }
ul, ol, li { list-style: none }
img { border: 0 none }
a { text-decoration: none; color: #555; }
.clearfix { zoom: 1 }
.clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }/*清浮动*/
.fixed{ position:fixed; top:0; left:0; z-index: 10000;}
.mt10 { margin-top: 10px; }
.p10 { padding: 10px }
.p15 { padding: 15px }
.blue { color: #B26602!important; }
.bgcolor { background: #f0f0f0 }
.bb { border-bottom: 1px solid #e5e5e5; }
.mt20 { margin-top: 20px; }
.pB20{padding-bottom:20px;}
.fl{float:left;}
.fr{float:right;}
.bg-dadada{background-color:#dadada;}
.bg-dadada .p10{padding:8px; background-color: #efefef;}
.glance{padding:0 0 8px 100px; position:relative;}
.glance-con{ background-color:#f3f3f3; border:1px solid #d0d0d0; -webkit-border-radius:5px;/*-webkit-border-top-left-radius:0px;*/}
.glance-con-wrap{-webkit-border-radius:5px;-webkit-border-top-left-radius:0px; padding: 20px 5px 5px; min-height: 40px;}
.glance-con-wrap a{display: inline-block; padding: 0 14px; text-decoration: none; background: url(../u/s/i/tnd.gif) no-repeat right -5px; margin-bottom: 15px;}
.glance-con-wrap a.more_books{background: url(../u/s/i/tnd.gif) no-repeat right 7px;}
.glance-tab{position:absolute; left:0; top:0; bottom: 0; background: url(../u/s/i/lv_bg.gif) repeat-y 78px;}
.glance-tab-wrap{padding:8px; padding-right: 50px; font-size:12.6px; background: url(../u/s/i/tab_bg.png) no-repeat 50px 22px; position: relative;}
.glance-tab-wrap img{ 58px; height: 58px;-webkit-border-radius: 29px;}
.glance-tab-wrap p{margin-top:5px; text-align: center;}
.book-item {height: 165px; overflow: hidden;}
.book-item li{float:left;33.33%;margin-bottom:12px}
.book-item li .book-cover{position:relative;55px;height:72px;margin:0 auto}
.book-item li .book-cover img{margin:2px;background:url(../u/s/i/ireader.png) no-repeat center center;-webkit-background-size:32px 8px;51px;height:68px}
.book-item li .shadow{position:absolute;background:url(../u/s/i/book_cover.png) no-repeat;-webkit-background-size:55px 72px;55px;height:72px;display:block;top:0;left:0}
</style>
<title>附近的人都在看什么</title>
<script type="text/javascript">
function showBooks(obj){
	var className = obj.getAttribute("class");
	var boxes = document.getElementsByClassName("glance-con-wrap");
	if(className == undefined || className == ""){
		obj.setAttribute("class","more_books");
		obj.innerHTML = "收起";
		obj.previousSibling.previousSibling.style.height = "auto";
	} else if(className == "more_books") {
		obj.setAttribute("class","");
		obj.innerHTML = "更多显示";
		obj.previousSibling.previousSibling.style.height = 165 + "px";
	}
}

</script>
</head>
<body class="bg-dadada">
<div class="p10 ">
<div class="glance">
	<div class="glance-tab">
    	<div class="glance-tab-wrap">
        	<img src="../u/s/i/user-head3.png" width="36" height="36">
            <p>0.6Km</p>
        </div>
    </div>
    <div class="glance-con">
    	<div class="glance-con-wrap">
        <ul class="book-item clearfix">
        	        	<li><div class="book-cover" onClick="get_bookinfo(10023905)"><img width="51" height="68" src="/i/l/jpg/7296/10023905.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10013667)"><img width="51" height="68" src="../i/l/jpg/7296/10013667.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10024749)"><img width="51" height="68" src="../i/l/jpg/7296/10024749.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10030993)"><img width="51" height="68" src="../i/l/jpg/7296/10030993.jpg"><span class="shadow"></span></div></li><li><div class="book-cover" onClick="get_bookinfo(10024749)"><img width="51" height="68" src="../i/l/jpg/7296/10024749.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10030993)"><img width="51" height="68" src="../i/l/jpg/7296/10030993.jpg"><span class="shadow"></span></div></li><li><div class="book-cover" onClick="get_bookinfo(10024749)"><img width="51" height="68" src="../i/l/jpg/7296/10024749.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10030993)"><img width="51" height="68" src="../i/l/jpg/7296/10030993.jpg"><span class="shadow"></span></div></li><li><div class="book-cover" onClick="get_bookinfo(10024749)"><img width="51" height="68" src="../i/l/jpg/7296/10024749.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10030993)"><img width="51" height="68" src="../i/l/jpg/7296/10030993.jpg"><span class="shadow"></span></div></li><li><div class="book-cover" onClick="get_bookinfo(10024749)"><img width="51" height="68" src="../i/l/jpg/7296/10024749.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10030993)"><img width="51" height="68" src="../i/l/jpg/7296/10030993.jpg"><span class="shadow"></span></div></li>
        	        </ul>
                    <a onClick="showBooks(this);" href="javascript:void(0)">显示更多</a>
                    
        </div>
    </div>
</div>
<div class="glance">
	<div class="glance-tab">
    	<div class="glance-tab-wrap">
        	<img src="../u/s/i/user-head2.png" width="36" height="36">
            <p>0.9Km</p>
        </div>
    </div>
    <div class="glance-con">
    	<div class="glance-con-wrap">
        <ul class="book-item clearfix">
        	        	<li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10024749)"><img width="51" height="68" src="../i/l/jpg/7296/10024749.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10018742)"><img width="51" height="68" src="../i/l/jpg/7296/10018742.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(1041307)"><img width="51" height="68" src="../i/l/jpg/7296/1041307.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(1018130)"><img width="51" height="68" src="../i/l/jpg/7296/1018130.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10024749)"><img width="51" height="68" src="../i/l/jpg/7296/10024749.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10018742)"><img width="51" height="68" src="../i/l/jpg/7296/10018742.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(1041307)"><img width="51" height="68" src="../i/l/jpg/7296/1041307.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(1018130)"><img width="51" height="68" src="../i/l/jpg/7296/1018130.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10024749)"><img width="51" height="68" src="../i/l/jpg/7296/10024749.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10018742)"><img width="51" height="68" src="../i/l/jpg/7296/10018742.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(1041307)"><img width="51" height="68" src="../i/l/jpg/7296/1041307.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(1018130)"><img width="51" height="68" src="../i/l/jpg/7296/1018130.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10024749)"><img width="51" height="68" src="../i/l/jpg/7296/10024749.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10018742)"><img width="51" height="68" src="../i/l/jpg/7296/10018742.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(1041307)"><img width="51" height="68" src="../i/l/jpg/7296/1041307.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(1018130)"><img width="51" height="68" src="../i/l/jpg/7296/1018130.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10024749)"><img width="51" height="68" src="../i/l/jpg/7296/10024749.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10018742)"><img width="51" height="68" src="../i/l/jpg/7296/10018742.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(1041307)"><img width="51" height="68" src="../i/l/jpg/7296/1041307.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(1018130)"><img width="51" height="68" src="../i/l/jpg/7296/1018130.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
        	        </ul>
                    <a onClick="showBooks(this);" href="javascript:void(0)">更多显示</a>
        </div>
    </div>
</div>
<div class="glance">
	<div class="glance-tab">
    	<div class="glance-tab-wrap">
        	<img src="../u/s/i/user-head1.png" width="36" height="36">
            <p>0.3Km</p>
        </div>
    </div>
    <div class="glance-con">
    	<div class="glance-con-wrap">
        <ul class="book-item clearfix">
        	        	<li><div class="book-cover" onClick="get_bookinfo(10018742)"><img width="51" height="68" src="../i/l/jpg/7296/10018742.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10036235)"><img width="51" height="68" src="../i/l/jpg/7296/10036235.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10024749)"><img width="51" height="68" src="../i/l/jpg/7296/10024749.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10005575)"><img width="51" height="68" src="../i/l/jpg/7296/10005575.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
        	        </ul>
        </div>
    </div>
</div>
<div class="glance">
	<div class="glance-tab">
    	<div class="glance-tab-wrap">
        	<img src="../u/s/i/user-head1.png" width="36" height="36">
            <p>0.3Km</p>
        </div>
    </div>
    <div class="glance-con">
    	<div class="glance-con-wrap">
        <ul class="book-item clearfix">
        	        	<li><div class="book-cover" onClick="get_bookinfo(1041307)"><img width="51" height="68" src="../i/l/jpg/7296/1041307.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10030993)"><img width="51" height="68" src="../i/l/jpg/7296/10030993.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10018823)"><img width="51" height="68" src="../i/l/jpg/7296/10018823.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10031251)"><img width="51" height="68" src="../i/l/jpg/7296/10031251.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10047862)"><img width="51" height="68" src="../i/l/jpg/7296/10047862.jpg"><span class="shadow"></span></div></li>
        	        </ul>
        </div>
    </div>
</div>
<div class="glance">
	<div class="glance-tab">
    	<div class="glance-tab-wrap">
        	<img src="../u/s/i/user-head3.png" width="36" height="36">
            <p>0.1Km</p>
        </div>
    </div>
    <div class="glance-con">
    	<div class="glance-con-wrap">
        <ul class="book-item clearfix">
        	        	<li><div class="book-cover" onClick="get_bookinfo(1013532)"><img width="51" height="68" src="../i/l/jpg/7296/1013532.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10013667)"><img width="51" height="68" src="../i/l/jpg/7296/10013667.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10018823)"><img width="51" height="68" src="../i/l/jpg/7296/10018823.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10024749)"><img width="51" height="68" src="../i/l/jpg/7296/10024749.jpg"><span class="shadow"></span></div></li>
        	        	<li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
        	        </ul>
        </div>
    </div>
</div>
</div>
<div id="top-box" style="border: 1px solid #333; padding: 10px; background-color: #ccc; position: fixed; top: 0; left: 0;"></div>
<script type="text/javascript">
function get_bookinfo(bid){
	var json = '{"Action":"lbsShowBook", "Url": "../u/p/lbs.php?action=get_bookinfo_json&usr=i13701509&rgt=7&p1=&p2=999941&p3=6000&p4=501603&p5=14&p6=&p7=&p9=0&p15=&p16=&p19=&pk=&bid='+bid+'"}';
	window.ZhangYueJS.do_command(json);
}

window.onscroll = function(event){ //滚动条移动的时候执行以下函数
	var sTop = document.documentElement.scrollTop || document.body.scrollTop;  //滚动条距离页面项端的高度
	var boxes = document.getElementsByClassName("glance"); //获取所有class为“glance-con”的模块
	//document.getElementById("top-box").firstChild;
	var boxLens = boxes.length; //计算模块个数
	var iHeight = 0, n=0; //iHeight存放模块高度和,n用来存放当前屏内第一个模块的序数
	var tabH = 0; //存放头像要移动的高度
	var boxH = new Array(); //这个数组用来存放每个"glance-con"所在模块的高度
	var sumBoxs = new Array(); //用来存放前i个模块的高度和
	for(var i = 0; i < boxLens; i++ ) {
		boxH[i] = boxes[i].offsetHeight; //获取每个模块的高度
		iHeight += boxH[i]; //高度求和
		sumBoxs[i] = iHeight; //i=0时,sumBoxs[0] = boxH[0],i=1时,sumBoxs[0] = boxH[0]+boxH[1]以次类推
		if(i == 0 && sTop < sumBoxs[i]){
			n = i
		} else if(i > 0 && sTop > sumBoxs[i-1] && sTop < sumBoxs[i]){
			n = i;
		}	
	}
	if(n == 0){
		tabH = sTop;
	} else {
		tabH = sTop - sumBoxs[n-1];
	}
	if(tabH >= boxH[n] - 80){
		tabH = boxH[n] - 80;
	}	
	
	
	var boxTab_p = boxes[n].childNodes[1]; 
	
	
	var boxTab = boxTab_p.childNodes[1];
		
	boxTab.style.top = tabH + "px";
		
}
</script>
</body>
</html>

试下看,是不是很漂亮;多试几下,是不是有问题?

问题1:收起的时候内容收起来了,头像没有跟着收起来;

问题2:当展开内容特别多的时候,一收起,不知道当前看到哪个用户了

纠其原因,每一个人头像都是跟着滚动条动的;滚动条每次动的时候都会计算下人头所在模块的高度,头像就可以在这个高度里动,可是收起的时候没有计算模块高度,头像就认为它还在收起前的那个模块里呢,所以移动到下面的头像不会自己动回到自己的模块位置中来...所以,脱离组织了...就出BUG了。
修改方案:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="format-detection" content="telephone=no"/>
<!--<link rel="stylesheet" type="text/css" href="../css/public.css" />-->
<style type="text/css">
* { -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-touch-callout:none;}
body, div, p, ul, textarea, form, input, h1, h2, h3, h4, h5, dl, dt, dd, img, section, article, aside, header, footer, nav, dialog, figure, hgroup { margin: 0; padding: 0; }
html, body { height: 100% }
body { font-family: Helvetica; -webkit-text-size-adjust: none; background: #fafafa; font-size: 14px; color: #555; }
h1, h2, h3, h4, h5 { font-weight: normal; font-size: 14px; }
em { font-style: normal; }
ul, ol, li { list-style: none }
img { border: 0 none }
a { text-decoration: none; color: #555; }
.clearfix { zoom: 1 }
.clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }/*清浮动*/
.fixed{ position:fixed; top:0; left:0; z-index: 10000;}
.mt10 { margin-top: 10px; }
.p10 { padding: 10px }
.p15 { padding: 15px }
.blue { color: #B26602!important; }
.bgcolor { background: #f0f0f0 }
.bb { border-bottom: 1px solid #e5e5e5; }
.mt20 { margin-top: 20px; }
.pB20{padding-bottom:20px;}
.fl{float:left;}
.fr{float:right;}
.bg-dadada{background-color:#dadada;}
.bg-dadada .p10{padding:8px; background-color: #efefef;}
.glance{padding:0 0 8px 100px; position:relative;}
.glance-con{ background-color:#f3f3f3; border:1px solid #d0d0d0; -webkit-border-radius:5px;/*-webkit-border-top-left-radius:0px;*/}
.glance-con-wrap{-webkit-border-radius:5px;-webkit-border-top-left-radius:0px; padding: 20px 5px 5px; min-height: 40px;}
.glance-con-wrap a{display: inline-block; padding: 0 14px; text-decoration: none; background: url(../u/s/i/tnd.gif) no-repeat right -5px; margin-bottom: 15px;}
.glance-con-wrap a.more_books{background: url(../u/s/i/tnd.gif) no-repeat right 7px;}
.glance-tab{position:absolute; left:0; top:0; bottom: 0; background: url(../u/s/i/lv_bg.gif) repeat-y 78px;}
.glance-tab-wrap{padding:8px; padding-right: 50px; font-size:12.6px; background: url(../u/s/i/tab_bg.png) no-repeat 50px 22px; position: relative;}
.glance-tab-wrap img{width: 58px; height: 58px;-webkit-border-radius: 29px;}
.glance-tab-wrap p{margin-top:5px; text-align: center;}
.book-item {height: 165px; overflow: hidden;}
.book-item li{float:left;width:33.33%;margin-bottom:12px}
.book-item li .book-cover{position:relative;width:55px;height:72px;margin:0 auto}
.book-item li .book-cover img{margin:2px;background:url(../u/s/i/ireader.png) no-repeat center center;-webkit-background-size:32px 8px;width:51px;height:68px}
.book-item li .shadow{position:absolute;background:url(../u/s/i/book_cover.png) no-repeat;-webkit-background-size:55px 72px;width:55px;height:72px;display:block;top:0;left:0}
</style>
<title>附近的人都在看什么</title>
<script type="text/javascript">
function showBooks(obj){
    var className = obj.getAttribute("class");
    var boxes = document.getElementsByClassName("glance-con-wrap");
    if(className == undefined || className == ""){
        obj.setAttribute("class","more_books");
        obj.innerHTML = "收起";
        obj.previousSibling.previousSibling.style.height = "auto";
    } else if(className == "more_books") {
        obj.setAttribute("class","");
        obj.innerHTML = "更多显示";
        obj.previousSibling.previousSibling.style.height = 165 + "px";
        ////////////////////////////////////////////////////////这里的修改收起bug的代码
        var parentObj = obj.parentNode.parentNode;
        var glanceBox = document.getElementsByClassName("glance");
        var n = getIndex(parentObj.parentNode, glanceBox);
        var PHeight = 0;
        for(var i = 0; i < n; i++){
            PHeight += glanceBox[i].offsetHeight;
        }
        window.scrollTo(0,PHeight);
        var parentHeight = parentObj.offsetHeight;
        parentObj.previousSibling.previousSibling.childNodes[1].style.top = 0 +"px";
    }
}

function  getIndex(ele, arr){
 //arr这个参数是那一组元素
 ele = ele?ele:document.getElementById(ele);//传进来的参数ele,可以是一个DOM对象,也可以是一个ID名(字符串)
 /*
 if (ele && typeof ele == "string")
  document.getElementById(ele);
 */
 if (ele && arr && arr.length)//三个逻辑与运算,判断:1、ele这个元素要存在。2、arr这一组元素要存在。arr不能是个空数组
 {
  for (var i = 0; i < arr.length; i++)
  {
   if (ele == arr[i])//如果这个原素和数组里的某个原素相等
    return i;//则把索引号返回并且结束
  }
 }
 return -1;//返回-1表示没有匹配的元素
};
/////////////////////////////////////////////////////////////////////修改结束
</script>
</head>
<body class="bg-dadada">
<div class="p10 ">
<div class="glance">
    <div class="glance-tab">
        <div class="glance-tab-wrap">
            <img src="../u/s/i/user-head3.png" width="36" height="36">
            <p>0.6Km</p>
        </div>
    </div>
    <div class="glance-con">
        <div class="glance-con-wrap">
        <ul class="book-item clearfix">
                        <li><div class="book-cover" onClick="get_bookinfo(10023905)"><img width="51" height="68" src="../i/l/jpg/7296/10023905.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10013667)"><img width="51" height="68" src="../i/l/jpg/7296/10013667.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10024749)"><img width="51" height="68" src="../i/l/jpg/7296/10024749.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10030993)"><img width="51" height="68" src="../i/l/jpg/7296/10030993.jpg"><span class="shadow"></span></div></li><li><div class="book-cover" onClick="get_bookinfo(10024749)"><img width="51" height="68" src="../i/l/jpg/7296/10024749.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10030993)"><img width="51" height="68" src="../i/l/jpg/7296/10030993.jpg"><span class="shadow"></span></div></li><li><div class="book-cover" onClick="get_bookinfo(10024749)"><img width="51" height="68" src="../i/l/jpg/7296/10024749.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10030993)"><img width="51" height="68" src="../i/l/jpg/7296/10030993.jpg"><span class="shadow"></span></div></li><li><div class="book-cover" onClick="get_bookinfo(10024749)"><img width="51" height="68" src="../i/l/jpg/7296/10024749.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10030993)"><img width="51" height="68" src="../i/l/jpg/7296/10030993.jpg"><span class="shadow"></span></div></li><li><div class="book-cover" onClick="get_bookinfo(10024749)"><img width="51" height="68" src="../i/l/jpg/7296/10024749.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10030993)"><img width="51" height="68" src="../i/l/jpg/7296/10030993.jpg"><span class="shadow"></span></div></li>
                    </ul>
                    <a onClick="showBooks(this);" href="javascript:void(0)">显示更多</a>
                    
        </div>
    </div>
</div>
<div class="glance">
    <div class="glance-tab">
        <div class="glance-tab-wrap">
            <img src="../u/s/i/user-head2.png" width="36" height="36">
            <p>0.9Km</p>
        </div>
    </div>
    <div class="glance-con">
        <div class="glance-con-wrap">
        <ul class="book-item clearfix">
                        <li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10024749)"><img width="51" height="68" src="../i/l/jpg/7296/10024749.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10018742)"><img width="51" height="68" src="../i/l/jpg/7296/10018742.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(1041307)"><img width="51" height="68" src="../i/l/jpg/7296/1041307.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(1018130)"><img width="51" height="68" src="../i/l/jpg/7296/1018130.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10024749)"><img width="51" height="68" src="../i/l/jpg/7296/10024749.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10018742)"><img width="51" height="68" src="../i/l/jpg/7296/10018742.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(1041307)"><img width="51" height="68" src="../i/l/jpg/7296/1041307.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(1018130)"><img width="51" height="68" src="../i/l/jpg/7296/1018130.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10024749)"><img width="51" height="68" src="../i/l/jpg/7296/10024749.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10018742)"><img width="51" height="68" src="../i/l/jpg/7296/10018742.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(1041307)"><img width="51" height="68" src="../i/l/jpg/7296/1041307.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(1018130)"><img width="51" height="68" src="../i/l/jpg/7296/1018130.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10024749)"><img width="51" height="68" src="../i/l/jpg/7296/10024749.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10018742)"><img width="51" height="68" src="../i/l/jpg/7296/10018742.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(1041307)"><img width="51" height="68" src="../i/l/jpg/7296/1041307.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(1018130)"><img width="51" height="68" src="../i/l/jpg/7296/1018130.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10024749)"><img width="51" height="68" src="../i/l/jpg/7296/10024749.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10018742)"><img width="51" height="68" src="../i/l/jpg/7296/10018742.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(1041307)"><img width="51" height="68" src="../i/l/jpg/7296/1041307.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(1018130)"><img width="51" height="68" src="../i/l/jpg/7296/1018130.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
                    </ul>
                    <a onClick="showBooks(this);" href="javascript:void(0)">更多显示</a>
        </div>
    </div>
</div>
<div class="glance">
    <div class="glance-tab">
        <div class="glance-tab-wrap">
            <img src="../u/s/i/user-head1.png" width="36" height="36">
            <p>0.3Km</p>
        </div>
    </div>
    <div class="glance-con">
        <div class="glance-con-wrap">
        <ul class="book-item clearfix">
                        <li><div class="book-cover" onClick="get_bookinfo(10018742)"><img width="51" height="68" src="../i/l/jpg/7296/10018742.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10036235)"><img width="51" height="68" src="../i/l/jpg/7296/10036235.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10024749)"><img width="51" height="68" src="../i/l/jpg/7296/10024749.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10005575)"><img width="51" height="68" src="../i/l/jpg/7296/10005575.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
                    </ul>
        </div>
    </div>
</div>
<div class="glance">
    <div class="glance-tab">
        <div class="glance-tab-wrap">
            <img src="../u/s/i/user-head1.png" width="36" height="36">
            <p>0.3Km</p>
        </div>
    </div>
    <div class="glance-con">
        <div class="glance-con-wrap">
        <ul class="book-item clearfix">
                        <li><div class="book-cover" onClick="get_bookinfo(1041307)"><img width="51" height="68" src="../i/l/jpg/7296/1041307.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10030993)"><img width="51" height="68" src="../i/l/jpg/7296/10030993.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10018823)"><img width="51" height="68" src="../i/l/jpg/7296/10018823.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10031251)"><img width="51" height="68" src="../i/l/jpg/7296/10031251.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10047862)"><img width="51" height="68" src="../i/l/jpg/7296/10047862.jpg"><span class="shadow"></span></div></li>
                    </ul>
        </div>
    </div>
</div>
<div class="glance">
    <div class="glance-tab">
        <div class="glance-tab-wrap">
            <img src="../u/s/i/user-head3.png" width="36" height="36">
            <p>0.1Km</p>
        </div>
    </div>
    <div class="glance-con">
        <div class="glance-con-wrap">
        <ul class="book-item clearfix">
                        <li><div class="book-cover" onClick="get_bookinfo(1013532)"><img width="51" height="68" src="../i/l/jpg/7296/1013532.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10013667)"><img width="51" height="68" src="../i/l/jpg/7296/10013667.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10018823)"><img width="51" height="68" src="../i/l/jpg/7296/10018823.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10024749)"><img width="51" height="68" src="../i/l/jpg/7296/10024749.jpg"><span class="shadow"></span></div></li>
                        <li><div class="book-cover" onClick="get_bookinfo(10037269)"><img width="51" height="68" src="../i/l/jpg/7296/10037269.jpg"><span class="shadow"></span></div></li>
                    </ul>
        </div>
    </div>
</div>
</div>
<div id="top-box" style="border: 1px solid #333; padding: 10px; background-color: #ccc; position: fixed; top: 0; left: 0;"></div>
<script type="text/javascript">
function get_bookinfo(bid){
    var json = '{"Action":"lbsShowBook", "Url": "../u/p/lbs.php?action=get_bookinfo_json&usr=i13701509&rgt=7&p1=&p2=999941&p3=6000&p4=501603&p5=14&p6=&p7=&p9=0&p15=&p16=&p19=&pk=&bid='+bid+'"}';
    window.ZhangYueJS.do_command(json);
}

window.onscroll = function(event){ //滚动条移动的时候执行以下函数
    var sTop = document.documentElement.scrollTop || document.body.scrollTop;  //滚动条距离页面项端的高度
    var boxes = document.getElementsByClassName("glance"); //获取所有class为“glance-con”的模块
    //document.getElementById("top-box").firstChild;
    var boxLens = boxes.length; //计算模块个数
    var iHeight = 0, n=0; //iHeight存放模块高度和,n用来存放当前屏内第一个模块的序数
    var tabH = 0; //存放头像要移动的高度
    var boxH = new Array(); //这个数组用来存放每个"glance-con"所在模块的高度
    var sumBoxs = new Array(); //用来存放前i个模块的高度和
    for(var i = 0; i < boxLens; i++ ) {
        boxH[i] = boxes[i].offsetHeight; //获取每个模块的高度
        iHeight += boxH[i]; //高度求和
        sumBoxs[i] = iHeight; //i=0时,sumBoxs[0] = boxH[0],i=1时,sumBoxs[0] = boxH[0]+boxH[1]以次类推
        if(i == 0 && sTop < sumBoxs[i]){
            n = i
        } else if(i > 0 && sTop > sumBoxs[i-1] && sTop < sumBoxs[i]){
            n = i;
        }    
    }
    if(n == 0){
        tabH = sTop;
    } else {
        tabH = sTop - sumBoxs[n-1];
    }
    if(tabH >= boxH[n] - 80){
        tabH = boxH[n] - 80;
    }    
    
    
    var boxTab_p = boxes[n].childNodes[1]; 
    
    
    var boxTab = boxTab_p.childNodes[1];
        
    boxTab.style.top = tabH + "px";
        
}
</script>
</body>
</html>

现在是不是比较好些了...

但是我知道我的代码比较初级,欢迎大家批评指导。多多提意见建议哈~

原文地址:https://www.cnblogs.com/koukouyifan/p/3182690.html