纯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获取网页中指定节点的父节点、子节点的方法小结
Apr 24 Javascript
js购物车实现思路及代码(个人感觉不错)
Dec 23 Javascript
node.js不得不说的12点内容
Jul 14 Javascript
JS中实现简单Formatter函数示例代码
Aug 19 Javascript
浅谈JavaScript的事件
Feb 27 Javascript
javascript跨域的方法汇总
Oct 23 Javascript
jQuery Ajax请求后台数据并在前台接收
Dec 10 Javascript
浅谈Webpack自动化构建实践指南
Dec 18 Javascript
vue-router配合ElementUI实现导航的实例
Feb 11 Javascript
Vue项目中使用WebUploader实现文件上传的方法
Jul 21 Javascript
JavaScript相等运算符的九条规则示例详解
Oct 20 Javascript
Vue3 Composition API的使用简介
Mar 29 Vue.js
浅谈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中将汉字转换成拼音的函数代码
2012/09/08 PHP
PHP中strlen()和mb_strlen()的区别浅析
2014/06/19 PHP
php实现简单的语法高亮函数实例分析
2015/04/27 PHP
php微信公众平台开发之微信群发信息
2016/09/13 PHP
js split 的用法和定义 js split分割字符串成数组的实例代码
2012/05/13 Javascript
js判断输入是否为数字的具体实例
2013/08/03 Javascript
不同Jquery版本引发的问题解决
2013/10/14 Javascript
跟我学Nodejs(三)--- Node.js模块
2014/05/25 NodeJs
JavaScript分析、压缩工具JavaScript Analyser
2014/12/31 Javascript
jQuery背景插件backstretch使用指南
2015/04/21 Javascript
jquery插件ajaxupload实现文件上传操作
2015/12/09 Javascript
JavaScript继承学习笔记【新手必看】
2016/05/10 Javascript
如何在AngularJs中调用第三方插件库
2017/05/21 Javascript
vue - vue.config.js中devServer配置方式
2019/10/30 Javascript
openlayers实现地图测距测面
2020/09/25 Javascript
针对Vue路由history模式下Nginx后台配置操作
2020/10/22 Javascript
[41:12]Liquid vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
Python基于正则表达式实现检查文件内容的方法【文件检索】
2017/08/30 Python
python生成tensorflow输入输出的图像格式的方法
2018/02/12 Python
win10环境下配置vscode python开发环境的教程详解
2019/10/16 Python
基于python3的socket聊天编程
2020/02/17 Python
CSS3 实现的加载动画
2020/12/07 HTML / CSS
中国跨境电商:Tomtop
2017/03/16 全球购物
购买中国最好的电子产品:Geekbuying
2018/03/13 全球购物
size?荷兰官方网站:英国高级运动鞋精品店
2020/07/24 全球购物
Smilodox官方运动服装店:从运动服到健身配件
2020/08/27 全球购物
煤矿班组长的职责
2013/12/25 职场文书
年终考核评语
2014/01/19 职场文书
文明家庭先进事迹材料
2014/05/14 职场文书
建筑学专业自荐书
2014/07/09 职场文书
体育专业求职信
2014/07/16 职场文书
专业见习报告范文
2014/11/03 职场文书
学前班学生评语
2014/12/29 职场文书
小学老师对学生的评语
2014/12/29 职场文书
班干部学习委员竞选稿
2015/11/20 职场文书
2016年清明节红领巾广播稿
2015/12/17 职场文书