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 全选效果实现代码
Mar 23 Javascript
jQuery.extend 函数详解
Feb 03 Javascript
jquery.ajax的url中传递中文乱码问题的解决方法
Feb 07 Javascript
jquery 操作两个select实现值之间的互相传递
Mar 07 Javascript
选择复选框按钮置灰否则按钮可用
May 22 Javascript
jQuery Ajax Post 回调函数不执行问题的解决方法
Aug 15 Javascript
BootStrap框架个人总结(bootstrap框架、导航条、下拉菜单、轮播广告carousel、栅格系统布局、标签页tabs、模态框、菜单定位)
Dec 01 Javascript
谈谈因Vue.js引发关于getter和setter的思考
Dec 02 Javascript
基于javascript实现数字英文验证码
Jan 25 Javascript
JS实现针对给定时间的倒计时功能示例
Apr 11 Javascript
Angular数据绑定机制原理
Apr 17 Javascript
Vue3 实现双盒子定位Overlay的示例
Dec 22 Vue.js
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 xml文件操作实现代码(二)
2009/03/20 PHP
自动把纯文本转换成Web页面的php代码
2009/08/27 PHP
easyui的tabs update正确用法分享
2014/03/21 PHP
用PHP代码给图片加水印
2015/07/01 PHP
phpinfo() 中 Local Value(局部变量)Master Value(主变量) 的区别
2016/02/03 PHP
php中各种定义变量的方法小结
2017/10/18 PHP
laravel中数据显示方法(默认值和下拉option默认选中)
2019/10/11 PHP
深入理解JavaScript系列(14) 作用域链介绍(Scope Chain)
2012/04/12 Javascript
node.js实现多图片上传实例
2014/06/03 Javascript
JavaScript事件学习小结(三)js事件对象
2016/06/09 Javascript
BootStrap table使用方法分析
2016/11/08 Javascript
JS+CSS3制作炫酷的弹窗效果
2016/11/08 Javascript
JSON字符串和JSON对象相互转化实例详解
2017/01/05 Javascript
100行代码理解和分析vue2.0响应式架构
2017/03/09 Javascript
详解Node项目部署到云服务器上
2017/07/12 Javascript
jquery获取链接地址和跳转详解(推荐)
2017/08/15 jQuery
vue 实现element-ui中的加载中状态
2020/11/11 Javascript
[45:44]完美世界DOTA2联赛PWL S2 FTD vs PXG 第一场 11.27
2020/12/01 DOTA
理解Python中的With语句
2016/03/18 Python
python探索之BaseHTTPServer-实现Web服务器介绍
2017/10/28 Python
Python编程实现粒子群算法(PSO)详解
2017/11/13 Python
使用python爬取B站千万级数据
2018/06/08 Python
对pandas中iloc,loc取数据差别及按条件取值的方法详解
2018/11/06 Python
python中的句柄操作的方法示例
2019/06/20 Python
在Python中预先初始化列表内容和长度的实现
2019/11/28 Python
python中resample函数实现重采样和降采样代码
2020/02/25 Python
python opencv 实现读取、显示、写入图像的方法
2020/06/08 Python
Python-openpyxl表格读取写入的案例详解
2020/11/02 Python
浅析python实现动态规划背包问题
2020/12/31 Python
详解html5 postMessage解决跨域通信的问题
2018/08/17 HTML / CSS
教师考核评语
2014/04/28 职场文书
工程售后服务方案
2014/06/08 职场文书
伊琍体标语
2014/06/25 职场文书
奥巴马当选演讲稿
2014/09/10 职场文书
面试通知单大全
2015/04/20 职场文书
公司财务制度:成本管理控制制度模板
2019/11/19 职场文书