纯html+css+javascript实现楼层跳跃式的页面布局(实例代码)


Posted in Javascript onOctober 25, 2017

实现效果演示:

纯html+css+javascript实现楼层跳跃式的页面布局(实例代码)

实现代码及注释:

<!DOCTYPE html>
<html>
<head>
 <title>楼层跳跃式的页面布局</title>
 <meta charset="utf-8">
 <style type="text/css">
  *{
   margin: 0;
   padding: 0;
  }
  body, html{
   height: 100%;
  }
  ul{
   list-style: none;
   height: 100%;
  }
  ul li{
   height: 100%;
  }
  ol{
   list-style: none;
   position: fixed;
   top:200px;
   left: 50px;
  }
  ol li{
   width: 50px;
   height: 50px;
   border: 1px solid #000;
   text-align: center;
   line-height: 50px;
   margin-top: -1px;
   cursor: pointer;
  }
 </style>
</head>
<body>
<ul>
 <li>第一区域</li>
 <li>第二区域</li>
 <li>第三区域</li>
 <li>第四区域</li>
</ul>
<ol>
 <li>1</li>
 <li>2</li>
 <li>3</li>
 <li>4</li>
</ol>
<script type="text/javascript" src="myScroll.js"></script>
<script type="text/javascript">
 // 点击ol的li,屏幕滑动到对应的ul的li
 // 利用window.scrollTo();缓动动画实现
 var ul = document.getElementsByTagName("ul")[0];
 var ol = document.getElementsByTagName("ol")[0];
 var ulLiArr = ul.children;
 var olLiArr = ol.children;
 var target = 0;
 var leader = 0;
 var timer = null;
 // 1. 指定ul和ol中li的背景色,对应li的背景色相同
 var arrColor = ["green","orange","yellow","red","gold"];
 // 利用for循环给两个数组中的元素上色
 for(var i=0; i<arrColor.length; i++){
  ulLiArr[i].style.backgroundColor = arrColor[i];
  olLiArr[i].style.backgroundColor = arrColor[i];
  // 属性绑定索引值
  olLiArr[i].index = i;
  // 循环绑定,为每一个li绑定点击事件
  olLiArr[i].onclick =function(){
   // 获取目标位置
   target = ulLiArr[this.index].offsetTop;
   clearInterval(timer);
   // 利用缓动动画原理实现屏幕滑动
   timer = setInterval(function(){
    // (1).获取步长
    var step = (target-leader)/10;
    // (2).二次处理步长
    step = step > 0 ? Math.ceil(step) : Math.floor(step);
    // (3).屏幕滑动
    leader = leader + step;
    window.scrollTo(0, leader);
    // (4).清除定时器
    if(Math.abs(target-leader) <= Math.abs(step)){
     window.scrollTo(0, target);
     clearInterval(timer);
    }
   }, 25);
  }
  // 用scroll事件模拟盒子距离最顶端的距离
  window.onscroll = function(){
   // 每次屏幕滑动,把屏幕卷去的值赋给leader,模拟获取显示区域距离顶部的距离
   leader = scroll().top;
  }
 }
</script>
</body>
</html>

myScroll.js

function scroll() { 
 // 开始封装自己的scrollTop
 if(window.pageYOffset !== undefined) { 
  // ie9+ 高版本浏览器
  // 因为 window.pageYOffset 默认的是0,所以需要判断
  return {
   left: window.pageXOffset,
   top: window.pageYOffset
  }
 }
 else if(document.compatMode === "CSS1Compat") {
  // 标准浏览器,来判断有没有声明DTD
  return {
   left: document.documentElement.scrollLeft,
   top: document.documentElement.scrollTop
  }
 }
 return {
  // 未声明 DTD
  left: document.body.scrollLeft,
  top: document.body.scrollTop
 }
}

总结

