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 相关文章推荐
JS面向对象、prototype、call()、apply()
May 14 Javascript
基于JQuery的6个Tab选项卡插件
Sep 03 Javascript
24款非常有用的 jQuery 插件分享
Apr 06 Javascript
真正的JQuery.ajax传递中文参数的解决方法
May 28 Javascript
Jquery $.getJSON 在IE下的缓存问题解决方法
Oct 10 Javascript
jQuery实现textarea自动增长宽高的方法
Dec 18 Javascript
jQuery判断浏览器并动态调整select宽度的方法
Mar 02 Javascript
EasyUI布局 高度自适应
Jun 04 Javascript
用js动态添加html元素,以及属性的简单实例
Jul 19 Javascript
jQuery向webApi提交post json数据
Jan 16 Javascript
原生js实现对Ajax的封装(仿jquery)
Jan 22 Javascript
Vue Cli3 打包配置并自动忽略console.log语句的方法
Apr 23 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 URL地址获取函数代码(端口等) 推荐
2010/05/15 PHP
php使用curl下载指定大小的文件实例代码
2017/09/30 PHP
THINKPHP3.2使用soap连接webservice的解决方法
2017/12/13 PHP
PHP设计模式之状态模式定义与用法详解
2018/04/02 PHP
详解提高使用Java反射的效率方法
2019/04/29 PHP
jquery创建一个ajax关键词数据搜索实现思路
2013/02/26 Javascript
js浏览器本地存储store.js介绍及应用
2014/05/13 Javascript
Jquery api 速查表分享
2015/01/12 Javascript
JavaScript操作select元素和option的实例代码
2016/01/29 Javascript
JavaScript实现的SHA-1加密算法完整实例
2016/02/02 Javascript
使用postMesssage()实现iframe跨域页面间的信息传递
2016/03/29 Javascript
Bootstrap3制作自己的导航栏
2016/05/12 Javascript
在JavaScript中对HTML进行反转义详解
2016/05/18 Javascript
js实现将json数组显示前台table中
2017/01/10 Javascript
浅谈vue的props,data,computed变化对组件更新的影响
2018/01/16 Javascript
在Node.js下运用MQTT协议实现即时通讯及离线推送的方法
2019/01/24 Javascript
JavaScript Array对象使用方法解析
2019/09/24 Javascript
Angular8引入百度Echarts进行图表分析的实现代码
2019/11/27 Javascript
[01:10]DOTA2次级职业联赛 - EP战队宣传片
2014/12/01 DOTA
[30:51]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#1Liquid VS MVP.Phx第一局
2016/03/04 DOTA
[01:55]TI9显影之尘系列 - Evil Geniuses
2019/08/22 DOTA
解决Python 中英文混输格式对齐的问题
2018/07/16 Python
python3实现zabbix告警推送钉钉的示例
2019/02/20 Python
教你如何编写、保存与运行Python程序的方法
2019/07/12 Python
详解Python实现进度条的4种方式
2020/01/15 Python
HTML5之WebGL 3D概述(下)—借助类库开发及框架介绍
2013/01/31 HTML / CSS
HTML5 3D衣服摇摆动画特效
2016/03/17 HTML / CSS
美体小铺美国官网:The Body Shop美国
2017/11/10 全球购物
NIHAOMARKET官方海外旗舰店:意大利你好华人超市
2018/01/27 全球购物
经济系大学生求职信
2013/10/01 职场文书
会计学自我鉴定
2014/02/06 职场文书
人力资源管理系自荐信
2014/05/31 职场文书
大学毕业生推荐信
2014/07/09 职场文书
大一新生军训新闻稿
2015/07/17 职场文书
关于python类SortedList详解
2021/09/04 Python
tomcat正常启动但网页却无法访问的几种解决方法
2022/05/06 Servers