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 实现无干扰阴影效果 简单好用(附文件下载)
Dec 27 Javascript
浅析js中取绝对值的2种方法
Jul 09 Javascript
js实现的GridView即表头固定表体有滚动条且可滚动
Feb 19 Javascript
JavaScript中的typeof操作符用法实例
Apr 05 Javascript
jQuery+CSS3文字跑马灯特效的简单实现
Jun 25 Javascript
基本DOM节点操作
Jan 17 Javascript
Vue中使用vux的配置详解
May 05 Javascript
js学习总结_选项卡封装(实例讲解)
Jul 13 Javascript
js排序与重组的实例讲解
Aug 28 Javascript
vue2.0$nextTick监听数据渲染完成之后的回调函数方法
Sep 11 Javascript
js实现打字小游戏
Dec 17 Javascript
JQuery Ajax如何实现注册检测用户名
Sep 25 jQuery
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不用正则采集速度探究总结
2008/03/24 PHP
腾讯QQ php程序员面试题目整理
2010/06/08 PHP
PHP获取数组中重复最多的元素的实现方法
2014/11/11 PHP
PHP根据图片色界在不同位置加水印的方法
2015/07/01 PHP
PHP获取不了React Native Fecth参数的解决办法
2016/08/26 PHP
jquery scrollTop方法根据滚动像素显示隐藏顶部导航条
2013/05/27 Javascript
jQuery之日期选择器的深入解析
2013/06/19 Javascript
prototype与__proto__区别详细介绍
2017/01/09 Javascript
浅谈angularjs依赖服务注入写法的注意点
2017/04/24 Javascript
微信小程序 支付功能实现PHP实例详解
2017/05/12 Javascript
ReactNative之FlatList的具体使用方法
2017/11/29 Javascript
web前端vue之vuex单独一文件使用方式实例详解
2018/01/11 Javascript
详解JS实现系统登录页的登录和验证
2019/04/29 Javascript
解决vue-router 二级导航默认选中某一选项的问题
2019/11/01 Javascript
使用Vue 自定义文件选择器组件的实例代码
2020/03/04 Javascript
Python使用functools实现注解同步方法
2018/02/06 Python
详解python列表生成式和列表生成式器区别
2019/03/27 Python
python占位符输入方式实例
2019/05/27 Python
简单了解django缓存方式及配置
2019/07/19 Python
python隐藏类中属性的3种实现方法
2019/12/19 Python
python pandas.DataFrame.loc函数使用详解
2020/03/26 Python
用python写PDF转换器的实现
2020/10/29 Python
python 实现波浪滤镜特效
2020/12/02 Python
使用Python下载抖音各大V视频的思路详解
2021/02/06 Python
对Pytorch 中的contiguous理解说明
2021/03/03 Python
美国男士内衣品牌:Tommy John
2017/12/22 全球购物
美国婴儿用品及配件购买网站:Munchkin
2019/04/03 全球购物
监理员的岗位职责
2013/11/13 职场文书
肯尼迪就职演说稿
2013/12/31 职场文书
酒店保安领班职务说明书
2014/03/04 职场文书
党校培训自我鉴定范文
2014/04/10 职场文书
产品设计开发计划书
2014/05/07 职场文书
党的群众路线对照检查材料思想汇报
2014/09/25 职场文书
通知怎么写?
2019/04/17 职场文书
利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)
2021/04/13 Javascript
python opencv通过按键采集图片源码
2021/05/20 Python