☀【组件 - 工具】Parallax 视差

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<style>
body{overflow:hidden;}
#box1{position:absolute;top:100px;left:670px;width:100px;height:20px;background:red;}
#box2{position:absolute;top:120px;left:670px;width:100px;height:20px;background:blue;}
#box3{position:absolute;top:0;left:50%;width:1px;height:600px;background:red;}
#box4{position:absolute;top:0;left:37.5%;width:1px;height:600px;background:red;}
#tip{position:absolute;background:green;color:white;}
</style>
<div id="box1"></div>
<div id="box2"></div>
<div id="box3"></div>
<div id="box4"></div>
<div id="box5"></div>
<div id="tip"><span id="tip-horz"></span>|<span id="tip-vert"></span></div>
<script>
var throttle = function(fn, delay, immediate, debounce) {
var curr = +new Date(),
last_call = 0,
last_exec = 0,
timer = null,
diff,
context,
args,
exec = function() {
last_exec = curr;
fn.apply(context, args);
};
return function() {
curr = +new Date();
context = this;
args = arguments;
diff = curr - (debounce ? last_call : last_exec) - delay;
clearTimeout(timer); if (debounce) {
if (immediate) {
timer = setTimeout(exec, delay);
} else if (diff >= 0) {
exec();
}
} else {
if (diff >= 0) {
exec();
} else if (immediate) {
timer = setTimeout(exec, -diff);
}
} last_call = curr;
}
}; var debounce = function (fn, delay, immediate) {
return throttle(fn, delay, immediate, true);
}; var viewportW = document.documentElement.clientWidth
var initialized = false var oldx, oldy;
document.onmousemove = throttle(function(e) {
var posx = 0,
posy = 0,
e = e || window.event,
get = function(id) {
return document.getElementById(id);
},
box1 = get('box1'),
box2 = get('box2'),
tip = get('tip'),
tipHorz = get('tip-horz'),
tipVert = get('tip-vert'); if (e.pageX || e.pageY) {
posx = e.pageX;
posy = e.pageY;
} else if (e.clientX || e.clientY) {
posx = e.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
posy = e.clientY + document.documentElement.scrollTop + document.body.scrollTop;
}; tip.style.top = +posy + 15 + 'px';
tip.style.left = +posx + 15 + 'px'; if (oldx == null || oldy == null) {
oldx = posx;
oldy = posy;
return;
} if (posx - oldx == 0) {
tipHorz.innerHTML = '----';
}
if (posx - oldx > 0) {
tipHorz.innerHTML = 'right';
box1.style.left = parseFloat(box1.offsetLeft) + (posx - oldx)/4 + 'px';
box2.style.left = parseFloat(box2.offsetLeft) + (posx - oldx)/4 + 'px';
}
if (posx - oldx < 0) {
tipHorz.innerHTML = 'left';
box1.style.left = parseFloat(box1.offsetLeft) + (posx - oldx)/4 + 'px';
box2.style.left = parseFloat(box2.offsetLeft) + (posx - oldx)/4 + 'px';
}
if (posy - oldy == 0) {
tipVert.innerHTML = '----';
}
if (posy - oldy > 0) {
tipVert.innerHTML = 'bottom';
}
if (posy - oldy < 0) {
tipVert.innerHTML = 'top';
} oldx = posx;
oldy = posy; if (!initialized) {
box1.style.left = viewportW / 2 - 50 - (viewportW / 2 - posx) / 4 + 'px'
initialized = true
}
}, 30, false);
</script>
</body>
</html>
☀【组件 - 工具】Parallax 视差的更多相关文章
- web组件工具之获取表单数据:webUtils
本文需要的架包:commons-beanutils-1.8.3.jar.commons-logging-1.1.3.jar.servlet-api.jar. 本文共分为五部分:1)封装通用工具类:从表 ...
- Visual Studio: 一键卸载所有组件工具,彻底卸载干净。
第一步.手动卸载VS主体 第二步.下载工具并解压 网盘下载地址:https://pan.baidu.com/s/1eSHRYxW 也可以在Github上下载最新版本:https://github.co ...
- 【分享】Vue 资源典藏(UI组件、开发框架、服务端、辅助工具、应用实例、Demo示例)
Vue 资源典藏,包括:UI组件 开发框架 服务端 辅助工具 应用实例 Demo示例 element ★11612 - 饿了么出品的Vue2的web UI工具套件 Vux ★7503 - 基于Vue和 ...
- Vue UI组件 开发框架 服务端 辅助工具 应用实例 Demo示例
Vue UI组件 开发框架 服务端 辅助工具 应用实例 Demo示例 element ★11612 - 饿了么出品的Vue2的web UI工具套件 Vux ★7503 - 基于Vue和WeUI的组件库 ...
- Unity 自动生成组件索引类工具
Unity 自动生成组件索引类工具 需求由来 我们在写UI类时 需要获取预设中的组件 joystick = transform.Find("joystick"); backgrou ...
- Android常用组件
UI相关 图片 Android-Universal-Image-Loader:com.nostra13.universalimageloader:异步加载.缓存.显示图片 ImageLoader:co ...
- Android常用组件【转】
UI相关 图片 Android-Universal-Image-Loader:com.nostra13.universalimageloader:异步加载.缓存.显示图片 ImageLoader:co ...
- Android经常使用开源组件汇总
http://www.cnblogs.com/scige/p/3456790.html UI相关 图片 Android-Universal-Image-Loader:com.nostra13.univ ...
- VUE组件汇总
内容 UI组件 开发框架 实用库 服务端 辅助工具 应用实例 Demo示例 UI组件 element ★13489 - 饿了么出品的Vue2的web UI工具套件 Vux ★8133 - 基于Vue和 ...
随机推荐
- opencv多平台环境搭建及使用
windows平台: 一.安装opencv 下载地址:http://opencv.org/ 依据平台下载相应源码包 安装流程就是一个解压过程.不再赘述. 解压完,效果图: 源码树结构参看http:// ...
- .NET 统一用户管理 -- 单点登录
单点登录 前言 本篇做为.Net 统一用户管理的系列文章的开山之作,主要说一个单点登录是怎么实现的,以及为啥要统一用户管理. 单点登录(Single Sign On),简称为 SSO,是目前比较流行的 ...
- .NET平台下几种SOCKET模型的简要性能供参考
转载自:http://www.cnblogs.com/asilas/archive/2006/01/05/311309.html .NET平台下几种SOCKET模型的简要性能供参考 这个内容在cnbl ...
- 继续(3n+1)猜想
卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数.例如对n=3进行验证的时候, ...
- 使用Newtonsoft.Json序列化和反序列化对象(源码)
Json数据格式,简单而强大. 使用Json,不得不提到Newtonsoft.Json,它帮助我们更方便的使用Json,当然,不使用它也是可以的,还有许多方法将对象序列化成Json字符串,暂且不提. ...
- C#常用的关键字
常用关键字有 this 1)当前类的对象 2)调用自己的构造函数 new base virtual interface abstract override parttial sealed return ...
- 0-C相关01:NSlog函数介绍。
NSlog()函数介绍: 首先:NSlog()函数是cocoa的框架中提供的一个方法: 下图中最上方是它在Xcode中的路径: : 同样都是输出函数.下边我们来看一下,在O-C中NSlog()和在 ...
- 使用sprintf打印float并控制小数位数时引起的问题
最近在做项目中发现一个Bug,直接把进程搞死,查了一下,居然是一个最不起眼的地方导致的,在此记录一下. 先看下面代码 #include <iostream> #include <st ...
- PC110302/UVA10010
下周开始就省选了,ACM的日子在今年内应该就会结束了,大三了,最后一次机会了,小小感伤一下-- 今天广州下大雨,心情怪怪的,感觉码不出质量高的,又很久没做过PC了,就刷刷水题吧. 老实说Program ...
- windows8一直更新不了的问题————解决方案
以下是微软官方工程师的详细解答: 尊敬的佐先生: 您好! 感谢您联系微软技术支持!我是微软技术支持工程师,我姓张.我将协助您解决有关问题.您的问题编号是SRX 1274238225 对于您当前的更新问 ...