【前端】纯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实现楼层跳跃式的页面布局的更多相关文章
- 通过HTML+CSS+JavaScript实现鼠标移动到页面顶部导航栏出现,如果移出导航栏3秒又隐藏起来,而且不受滚动条影响(二)
通过HTML+CSS+JavaScript实现鼠标移动到页面顶部导航栏出现,如果移出导航栏3秒又隐藏起来,而且不受滚动条影响(二) 效果:默认一直隐藏导航栏,当滚动条滚到超过300px按钮出现,点击回 ...
- web@前端--html,css,javascript简介、第一个页面(常用标签简介)
1.什么是标签#1.在HTML中规定标签使用英文的的尖括号即`<`和`>`包起来,如`<html>`.`<head>`.`<body>`都是标签,#2. ...
- 前端三剑客:html,css,JavaScript
一.前端概念 二.html详细介绍 三.css基础 四.css盒模型 五.css高级布局 六.JS基础 七.JS常用类 八.JS基础操作 九.JS高级与事件 十.BOM与DOM 十一.jQuery初识 ...
- 购书网站前端实现(HTML+CSS+JavaScript)
购书+阅读静态网页设计与实现 一.主页设计HTML 1.效果展示及实现 2.完整代码 二.主页样式布局CSS 三.空间功能实现Javascript 主要功能 Javascript完整代码: 总结 购书 ...
- bootstrap+css进行页面布局
效果 用到了bootstrap中的表格css.圆形css.以及上一页下一页css. 布局页面,填充数据,实现js动态效果(比如点击下一页,上一页),逐步完善. 不仅仅要会使用bootstrap中的样式 ...
- Brackets - 强大免费的开源跨平台Web前端开发工具IDE (HTML/CSS/Javascript代码编辑器)
Brackets 是一个免费.开源且跨平台的 HTML/CSS/JavaScript 前端 WEB 集成开发环境 (IDE工具).该项目由 Adobe 创建和维护,根据MIT许可证发布,支持 Wind ...
- 前端开发周报: CSS 布局方式方式与JavaScript数据结构和算法
前端开发周报:CSS 布局方式与JavaScript动画库 1.常见 CSS 布局方式详见: 一些常见的 CSS 布局方式梳理,涉及 Flex 布局.Grid 布局.圣杯布局.双飞翼布局等.http: ...
- [转载]Brackets - 强大免费的开源跨平台Web前端开发工具IDE (HTML/CSS/Javascript代码编辑器)
http://brackets.io/ Brackets 是一个免费.开源且跨平台的 HTML/CSS/JavaScript 前端 WEB 集成开发环境 (IDE工具).该项目由 Adobe 创建和维 ...
- 网站前端性能优化之javascript和css
之前看过Yahoo团队写的一篇关于网站性能优化的文章,文章是2010年左右写的,虽然有点老,但是很多方面还是很有借鉴意义的.关于css的性能优化,他提到了如下几点: CSS性能优化 1.把样式表置于顶 ...
随机推荐
- iOS-多语言版本的开发(一)(转载)
引言 多语言 & 本地化,随你怎么叫,道理差不多:一个App 要想走出国门,只支持一种语言是不能够的,也是不可能的,多元化世界已经融入我们的生活,对于一些应用,开发多语言版本,已经是不可避免 ...
- IIS7启用gzip
压缩什么 服务器基于文件类型选择压缩什么,但这通常受限于对其进行的配置.很多网站就会压缩其HTML文档.压缩脚本和样式表也是非常值得的,压缩的内容包括XML和JSON在内的任何文本响应,但这里只关注脚 ...
- 启动HDFS
$cd /app/hadoop/hadoop-2.2.0/sbin $./start-dfs.sh
- SQL死锁知识及解决办法
[翻译]:SQL死锁-死锁排除 min.jiang 2014-03-18 00:23 阅读:874 评论:1 项目中死锁的解决经历 min.jiang 2014-03-17 01:09 阅读: ...
- PHPExcel使用-使用PHPExcel导出文件-导出MySQL数据
现在数据库里面有一组数据,我们将它按照不同的难度进行分sheet. 首先我们需要写一个mysql的配置文件- db.config.php(utf-8编码) : <?php $dbconfig= ...
- springmvc接收参数
springmvc执行流程 搭建ssm框架:http://www.cnblogs.com/liyafei/p/7955413.html 1:从表单中接收 普通请求参数 结构目录 role.html 1 ...
- latex中文模板
\documentclass[UTF8,a4paper,10pt, twocolumn]{ctexart} \usepackage[left=2.50cm, right=2.50cm, top=2.5 ...
- [py][mx]django添加后台课程机构页数据-图片上传设置
分析下课程页前台部分 机构类别-目前机构库中没有这个字段,需要追加下 所在地区 xadmin可以手动添加 课程机构 涉及到机构封面图, 即图片上传media设置, 也需要在xadmin里手动添加几条 ...
- oracle怎么恢复被覆盖的存储过程
在oracle数据库中,如果覆盖了之前的存储过程,那得赶紧闪回,时长越长闪回的可能性越小. 原理很简单,存储过程的定义就是数据字典,修改数据字典跟修改普通表的数据没有区别,此时会把修改前的内容放到un ...
- C# 定时器 一个简单 并且可以直接运行的Demo
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...