Javascript样例之文档章节滚动全版(DOM)
aaarticlea/png;base64,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" alt="" />
思路:
思路: 1、获取top高度并判断,如果滑动大于的话就让章节浮动 2、获取当前文档章节底部到body顶部的距离{
1.top的高度
2.章节到父级div的高度
3.文档自身的高度
4.相加的和就是文档底部到body的距离
} 3、获取滑动的高度{
如果大于0 并且 小于当前总高度
让当前章节。。。。
否则就移除条件。。
}
4、 判断最后一章
思路
代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
body{
margin: 0;
background-color: #dddddd;
}
.w{
margin: 0 auto;
width: 980px;
}
.pg-header{
background-color: black;
color: white;
height: 48px;
}
.pg-body .menu{
position: absolute;
left: 200px;
width: 180px;
background-color: white;
float: left;
}
.pg-body .menu .active{
background-color: #425a66;
color: white; }
.pg-body .fixed{
position: fixed;
top: 10px;
}
.pg-body .content{
position: absolute;
left: 385px;
right: 200px;
background-color: white;
float: left;
}
.pg-body .content .item{
height: 900px;
}
</style>
</head>
<body onscroll="Hua();">
<div class="pg-header">
<div class="w"> </div>
</div>
<div class="pg-body">
<div id="menu" class="menu">
<ul>
<li>第一章</li>
<li>第二章</li>
<li>第三章</li>
</ul>
</div>
<div id="content" class="content">
<div class="item">床前明月管</div>
<div class="item">疑是地上霜</div>
<div class="item" style="height: 100px;">我是郭德纲</div>
</div>
</div>
<script>
function Hua(){
var a = document.body.offsetHeight;
var b = document.getElementById('content').offsetHeight;
var c = document.documentElement.clientHeight;//当前可视高度 var huaGao = document.body.scrollTop;//当前从body滑动的高度
console.log(a, b, huaGao, c)
var caiDan = document.getElementById('menu');
if(huaGao>48){
caiDan.classList.add('fixed');
}else{
caiDan.classList.remove('fixed');
} var items = document.getElementById('content').children;//获取【子div】
for (var i=0;i<items.length;i++){//一章对应一个div一个内容
var currentItem = items[i];//得到每个div内容
//当前标签距离body的高度
var currentItemBodyTop = currentItem.offsetTop + currentItem.offsetParent.offsetTop;////当前标签距离父级div的高度+父级div距离body的高度
var currentItemWindowTop = currentItemBodyTop - huaGao;//得到剩下的高度
// console.log(currentItemWindowTop);
var currentHeight = currentItem.offsetHeight;//可视范围的自身高度?为什么不是scrollHeight
var bottomHeight = currentItemBodyTop+currentHeight;//获取当前文档底部到body的总高度 if((a+b)==(huaGao+c)){
var mu = document.getElementById('menu').children[0].lastElementChild;
var lis = document.getElementById('menu').getElementsByTagName('li');
for (var m=0;m<lis.length;m++) {
var current_list = lis[m];
if(current_list.getAttribute('class')=='active'){
current_list.classList.remove('active');
break;
}
}
mu.classList.add('active');
return
} if (currentItemWindowTop<0 && huaGao < bottomHeight){
var ziJi = caiDan.getElementsByTagName('li')[i];//得到第一章
console.log(ziJi)//<li class="active">第二章</li>
ziJi.className = 'active';
var lis = caiDan.getElementsByTagName('li');
console.log(lis)//[li.active, li, li]
for(var j=0;j<lis.length;j++){
if(ziJi == lis[j]){ }else{
lis[j].classList.remove('active')
}
}
break;
// caiDan.getElementsBytagName('li')[i].className = 'active';
} }
}
</script>
</body>
</html>
代码
Javascript样例之文档章节滚动全版(DOM)的更多相关文章
- JavaScript 客户端JavaScript之 脚本化文档
客户端JavaScript的存在把静态HTML转变为交互式的Web应用程序,脚本化Web页面的内容正是JavaScript存在的理由. 一个文档对象模型或者说DOM就是一个API,它定义了如何访问 ...
- JavaScript(3)——文档工具
文档工具 LEARN HTML = 教程 HTML REFERENCE = 字典 HTML + CSS + JAVASCRIPT = DYNAMIC HTML 推荐浏览器: Chrome浏览器(有丰 ...
- 资源下载南方cass视频教程,包括文档,数据,很全的
废话就不多说了,开始... 北方cass视频教程,包括文档,数据,很全的 视频下载地址:http://www.400gb.com/file/23459263 GIS网盘进入下载:http://laoh ...
- ShiWangMeSDK Android版接口文档 0.2.0 版
# ShiWangMeSDK Android版接口文档 0.2.0 版 android 总共有 14 个接口,分别涉及到初始化和对界面的一些细节的控制.下面详细介绍接口,如果没有特殊说明,接口都在 S ...
- 最简单的基于FFmpeg的移动端样例:Android 视频解码器-单个库版
===================================================== 最简单的基于FFmpeg的移动端样例系列文章列表: 最简单的基于FFmpeg的移动端样例:A ...
- javascript走马灯的效果(文档标题文字滚动)
做一些网站的时候,文档标题会滚动,这个效果是走马灯的效果. <!DOCTYPE html> <html> <head> <meta charset=" ...
- JavaScript中的window对象的属性和方法;JavaScript中如何选取文档元素
一.window对象的属性和方法 ①setTimeout()方法用来实现一个函数在指定毫秒之后运行,该方法返回一个值,这个值可以传递给clearTimeout()用于取消这个函数的执行. ②setIn ...
- 将JavaScript语句插入HTML文档
(1) 使用 <SCRIPT> 标签将语句嵌入文档 <script type="text/javascript"> function Que() { } & ...
- Web API 接口-JavaScript全部api接口文档
当使用JavaScript编写网页代码时,有很多API可以使用.以下是所有对象.类型等接口的列表,你在开发网页应用程序或站点时使用它们. API文档地址:https://developer.mozil ...
随机推荐
- linux php配置ftp扩展
linux+nginx+php+mysql环境下,在部署的时候没有添加php的ftp扩展. 1.找到安装的PHP源码包解压的文件夹进入到到FTP的扩展目录# /root/php-5.3.6/ext/f ...
- easyui中tree控件添加自定义图标icon
来源于:http://blog.163.com/lintianhuanhai@126/blog/static/165587366201421704420256/ <!DOCTYPE html&g ...
- ajax使用post提交中文
Ajax使用POST提交中文乱码问题 前段时间写JSP,使用AJAX以POST方式提交数据,如果是中文字符提交就会乱码,后来写ASP时用到AJAX以POST方式提交数据,中文一样是乱码.搜索一下相关资 ...
- hdu4287 字典树
#include<stdio.h> #include<string.h> #include<stdlib.h> #define maxn 10 struct tri ...
- mvc:resources
springmvc 配置静态文件 http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mv ...
- 洛谷P2327 [SCOI2005] 扫雷
题目描述 输入输出格式 输入格式: 第一行为N,第二行有N个数,依次为第二列的格子中的数.(1<= N <= 10000) 输出格式: 一个数,即第一列中雷的摆放方案数. 输入输出样例 输 ...
- git分支与版本管理、版本回退、冲突解决记录
一.基础使用 1.初始化本地仓库 git init 2.关联远程仓库 git remote add origin git@github.com:用户名/仓库名.git 3.添加远程仓库文件到本地 gi ...
- std::thread join和detach区别
thread detach, join 线程有两种状态,joinable或者detachable,pthread默认创建的线程是joinable的,也可以指定atrribute创建成一个detacha ...
- Go的50度灰:Golang新开发者要注意的陷阱和常见错误
Go的50度灰:Golang新开发者要注意的陷阱和常见错误 http://colobu.com/2015/09/07/gotchas-and-common-mistakes-in-go-golang/
- Memcached在windows下的安装于使用
原文链接:http://blog.csdn.net/jjmaiz/article/details/7935672 有一点要注意的是,上文作者没有提及: 将php_memcached.dll放在ext文 ...