纯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 相关文章推荐
鼠标事件延时切换插件
Mar 12 Javascript
JQuery对class属性的操作实现按钮开关效果
Oct 11 Javascript
深入理解JavaScript系列(35):设计模式之迭代器模式详解
Mar 03 Javascript
小巧强大的jquery layer弹窗弹层插件
Dec 06 Javascript
用NODE.JS中的流编写工具是要注意的事项
Mar 01 Javascript
极力推荐一款小巧玲珑的可视化编辑器bootstrap-wysiwyg
May 27 Javascript
checkbox批量选中,获取选中项的值的简单实例
Jun 28 Javascript
JS实现列表的响应式排版(推荐)
Sep 01 Javascript
js实现文字超出部分用省略号代替实例代码
Sep 01 Javascript
JS 实现banner图片轮播效果(鼠标事件)
Aug 04 Javascript
Vue监听滚动实现锚点定位(双向)示例
Nov 13 Javascript
JavaScript实现九宫格拖拽效果
Jun 28 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的异常处理类Exception的使用及说明
2012/06/13 PHP
百万级别知乎用户数据抓取与分析之PHP开发
2015/09/28 PHP
Laravel Eloquent ORM 多条件查询的例子
2019/10/10 PHP
laravel 操作数据库常用函数的返回值方法
2019/10/11 PHP
javascript 面向对象编程 function也是类
2009/09/17 Javascript
javaScript 简单验证代码(用户名,密码,邮箱)
2009/09/28 Javascript
完美兼容各大浏览器的jQuery插件实现图片切换特效
2014/12/12 Javascript
JS组件系列之Bootstrap Icon图标选择组件
2016/01/28 Javascript
12个非常实用的JavaScript小技巧【推荐】
2016/05/18 Javascript
jQuery滚动新闻实现代码
2016/06/26 Javascript
javascript回到顶部特效
2016/07/30 Javascript
js通过classname来获取元素的方法
2016/11/24 Javascript
jquery平滑滚动到顶部插件使用详解
2017/05/08 jQuery
详谈js原型继承的一些问题
2017/09/06 Javascript
node中使用log4js4.x版本记录日志的方法
2019/08/20 Javascript
layui导出所有数据的例子
2019/09/10 Javascript
node.js文件操作系统实例详解
2019/11/05 Javascript
[00:43]魔廷新尊——痛苦女王至宝捆绑包
2020/06/12 DOTA
python实现TF-IDF算法解析
2018/01/02 Python
pygame游戏之旅 添加游戏界面按键图形
2018/11/20 Python
Python连接SQLite数据库并进行增册改查操作方法详解
2020/02/18 Python
Python 炫技操作之合并字典的七种方法
2020/04/10 Python
Python小白不正确的使用类变量实例
2020/05/29 Python
深入浅析python 中的self和cls的区别
2020/06/20 Python
浅析Python中字符串的intern机制
2020/10/03 Python
使用HTML5 Canvas API绘制弧线的教程
2016/03/22 HTML / CSS
美国时尚女装在线:Missguided
2016/12/03 全球购物
澳洲女装时尚在线:Blue Bungalow
2018/05/05 全球购物
商场拾金不昧表扬信
2014/01/13 职场文书
酒店大堂副理的职责范文
2014/02/13 职场文书
入党思想汇报怎么写
2014/04/03 职场文书
个人委托书怎么写
2014/04/04 职场文书
现役军人家属慰问信
2015/03/24 职场文书
漫画「请问您今天要来点兔子吗?」最新杂志彩页公开
2022/03/24 日漫
Java界面编程实现界面跳转
2022/06/16 Java/Android
Python使用plt.boxplot()函数绘制箱图、常用方法以及含义详解
2022/08/14 Python