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 相关文章推荐
Jquery 常用方法经典总结
Jan 28 Javascript
JavaScript之HTMLCollection接口代码
Apr 27 Javascript
js获取height和width的方法说明
Jan 06 Javascript
使用js判断控件是否获得焦点
Jan 03 Javascript
JavaScript对IE操作的经典代码(推荐)
Mar 10 Javascript
详解原生JavaScript实现jQuery中AJAX处理的方法
May 10 Javascript
基于JS实现省市联动效果代码分享
Jun 06 Javascript
原生JavaScript实现AJAX、JSONP
Feb 07 Javascript
Node.js安装配置图文教程
May 10 Javascript
详解ES6 Fetch API HTTP请求实用指南
Nov 14 Javascript
js脚本中执行java后台代码方法解析
Oct 11 Javascript
js实现搜索提示框效果
Sep 05 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 动态随机生成验证码类代码
2010/04/09 PHP
MySQL时间字段究竟使用INT还是DateTime的说明
2012/02/27 PHP
PHP计算2点经纬度之间的距离代码
2013/08/12 PHP
PHP中Header使用的HTTP协议及常用方法小结
2014/11/04 PHP
PHP简单实现图片格式转换(jpg转png,gif转png等)
2019/10/30 PHP
javascript:;与javascript:void(0)使用介绍
2013/06/05 Javascript
jquery $.each() 使用小探
2013/08/23 Javascript
Javascript操作URL函数修改版
2013/11/07 Javascript
JavaScript面向对象编程入门教程
2014/04/16 Javascript
将form表单中的元素转换成对象的方法适用表单提交
2014/05/02 Javascript
jquery中each遍历对象和数组示例
2014/08/05 Javascript
js 转json格式的字符串为对象或数组(前后台)的方法
2016/11/02 Javascript
js字符串与Unicode编码互相转换
2017/05/17 Javascript
vue实现百度搜索下拉提示功能实例
2017/06/14 Javascript
JavaScript 程序错误Cannot use 'in' operator to search的解决方法
2017/07/10 Javascript
JavaScript实现移动端页面按手机屏幕分辨率自动缩放的最强代码
2017/08/18 Javascript
javascript基于定时器实现进度条功能实例
2017/10/13 Javascript
深入理解Vue父子组件生命周期执行顺序及钩子函数
2018/08/12 Javascript
javascript实现前端成语点击验证
2020/06/24 Javascript
VueCli生产环境打包部署跨域失败的解决
2020/11/13 Javascript
python局域网ip扫描示例分享
2014/04/03 Python
python多线程共享变量的使用和效率方法
2019/07/16 Python
Python中turtle库的使用实例
2019/09/09 Python
python编写计算器功能
2019/10/25 Python
Python基于requests实现模拟上传文件
2020/04/21 Python
Python基于opencv的简单图像轮廓形状识别(全网最简单最少代码)
2021/01/28 Python
美国羊皮公司:Overland
2018/01/15 全球购物
哄娃神器4moms商店:美国婴童用品品牌
2019/03/07 全球购物
高校学生干部的自我评价分享
2013/11/04 职场文书
教育专业个人求职信
2013/12/02 职场文书
室内设计专业自荐信
2014/05/31 职场文书
三好学生评语大全
2014/12/29 职场文书
证券公司客户经理岗位职责
2015/04/09 职场文书
男方家长婚礼致辞
2015/07/27 职场文书
消防安全主题班会
2015/08/12 职场文书
导游词之上饶龟峰
2019/10/25 职场文书