如何实现同一个页面里面两个页面的相互切换(window.onscroll)
来源:互联网 发布:闪电分期go额度淘宝 编辑:程序博客网 时间:2024/04/27 19:26
这里我们通过一个实例来阐述具体的做法,首先我们在一个页面有两个要处理的DIV页面,第一个页面的div中id=”basic”,第二个页面的div中id=”high”。(我们要实现的功能是,点击基础入门,与 高级技能 可以切换对应的页面,基础入门 下滑 就是 高级技能页面,高级技能页面上滑就是 基础入门页面)
HTML
<div class="nav"></div> <div id="basic" class="basicintro"> ..... // 页面一 </div> <div id="high" class="highskill"> .....// 页面二 </div>
接下来我们引入zepto-cmd.js(JQuery.js的精简版) 或者JQuery.js ,上面是Sea.js引入的写法,常规写法
<script type="text/javascript" src="jquery-1.12.2.min.js"></script>
接下来就在页面加载后,或者文档元素加载后执行下面的匿名函数。
JS
var $ =window._$=require("/lib_cmd/zepto-cmd") //页面滚动的时候 $(function(){ /* scrollTo(0,0);*/ window.onscroll=function(){ //页面滚动的时候 var elm1=$("#basic")[0]; var elm2=$("#high")[0]; var scrolltop = Math.ceil(document.documentElement.scrollTop ||document.body.scrollTop); if (scrolltop >= 0 && scrolltop < elm2.offsetTop-$(".nav").height()) { $(".nav ul li a").removeClass("on"); //内部去除锚,和底部CSS样式处理 $(".basic a").addClass("on"); //内部添加锚,和底部CSS样式处理 //location.hash="#basic"; } if (scrolltop >= elm2.offsetTop-$(".nav").height()) { $(".nav ul li a").removeClass("on"); $(".high a").addClass("on"); // location.hash="#high"; } } })
我们通过("#basic")[0] 和(“#high”)[0] 拿到对应的DIV对象,通过
Math.ceil(document.documentElement.scrollTop
拿到滚动条的高度,如果
scrolltop >= 0 && scrolltop < elm2.offsetTop-$(".nav").height(),
也就是说但滚动条的高度大于0,并且其高度小于$(“#high”)[0]的高度减去 页面最上面
<div class="nav"></div>
的高度时,第一个页面添加对应的样式,第二个页面去除对应的样式。同理当,并且其高度大于$(“#high”)[0]的高度减去 页面最上面
<div class="nav"></div>
的高度时,第一个页面去除对应的样式,第二个页面加上对应的样式。
这样看似逻辑正确?其实在手机上回出现一个小问题,就是页面在刷新的时候,页面跳不到对应的位置!因此我们做了这样的操作。
var $ =window._$=require("/lib_cmd/zepto-cmd") //页面滚动的时候 $(function(){ /* scrollTo(0,0);*/ window.onscroll=function(){ //页面滚动的时候 var elm1=$("#basic")[0]; var elm2=$("#high")[0]; var scrolltop = Math.ceil(document.documentElement.scrollTop ||document.body.scrollTop); if (scrolltop >= 0 && scrolltop < elm2.offsetTop-$(".nav").height()) { $(".nav ul li a").removeClass("on"); $(".basic a").addClass("on"); //location.hash="#basic"; } if (scrolltop >= elm2.offsetTop-$(".nav").height()) { $(".nav ul li a").removeClass("on");//内部去除锚,和底部CSS样式处理 $(".high a").addClass("on"); //内部添加锚,和底部CSS样式处理 // location.hash="#high"; } } window.onload=function (){ //页面加载的时候 if (window.location.hash=="#basic") { window.location.hash = ""; window.location.hash="basic" }else if(window.location.hash=="#high"){ window.location.hash = ""; window.location.hash="high" }else{ window.location.hash = ""; window.location.hash="#basic" } } })
我们在页面加载前,对页面当前的锚,做判断,具体做法如上所示。这样就有效的避免页面了在加载,刷新时的问题。
0 0
- 如何实现同一个页面里面两个页面的相互切换(window.onscroll)
- onscroll如何实现层随页面滚动
- jsp里面的页面切换
- 两个div之前切换(tab页面)点击后实现页面的现实和隐藏
- 如何实现同一个页面多个倒计时?
- 如何实现两个页面的跳转
- Android5.0 共享元素 实现不同页面的同一个View的切换效果
- Word中如何在同一个页面下设置两个不同的页码
- 两个页面之间js的相互调用
- 实现两个小图片的相互切换
- 同一个页面中两个框架之间的链接问题
- window里面点击一个button按钮实现页面跳转???
- 两个页面定时相互跳转
- Android 同一个页面中切换布局
- html页面如何实现中英文切换?
- AppInventor专题:如何实现两个页面之间的跳转
- (js)用window.onload实现刷新页面的导航栏状态的切换
- Android activity相互跳转后台出现两个页面的坑
- iOS 工程 兼容64位 容易遇到的问题
- 百度推送的一些小问题
- ubuntu 16.04 cuda7.5 nsight + pydev
- HTML5 WebSocket实例(一)
- android中判断服务是否在后台运行的工具类
- 如何实现同一个页面里面两个页面的相互切换(window.onscroll)
- bzoj 2693 jzptab(线性筛预处理+反演)
- csharp: MySQL Stored Procedure using DAL
- KMP算法的前缀next数组最通俗的解释
- 深入理解JVM--JVM垃圾回收机制
- maven spring 软件包org.junit不存在
- 生活在别处
- display:inline-block的icon不垂直居中问题
- gitignore文件不起作用的处理