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 相关文章推荐
分享精心挑选的12款优秀jQuery Ajax分页插件和教程
Aug 09 Javascript
ExtJs默认的字体大小改变的几种方法(自己整理)
Apr 18 Javascript
红米手机抢购的js代码
Mar 10 Javascript
javaScript中with函数用法实例分析
Jun 08 Javascript
理解 JavaScript Scoping &amp; Hoisting(二)
Nov 18 Javascript
JS html时钟制作代码分享
Mar 03 Javascript
JavaScript中document.referrer的用法详解
Jul 04 Javascript
js如何编写简单的ajax方法库
Aug 02 Javascript
利用JS测试目标网站的打开响应速度
Dec 01 Javascript
javascript实现前端成语点击验证优化
Jun 24 Javascript
js实现鼠标滑动到某个div禁止滚动
Sep 17 Javascript
vue-cli —— 如何局部修改Element样式
Oct 22 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 程序员应该使用的10个组件
2009/10/31 PHP
php生出随机字符串
2017/07/06 PHP
JScript的条件编译
2007/05/29 Javascript
YUI 读码日记之 YAHOO.util.Dom - Part.1
2008/03/22 Javascript
学习ExtJS TextField常用方法
2009/10/07 Javascript
关于COOKIE个数与大小的问题
2011/01/17 Javascript
Jquery获取复选框被选中值的简单方法
2013/07/04 Javascript
jquery制作图片时钟特效
2020/03/30 Javascript
基于js实现微信发送好友如何分享到朋友圈、微博
2015/11/30 Javascript
javascript类型系统——日期Date对象全面了解
2016/07/13 Javascript
Javascript DOM事件操作小结(监听鼠标点击、释放,悬停、离开等)
2017/01/20 Javascript
JavaScript中 DOM操作方法小结
2017/04/25 Javascript
js封装成插件的步骤方法
2017/09/11 Javascript
深入理解Node.js中通用基础设计模式
2017/09/19 Javascript
深入理解ES6之数据解构的用法
2018/01/13 Javascript
vue 项目打包通过命令修改 vue-router 模式 修改 API 接口前缀
2018/06/13 Javascript
webpack的CSS加载器的使用
2018/09/11 Javascript
swiper4实现移动端导航切换
2020/10/16 Javascript
使用python解析xml成对应的html示例分享
2014/04/02 Python
Python基于csv模块实现读取与写入csv数据的方法
2018/01/18 Python
Python实现自定义函数的5种常见形式分析
2018/06/16 Python
wxPython的安装与使用教程
2018/08/31 Python
python连接mongodb密码认证实例
2018/10/16 Python
解决Django生产环境无法加载静态文件问题的解决
2019/04/23 Python
Python基础学习之基本数据结构详解【数字、字符串、列表、元组、集合、字典】
2019/06/18 Python
python与pycharm有何区别
2020/07/01 Python
机关门卫的岗位职责
2014/04/29 职场文书
大三学习计划书范文
2014/05/02 职场文书
春季防火方案
2014/05/10 职场文书
企业党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
出生公证书
2015/01/23 职场文书
运动会运动员赞词
2015/07/22 职场文书
2015选调生工作总结
2015/07/24 职场文书
2016大学生毕业实习心得体会
2016/01/23 职场文书
一次Mysql update sql不当引起的生产故障记录
2022/04/01 MySQL
Win11如何设置右键单击显示所有选项?Win11右键单击显示所有选项设置教程
2022/04/08 数码科技