以上所述是小编给大家介绍的纯html+css+javascript实现楼层跳跃式的页面布局(实例代码),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
jQuery找出网页上最高元素的方法
Mar 20 Javascript
浅谈javascript语法和定时函数
May 03 Javascript
JS集成fckeditor及判断内容是否为空的方法
May 27 Javascript
如何解决IONIC页面底部被遮住无法向上滚动问题
Sep 06 Javascript
AngularJS API之copy深拷贝详解及实例
Sep 14 Javascript
node-sass安装失败的原因与解决方法
Sep 04 Javascript
详解ES6 Symbol 的用途
Oct 14 Javascript
微信网页登录逻辑与实现方法
Apr 29 Javascript
layui table 多行删除(id获取)的方法
Sep 12 Javascript
微信小程序全选多选效果实现代码解析
Jan 21 Javascript
OpenLayers加载缩放控件使用方法详解
Sep 25 Javascript
详解ES6 中的Object.assign()的用法实例代码
Jan 11 Javascript
浅谈Node.js之异步流控制
Oct 25 #Javascript
AngularJS 实现购物车全选反选功能
Oct 24 #Javascript
React Native时间转换格式工具类分享
Oct 24 #Javascript
vue+vuecli+webpack中使用mockjs模拟后端数据的示例
Oct 24 #Javascript
React Native AsyncStorage本地存储工具类
Oct 24 #Javascript
React Native验证码倒计时工具类分享
Oct 24 #Javascript
详解vue + vuex + directives实现权限按钮的思路
Oct 24 #Javascript
You might like
用php实现批量查询清除一句话后门的代码
2008/01/20 PHP
php 中文和编码判断代码
2010/05/16 PHP
使用PHP求两个文件的相对路径
2013/06/20 PHP
php实现监听事件
2013/11/06 PHP
php解析mht文件转换成html的实例
2017/03/13 PHP
php生成毫秒时间戳的实例讲解
2017/09/22 PHP
javascript实现的DES加密示例
2013/10/30 Javascript
Angularjs基础知识及示例汇总
2015/01/22 Javascript
浅谈jQuery中的事件
2015/03/23 Javascript
JavaScript DOM事件(笔记)
2015/04/08 Javascript
JavaScript学习小结(一)——JavaScript入门基础
2015/09/02 Javascript
Ionic实现仿通讯录点击滑动及$ionicscrolldelegate使用分析
2016/01/18 Javascript
jQuery validate验证插件使用详解
2016/05/11 Javascript
利用jQuery实现打字机字幕效果实例代码
2016/09/02 Javascript
基于jquery实现五星好评
2017/11/18 jQuery
基于 D3.js 绘制动态进度条的实例详解
2018/02/26 Javascript
angularJs复选框checkbox选中进行ng-show显示隐藏的方法
2018/10/08 Javascript
JavaScript惰性求值的一种实现方法示例
2019/01/11 Javascript
vue实现菜单切换功能
2019/05/08 Javascript
使用vue for时为什么要key【推荐】
2019/07/11 Javascript
Layui 带多选框表格监听事件以及按钮自动点击写法实例
2019/09/02 Javascript
微信小程序 获取手机号 JavaScript解密示例代码详解
2020/05/14 Javascript
Vue实现鼠标经过文字显示悬浮框效果的示例代码
2020/10/14 Javascript
深入理解Python中装饰器的用法
2016/06/28 Python
Python爬虫实现HTTP网络请求多种实现方式
2020/06/19 Python
The North Face北面美国官网:美国著名户外品牌
2018/09/15 全球购物
JRE、JDK、JVM之间的关系怎样
2012/05/16 面试题
华为慧通面试题
2012/09/11 面试题
在校生汽车维修实习自我鉴定
2013/09/19 职场文书
销售部主管岗位职责
2013/12/18 职场文书
办公室员工岗位工作职责
2014/03/10 职场文书
医疗纠纷协议书
2014/04/16 职场文书
交心谈心活动总结
2015/05/11 职场文书
百日宴上的祝酒词
2015/08/10 职场文书
如何在Python项目中引入日志
2021/05/31 Python
python+opencv实现视频抽帧示例代码
2021/06/11 Python