js仿拉勾网首页穿墙广告效果


Posted in Javascript onMarch 08, 2017

效果图:

js仿拉勾网首页穿墙广告效果

代码如下:

<!doctype html>
<html>
<head>
 <meta charset="UTF-8">
 <title>Title</title>
<style>
*{margin:0; padding:0; list-style:none;}
ul{ overflow:hidden; width:630px; margin:100px auto;}
ul li{ float:left; position:relative; width:200px; height:200px; background:#ccc; margin:5px; overflow:hidden;}
ul li span{ position:absolute; width:100%; height:100%; background:rgba(255,0,0,0.3); left:-200px; top:0;}
</style>
<script>
function getStyle(obj,sName){
 return (obj.currentStyle||getComputedStyle(obj,false))[sName];
}
function move(obj,json,options){
 options = options||{};
 options.duration = options.duration||700;
 options.easing = options.easing||'ease-out';
 var start = {};
 var dis = {};
 for(var name in json){
 start[name] = parseFloat(getStyle(obj,name));
 dis[name] = json[name]-start[name];
 }
 var count = Math.floor(options.duration/30);
 var n = 0;
 clearInterval(obj.timer);
 obj.timer = setInterval(function(){
 n++;
 for(var name in json){
 switch(options.easing){
 case 'linear':
  var cur = start[name]+dis[name]*n/count;
  break;
 case 'ease-in':
  var a = n/count;
  var cur = start[name]+dis[name]*Math.pow(a,3);
  break;
 case 'ease-out':
  var a = 1-n/count;
  var cur = start[name]+dis[name]*(1-Math.pow(a,3));
  break;
 }
 if(name=='opacity'){
 obj.style.opacity = cur;
 obj.style.filter = 'alpha(opacity:'+cur*100+')';
 }else{
 obj.style[name] = cur+'px';
 }
 }
 if(n==count){
 clearInterval(obj.timer);
 options.complete&&options.complete();
 }
 },30);
}
function a2d(n){
 return n*180/Math.PI;
}
function hoverDir(ev,obj){
 var a = ev.clientX-obj.offsetLeft-obj.offsetWidth/2;
 var b = obj.offsetTop+obj.offsetHeight/2-ev.clientY;

 return Math.round((a2d(Math.atan2(b,a))+180)/90)%4;
}
function through(obj){
 var oS = obj.children[0];
 obj.onmouseenter = function(ev){
 var oEvent = ev||event;
 var dir = hoverDir(oEvent,obj);
 switch(dir){
 case 0:
 //左
 oS.style.left = '-200px';
 oS.style.top = 0;
 break;
 case 1:
 //下
 oS.style.left = 0;
 oS.style.top = '200px';
 break;
 case 2:
 //右
 oS.style.left = '200px';
 oS.style.top = 0;
 break;
 case 3:
 //上
 oS.style.left = 0;
 oS.style.top = '-200px';
 break;
 }
 move(oS,{left:0,top:0});
 };
 obj.onmouseleave = function(ev){
 var oEvent = ev||event;
 var dir = hoverDir(oEvent,obj);
 switch(dir){
 case 0:
 move(oS,{left:-200,top:0});
 break;
 case 1:
 move(oS,{left:0,top:200});
 break;
 case 2:
 move(oS,{left:200,top:0});
 break;
 case 3:
 move(oS,{left:0,top:-200});
 break;
 }
 };
}
window.onload = function(){
 var aLi = document.getElementsByTagName('li');
 for(var i=0;i<aLi.length;i++){
 through(aLi[i]);
 }
};
</script>
</head>
<body>
 <ul>
 <li><span></span></li>
 <li><span></span></li>
 <li><span></span></li>
 <li><span></span></li>
 <li><span></span></li>
 <li><span></span></li>
 </ul>
</body>
</html>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
Javascript学习笔记8 用JSON做原型
Jan 11 Javascript
thinkphp 表名 大小写 窍门
Feb 01 Javascript
使用requestAnimationFrame实现js动画性能好
Aug 06 Javascript
关于JavaScript作用域你想知道的一切
Feb 04 Javascript
Bootstrap 组件之按钮(二)
May 11 Javascript
基于jQuery下拉选择框插件支持单选多选功能代码
Jun 07 Javascript
JS去掉字符串前后空格或去掉所有空格的用法
Mar 25 Javascript
vue路由嵌套的SPA实现步骤
Nov 06 Javascript
微信小程序局部刷新触发整页刷新效果的实现代码
Nov 21 Javascript
详解vue-cli3多环境打包配置
Mar 28 Javascript
vue与django集成打包的实现方法
Nov 11 Javascript
ES6函数实现排它两种写法解析
May 13 Javascript
JavaScript中的工厂函数(推荐)
Mar 08 #Javascript
老生常谈js中0到底是 true 还是 false
Mar 08 #Javascript
jQuery插件zTree实现更新根节点中第i个节点名称的方法示例
Mar 08 #Javascript
JS字符串false转boolean的方法(推荐)
Mar 08 #Javascript
原生js实现选项卡功能
Mar 08 #Javascript
js, jQuery实现全选、反选功能
Mar 08 #Javascript
基于JQuery的购物车添加删除以及结算功能示例
Mar 08 #Javascript
You might like
php中smarty变量修饰用法实例分析
2015/06/11 PHP
Thinkphp5行为使用方法汇总
2017/12/21 PHP
javaScript checkbox 全选/反选及批量删除
2010/04/28 Javascript
wap浏览自动跳转到wap页面的js代码
2014/05/17 Javascript
js+canvas绘制五角星的方法
2016/01/28 Javascript
js实现倒计时及时间对象
2016/11/15 Javascript
详解Angular2 关于*ngFor 嵌套循环
2017/05/22 Javascript
JS库particles.js创建超炫背景粒子插件(附源码下载)
2017/09/13 Javascript
jQuery选择器之属性过滤选择器详解
2017/09/28 jQuery
将Sublime Text 3 添加到右键中的简单方法
2017/12/12 Javascript
详解ES6 Symbol 的用途
2018/10/14 Javascript
点击按钮弹出模态框的一系列操作代码实例
2019/03/29 Javascript
vue路由守卫,限制前端页面访问权限的例子
2019/11/11 Javascript
js prototype深入理解及应用实例分析
2019/11/25 Javascript
vue单文件组件无法获取$refs的问题
2020/06/24 Javascript
原生JS实现拖拽功能
2020/12/16 Javascript
原生js中运算符及流程控制示例详解
2021/01/05 Javascript
深入理解Python中的 __new__ 和 __init__及区别介绍
2018/09/17 Python
Python matplotlib学习笔记之坐标轴范围
2019/06/28 Python
python自动结束mysql慢查询会话的实例代码
2019/10/27 Python
python opencv 实现对图像边缘扩充
2020/01/19 Python
Django 实现对已存在的model进行更改
2020/03/28 Python
python绘制分布折线图的示例
2020/09/24 Python
python实现文件分片上传的接口自动化
2020/11/19 Python
关于PySnooper 永远不要使用print进行调试的问题
2021/03/04 Python
德国PC硬件网站:CASEKING
2016/10/20 全球购物
Nordgreen台湾官网:极简北欧设计手表
2019/08/21 全球购物
linux面试相关问题
2012/08/11 面试题
文明村创建实施方案
2014/03/27 职场文书
解除财产保全担保书
2014/05/20 职场文书
四风问题民主生活会对照检查材料思想汇报
2014/09/27 职场文书
学校捐书倡议书
2015/04/27 职场文书
退货证明模板
2015/06/23 职场文书
同乡会致辞
2015/07/30 职场文书
python3实现Dijkstra算法最短路径的实现
2021/05/12 Python
MySQL创建定时任务
2022/01/22 MySQL