纯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和注册表脚本实现右键收藏Web页选中文本
Jan 28 Javascript
javascript 写类方式之三
Jul 05 Javascript
jWiard 基于JQuery的强大的向导控件介绍
Oct 28 Javascript
深入浅出 jQuery中的事件机制
Aug 23 Javascript
bootstrap如何让dropdown menu按钮式下拉框长度一致
Apr 10 Javascript
深入理解React中何时使用箭头函数
Aug 23 Javascript
取消Bootstrap的dropdown-menu点击默认关闭事件方法
Aug 10 Javascript
JavaScript常用事件介绍
Jan 21 Javascript
快速搭建Node.js(Express)用户注册、登录以及授权的方法
May 09 Javascript
解决vue-router 二级导航默认选中某一选项的问题
Nov 01 Javascript
vue使用过滤器格式化日期
Jan 20 Vue.js
AJAX实现指定部分页面刷新效果
Oct 16 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容易忘记的知识点分享
2013/04/30 PHP
thinkphp视图模型查询提示ERR: 1146:Table 'db.pr_order_view' doesn't exist的解决方法
2014/10/30 PHP
PHP使用PDO连接ACCESS数据库
2015/03/05 PHP
PHP模板引擎Smarty中变量的使用方法示例
2016/04/11 PHP
php自定义函数br2nl实现将html中br换行符转换为文本输入中换行符的方法【与函数nl2br功能相反】
2017/02/17 PHP
php写入文件不覆盖的实例讲解
2019/09/17 PHP
javascript编程起步(第六课)
2007/01/10 Javascript
extjs 学习笔记 四 带分页的grid
2009/10/20 Javascript
Jquery练习之表单验证实现代码
2010/12/14 Javascript
JavaScript 更严格的相等 [译]
2012/09/20 Javascript
document.addEventListener使用介绍
2014/03/07 Javascript
JavaScript常用的返回,自动跳转,刷新,关闭语句汇总
2015/01/13 Javascript
深入理解JavaScript系列(38):设计模式之职责链模式详解
2015/03/04 Javascript
jQuery实现自动切换播放的经典滑动门效果
2015/09/12 Javascript
不想让浏览器运行javascript脚本的方法
2015/11/20 Javascript
javascript作用域链(Scope Chain)用法实例解析
2015/11/30 Javascript
详解vue+vueRouter+webpack的简单实例
2017/06/17 Javascript
Vue项目配置跨域访问和代理proxy设置方式
2020/09/08 Javascript
Python加载带有注释的Json文件实例
2018/05/23 Python
python中退出多层循环的方法
2018/11/27 Python
Pytorch 实现权重初始化
2019/12/31 Python
Python GUI编程学习笔记之tkinter控件的介绍及基本使用方法详解
2020/03/30 Python
python入门:argparse浅析 nargs='+'作用
2020/07/12 Python
如何用tempfile库创建python进程中的临时文件
2021/01/28 Python
CSS3制作精致的照片墙特效
2016/06/07 HTML / CSS
美国地毯购买网站:Rugs USA
2019/02/23 全球购物
欧姆龙医疗保健与医疗产品:Omron Healthcare
2020/02/10 全球购物
怎样建立和理解非常复杂的声明?例如定义一个包含N 个指向返回 指向字符的指针的函数的指针的数组?
2013/03/19 面试题
汽车技术服务与营销专业在籍生自荐信
2013/09/28 职场文书
咖啡店的创业计划书,让你hold不住
2014/01/03 职场文书
关于期中考试的反思
2014/02/02 职场文书
各营销点岗位职责范本
2014/03/05 职场文书
教职工代表大会主持词
2014/04/01 职场文书
数据保密承诺书
2014/06/03 职场文书
检察机关个人对照检查材料
2014/09/15 职场文书
DjangoRestFramework 使用 simpleJWT 登陆认证完整记录
2021/06/22 Python