纯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 相关文章推荐
JavaScript 继承使用分析
May 12 Javascript
详解JavaScript正则表达式中的global属性的使用
Jun 16 Javascript
javascript设计模式--策略模式之输入验证
Nov 27 Javascript
js表单登陆验证示例
Oct 19 Javascript
js学习笔记之事件处理模型
Oct 31 Javascript
第一次接触神奇的前端框架vue.js
Dec 01 Javascript
ionic实现底部分享功能
May 11 Javascript
js操作二进制数据方法
Mar 03 Javascript
详解webpack自定义loader初探
Aug 29 Javascript
vue中beforeRouteLeave实现页面回退不刷新的示例代码
Nov 01 Javascript
Vue实现鼠标经过文字显示悬浮框效果的示例代码
Oct 14 Javascript
Vue使用CDN引用项目组件,减少项目体积的步骤
Oct 30 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+AJAX实现无刷新注册(带用户名实时检测)
2006/12/02 PHP
如何写php程序?
2006/12/08 PHP
PHP中动态显示签名和ip原理
2007/03/28 PHP
PHP中Socket连接及读写数据超时问题分析
2016/07/19 PHP
PHP二维数组去重算法
2016/12/17 PHP
Yii CFileCache 获取不到值的原因分析
2017/02/08 PHP
基于jQuery实现网页进度显示插件
2015/03/04 Javascript
JavaScript面对国际化编程时的一些建议
2015/06/24 Javascript
js获取所有checkbox的值的简单实例
2016/05/30 Javascript
JS如何判断json是否为空
2016/07/06 Javascript
Bootstrap简单表单显示学习笔记
2016/11/15 Javascript
从零开始学习Node.js系列教程三:图片上传和显示方法示例
2017/04/13 Javascript
解决JS外部文件中文注释出现乱码问题
2017/07/09 Javascript
jsTree事件和交互以及插件plugins详解
2017/08/29 Javascript
JS基于递归实现网页版计算器的方法分析
2017/12/20 Javascript
详解Vue CLI3配置解析之css.extract
2018/09/14 Javascript
vue iview的菜单组件Mune 点击不高亮的解决方案
2019/11/01 Javascript
从零使用TypeScript开发项目打包发布到npm
2020/02/14 Javascript
webpack3.0升级4.0的方法步骤
2020/04/02 Javascript
Vue实现浏览器打印功能的代码
2020/04/17 Javascript
jQuery实现的上拉刷新功能组件示例
2020/05/01 jQuery
React中使用Vditor自定义图片详解
2020/12/25 Javascript
[02:04]完美世界城市挑战赛秋季赛报名开始 谁是solo路人王?
2019/10/10 DOTA
python计算程序开始到程序结束的运行时间和程序运行的CPU时间
2013/11/28 Python
Python构建XML树结构的方法示例
2017/06/30 Python
TF-IDF与余弦相似性的应用(一) 自动提取关键词
2017/12/21 Python
python生成器,可迭代对象,迭代器区别和联系
2018/02/04 Python
python增加矩阵维度的实例讲解
2018/04/04 Python
Python json模块dumps、loads操作示例
2018/09/06 Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
2018/12/28 Python
Python提取视频中图片的示例(按帧、按秒)
2020/10/22 Python
html5简单示例_动力节点Java学院整理
2017/07/07 HTML / CSS
企业文明单位申报材料
2014/05/16 职场文书
毕业生求职信范文
2014/06/29 职场文书
2014党员四风对照检查材料思想汇报
2014/09/17 职场文书
【DOTA2】当街暴打?PSG LGD vs VG - DPC 2022 WINTER TOUR CN
2022/04/02 DOTA