一个CSS+jQuery实现的放大缩小动画效果


Posted in Javascript onFebruary 19, 2014

今天帮朋友写了一些代码,自己觉得写着写着,好几个版本以后,有点满意,于是就贴出来。

都是定死了的。因为需求就只有4个元素。如果是要用CSS的class来处理,那就需要用到CSS3动画了。

功能 : 在上方的按钮上滑动,可以切换各个page,点击下方的各个page,也可以切换收缩还是展开状态。
一个CSS+jQuery实现的放大缩小动画效果 
初始效果预览

<!DOCTYPE html> 
<html> 
<head> 
<title> CSS+jQuery动画效果 </title> 
<meta name="Generator" content="EditPlus"> 
<meta name="Author" content="铁锚"> 
<style> 
body{ 
z-index: 0; 
width: 100%; 
min-height: 400px; 
} 
.pages{ 
position: absolute; 
} 
.current{ 
position: absolute; 
z-index: 12 !important; 
left: 0px !important; 
} 
.page1{ 
background-color: #a5cfff; 
z-index: 1; 
width: 300px; 
height:280px; 
top: 100px; 
left: 0px; 
} 
.page2{ 
background-color: #b1ca54; 
z-index: 2; 
width: 250px; 
height:270px; 
top: 160px; 
left: 0px; 
} 
.page3{ 
background-color: #c2c6c9; 
z-index: 3; 
width: 200px; 
height:260px; 
top: 220px; 
left: 0px; 
} 
.page4{ 
background-color: #ef9e9c; 
z-index: 4; 
width: 150px; 
height:250px; 
top: 250px; 
left: 0px; 
} 
</style> 
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 
<script> 
$(function(){ 
// 增长 
function increase($div,e){ 
var expstatus = $div.data("expstatus"); 
if(!expstatus){ 
// 没有展开过 
$div.data("expstatus","yes"); 
} 
var style = $div.attr("style"); 
$div.addClass("current").attr("styleold",style); 
// 
$div.stop(); 
$div.animate({ 
opacity:0.9, 
width:"400px", 
height: "400px", 
top: "100px", 
left: "0px" 
},600) 
.animate({ 
opacity:1.0 
},30); e.stopPropagation(); 
return false; 
}; 
// 还原 
function resize(e){ 
// 所有的都移除 
var $page1 = $(".current.page1") ; 
$page1.stop(); 
$page1.animate({ 
opacity:1.0, 
width:"300px", 
height: "280px", 
top: "100px", 
left: "0px" 
},600,null,function(){ 
$page1.removeClass("current").attr("style",""); 
}); 
var $page2 = $(".current.page2") ; 
$page2.stop(); 
$page2.animate({ 
opacity:1.0, 
width:"250px", 
height: "270px", 
top: "160px", 
left: "0px" 
},600,null,function(){ 
$page2.removeClass("current").attr("style",""); 
}); 
var $page3 = $(".current.page3") ; 
$page3.stop(); 
$page3.animate({ 
opacity:1.0, 
width:"200px", 
height: "260px", 
top: "220px", 
left: "0px" 
},600,null,function(){ 
$page3.removeClass("current").attr("style",""); 
}); 
var $page4 = $(".current.page4") ; 
$page4.stop(); 
$page4.animate({ 
opacity:1.0, 
width:"150px", 
height: "250px", 
top: "250px", 
left: "0px" 
},600,null,function(){ 
$page4.removeClass("current").attr("style",""); 
}); 
// 
var expstatus1 = $page1.data("expstatus"); 
if(expstatus1){ 
$page1.data("expstatus",null); 
} 
var expstatus2 = $page2.data("expstatus"); 
if(expstatus2){ 
$page2.data("expstatus",null); 
} 
var expstatus3 = $page3.data("expstatus"); 
if(expstatus3){ 
$page3.data("expstatus",null); 
} 
var expstatus4 = $page4.data("expstatus"); 
if(expstatus4){ 
$page4.data("expstatus",null); 
} 
if(e){ 
e.stopPropagation(); 
return false; 
} else { 
return true; 
} 
}; 
// 
$("#button1").unbind("mouseover").bind("mouseover",function(e){ 
// 
var $page1 = $(".page1"); 
// 添加特定的 
return increase($page1,e); 
}).unbind("mouseout").bind("mouseout",function(e){ 
return resize(e); 
}); 
// 
$("#button2").unbind("mouseover").bind("mouseover",function(e){ 
// 
var $page2 = $(".page2"); 
// 添加特定的 
return increase($page2,e); 
}).unbind("mouseout").bind("mouseout",function(e){ 
return resize(e); 
}); 
// 
$("#button3").unbind("mouseover").bind("mouseover",function(e){ 
// 
var $page3 = $(".page3"); 
// 添加特定的 
return increase($page3,e); 
}).unbind("mouseout").bind("mouseout",function(e){ 
return resize(e); 
}); 
// 
$("#button4").unbind("mouseover").bind("mouseover",function(e){ 
// 
var $page4 = $(".page4"); 
// 添加特定的 
return increase($page4,e); 
}).unbind("mouseout").bind("mouseout",function(e){ 
return resize(e); 
}); 
// 
$(".pages").unbind("mouseover").bind("mouseover",function(e){ 
// 
var $this = $(this); 
// 添加特定的 
//return increase($this,e); 
}).unbind("mouseout").bind("mouseout",function(e){ 
// 所有的都移除 
//return resize(e); 
}); 
// 新的 
$(".pages").unbind("click touchstart").bind("click touchstart",function(e){ 
// 
var $this = $(this); 
var expstatus = $this.data("expstatus"); 
if(!expstatus){ 
// 没有展开过 
// 
return increase($this,e); 
} else { 
return resize(e); 
} 
}); 
// 
$("body").click(function(e){ 
// 所有的都移除 
return resize(null); 
}); 
}); 
</script> 
</head> 
<body> 
<div class="pages page1">page1</div> 
<div class="pages page2">page2</div> 
<div class="pages page3">page3</div> 
<div class="pages page4">page4</div> 
<div style="background-color: #a5cfff;"> 
<button id="button1">第一页</button> 
<button id="button2">第2页</button> 
<button id="button3">第3页</button> 
<button id="button4">第4页</button> 
</div> 
</body> 
</html>
Javascript 相关文章推荐
使用javascipt---实现二分查找法
Apr 10 Javascript
动态加载JS文件的三种方法
Nov 08 Javascript
浅谈jQuery中setInterval()方法
Jul 07 Javascript
jQuery中通过ajax调用webservice传递数组参数的问题实例详解
May 20 Javascript
AngularJs表单校验功能实例代码
Feb 09 Javascript
微信小程序模板之分页滑动栏
Feb 10 Javascript
jQuery实现Select下拉列表进行状态选择功能
Mar 30 jQuery
Zepto实现密码的隐藏/显示
Apr 07 Javascript
Node.js中的http请求客户端示例(request client)
May 04 Javascript
基于Vue实现图片在指定区域内移动的思路详解
Nov 11 Javascript
vue使用localStorage保存登录信息 适用于移动端、PC端
May 27 Javascript
使用node.JS中的url模块解析URL信息
Feb 06 Javascript
使用CSS样式position:fixed水平滚动的方法
Feb 19 #Javascript
jQuery拖拽div实现思路
Feb 19 #Javascript
JQuery异步加载无限下拉框级联功能实现示例
Feb 19 #Javascript
调用DOM对象的focus使文本框获得焦点
Feb 19 #Javascript
让jQuery Mobile不显示讨厌loading界面的方法
Feb 19 #Javascript
javascript动态向网页中添加表格实现代码
Feb 19 #Javascript
javascript实现动态侧边栏代码
Feb 19 #Javascript
You might like
PHP中上传大体积文件时需要的设置
2006/10/09 PHP
ThinkPHP使用smarty模板引擎的方法
2014/07/01 PHP
windows的文件系统机制引发的PHP路径爆破问题分析
2014/07/28 PHP
WordPress 插件——CoolCode使用方法与下载
2007/07/02 Javascript
jquery multiSelect 多选下拉框
2010/07/09 Javascript
Javascript Throttle &amp; Debounce应用介绍
2013/03/19 Javascript
深入理解JQuery keyUp和keyDown的区别
2013/12/12 Javascript
js setTimeout()函数介绍及应用以倒计时为例
2013/12/12 Javascript
javascript在IE下trim函数无法使用的解决方法
2014/09/12 Javascript
微信小程序 详解下拉加载与上拉刷新实现方法
2017/01/13 Javascript
JS实现两周内自动登录功能
2017/03/23 Javascript
ES6新特性七:数组的扩充详解
2017/04/21 Javascript
jquery实现图片放大点击切换
2017/06/06 jQuery
js获取元素的偏移量offset简单方法(必看)
2017/07/05 Javascript
vue同步父子组件和异步父子组件的生命周期顺序问题
2018/10/07 Javascript
解决前后端分离 vue+springboot 跨域 session+cookie失效问题
2019/05/13 Javascript
基于Node.js搭建hexo博客过程详解
2019/06/25 Javascript
JavaScript 实现HTML DOM增删改查操作的常见方法详解
2020/01/04 Javascript
jQuery HTML获取内容和属性操作实例分析
2020/05/20 jQuery
复制粘贴功能的Python程序
2008/04/04 Python
python对离散变量的one-hot编码方法
2018/07/11 Python
Python *args和**kwargs用法实例解析
2020/03/02 Python
基于Python中random.sample()的替代方案
2020/05/23 Python
python 基于卡方值分箱算法的实现示例
2020/07/17 Python
酒店门卫岗位职责
2013/12/29 职场文书
文明餐桌行动实施方案
2014/02/19 职场文书
竞选体育委员演讲稿
2014/04/26 职场文书
基层党组织整改方案
2014/10/25 职场文书
综合办公室主任岗位职责
2015/04/01 职场文书
毕业论文致谢词
2015/05/14 职场文书
2015年领导干部廉洁自律工作总结
2015/05/26 职场文书
2015年度环卫处工作总结
2015/07/24 职场文书
2019大学生社会实践报告汇总
2019/08/16 职场文书
vue实现无缝轮播效果(跑马灯)
2021/05/14 Vue.js
基于Go语言构建RESTful API服务
2021/07/25 Golang
JS数组方法some、every和find的使用详情
2021/10/05 Javascript