jQuery 10个实例 上
一、tab
tab 标签主要的思想
如果用一组元素控制另一组元素的显示或隐藏,需要用到索引
这里的索引是 index,无缝滚动也要用到这个思想
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>tab</title>
<style>
body,ul,li{padding:0;margin:0;}
li{list-style-type:none;}
.hide{display:none;}
.wrapper{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);}
.tabTitle ul{
overflow: hidden;_height:1px;/*清除浮动,并兼容ie6*/
}
.tabTitle ul li{
float: left;
border: 1px solid #abcdef;
border-bottom: none;
line-height: 30px;
padding: 0 15px;
margin-right: 3px;
cursor:pointer;
}
.current{background:#abcdef;color:#fff;}
.tabConntent div{
padding-top: 15px;
text-align: center;
height:250px;width:300px;border: 1px solid #f60;
}
/* 三个tab标签不同的背景颜色 */
.red{background-color:red;}
.blue{background-color:blue;}
.green{background-color:green;}
</style>
</head>
<body>
<div class="wrapper">
<div class="tabTitle">
<ul>
<li class="current">html</li>
<li>CSS</li>
<li>jQuery</li>
</ul>
</div>
<div class="tabConntent">
<div>html的内容</div>
<div class="hide">css的内容</div>
<div class="hide">jQuery的内容</div>
</div>
</div>
<script src="https://cdn.bootcdn.net/ajax/libs/zepto/1.2.0/zepto.min.js"></script>
<script>
$(function(){
var divs = $(".tabConntent div");
$(".tabTitle li").mouseover(function(){
$(this).addClass('current').siblings().removeClass('current');
var index = $(this).index(); // 索引
divs.eq(index).show().siblings().hide();
});
});
</script>
</body>
</html>mouseover() 事件会遇到一个问题,
如果内容是请求服务器,一直在 tab 上晃鼠标会造成很多请求,需要用定时器做一个延迟
$(function(){
var divs = $(".tabConntent div");
var timer = null; // 定义一个timer
$(".tabTitle li").mouseover(function(){
var _that = $(this); // 定时器里回调函数里的this指向window,在这里保存一下指向当前元素的this// 定时器里回调函数里的this指向window,在这里保存一下指向当前元素的this
var index = _that.index();
// 1.每次鼠标进来开启定时器延迟,延迟三句核心代码
timer = setTimeout(function(){
_that.addClass('current').siblings().removeClass('current');
divs.eq(index).show().siblings().hide();
}, 500);
}).mouseout(function(){
// 2.鼠标移出清除定时器,这样下次鼠标移入后又重新开启新定时器
clearTimeout(timer);
});
});希望三个 tab 标签鼠标移入后有不同颜色,需要三个不同的类样式
$(function(){
var divs = $(".tabConntent div");
var timer = null;
$(".tabTitle li").mouseover(function(){
var _that = $(this);
var index = _that.index();
timer = setTimeout(function(){
_that.addClass(function(i){ // 修改这句代码,传一个回调函数
if(index === 0){
return 'current red'
}else if(index === 1){
return 'current blue'
}else{
return 'current green'
}
return 'current '
}).siblings().removeClass(); // 不写参数会移除掉所有的样式
divs.eq(index).show().siblings().hide();
}, 500);
}).mouseout(function(){
clearTimeout(timer);
});
});二、一组图片的滚动
每张图片宽度 200 像素,四张图片,四个 li 的总宽度是 800 像素
.wrap 容器宽度为 800 像素
因为要用 js 复制一份 li 追加到 ul 里面,所以 ul 元素宽是 1600 像素
使用弹性盒模型的方式,
ul 元素不需要设置宽 1600,且不需要清除浮动
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>multySlider</title>
<link rel="stylesheet" href="//at.alicdn.com/t/c/font_5225247_0cb1uve9rw2i.css" />
<style>
body,ul,li,div{padding:0;margin:0;}
li{list-style-type:none;}
.carousel-container{
position:absolute;left:50%;top:50%;transform:translate(-50%, -50%);
border: 1px solid #eee;
}
.wrap{
position:relative;
height:150px;width:800px;
overflow:hidden;
}
ul{
display:flex; /*使用弹性盒模型*/
position:absolute;top:0;left:0;
}
li{width:200px;}
li img{width:199px;height:150px;object-fit:cover;display: block;}
.iconfont {
width:30px;height:30px;line-height:30px;text-align:center;
position:absolute;top:50%;margin-top:-15px;
z-index:10; /* 确保浮在图片上层 */
background:rgba(0,0,0,0.3);font-size:12px;color:#ccc;
border-radius:50%;cursor:pointer;}
.icon-xiangzuojiantou{left:5px;}
.icon-xiangyoujiantou{right:5px;}
</style>
</head>
<body>
<div class="carousel-container">
<!-- 1.滚动视口(负责裁剪图片) -->
<div class="wrap">
<ul>
<li><img src="https://20180416-1252237835.cos.ap-beijing.myqcloud.com/common/2025/pic/pic001.jpg"></li>
<li><img src="https://20180416-1252237835.cos.ap-beijing.myqcloud.com/common/2025/pic/pic002.jpg"></li>
<li><img src="https://20180416-1252237835.cos.ap-beijing.myqcloud.com/common/2025/pic/pic003.png"></li>
<li><img src="https://20180416-1252237835.cos.ap-beijing.myqcloud.com/common/2025/pic/pic004.jpg"></li>
</ul>
</div>
<!-- 2.左右按钮(与视口平级,绝对定位浮在上面,不受 overflow 影响) -->
<span class="iconfont icon-xiangzuojiantou"></span>
<span class="iconfont icon-xiangyoujiantou"></span>
</div>
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
// 获取ul里面的li,然后复制一份在添加到ul里面
var ulInner = ul.html();
// ul.append(ulInner); 使用append()要经过一个方法在添加进去,而且是jquery的方法,执行效率不如下面的字符串拼接高
ul.html(ulInner + ulInner); // 这种字符串的拼接效率高
</script>
</body>
</html>li 使用浮动布局
ul 要设置宽度,并清除浮动
使用浮动布局,如果增加滚动得图片数量,要重新设置 ul 的宽度,或在 js 代码里要重新设置 ul 的宽度
body,ul,li,div{padding:0;margin:0;}
li{list-style-type:none;}
.carousel-container{
border: 1px solid #eee;
position:absolute;left:50%;top:50%;transform:translate(-50%, -50%);
}
.wrap{
position:relative;
height:150px;width:800px;
overflow:hidden;
}
ul{
overflow:hidden;_height:1px;/*清除浮动并兼容ie6*/
width:1600px; /*设置宽度*/
position:absolute;top:0;left:0;
}
li{width:200px;float:left;} /*浮动*/
li img{width:199px;height:150px;object-fit:cover;}先了解什么是累加?
a+=1 在自身上值上在加 1 达到累加
翻译过来是 a = a+1
如果想要一个元素运动起来,
一般情况下这个元素要具有 position 属性,属性的值可以是 absolute/relative
不一般的情况下用 padding 或 margin 的值,但一般不推荐这种做法
ul 元素如何动起来
先设置 ul 元素 position:absolute
然后用 js 控制 left 值就动起来了,left 的值 +=-2px 累加
当 left 运动到 800 的时候一下子把 left 的值变成 0
向左滚动
$(function(){
var ul = $(".wrap ul");
var ulInner = ul.html();
ul.html(ulInner + ulInner);
var num = 0;
setInterval(function(){
num = Math.abs(parseInt(ul.css('left')));
if(num >= 800){
ul.css('left', 0);
}
ul.css('left', '+=-2px');
},30);
});向右滚动
+=2px 累加变成正数
left 的初始转态是 -800px
判断当 left 的值运动到 0 的时候,瞬间把 left 修改为 -800px
$(function(){
var ul = $(".wrap ul");
var num = 0;
var ulInner = ul.html();
ul.html(ulInner + ulInner);
// ul.css('left', '-800px'); 设置left初始值默认是0,这里不用设置初始值
setInterval(function(){
num = Math.abs(parseInt(ul.css('left')));
if(num === 0){
ul.css('left', '-800px'); // 当left的值等于0到时候,瞬间移动得到-800px
}
ul.css('left', '+=2px');
},30);
});鼠标移到图片上停止滚动,移出后恢复滚动
$(function(){
var ul = $(".wrap ul");
var ulInner = ul.html();
ul.html(ulInner + ulInner);
var num = 0;
var timer = null; // 定义一个定时器变量
timer = setInterval(function(){
num = Math.abs(parseInt(ul.css('left')));
if(num === 0){
ul.css('left', '-800px');
}
ul.css('left', '+=2px');
},30);
// 鼠标移除清除定时器
$('.wrap').mouseover(function(){
clearInterval(timer);
}).mouseout(function(){
// 鼠标移出这里,把上面滚动的代码复制一份
timer = setInterval(function(){
num = Math.abs(parseInt(ul.css('left')));
if(num === 0){
ul.css('left', '-800px');
}
ul.css('left', '+=2px');
},30);
});
});点击按钮向左滚动或向右滚动
1. 把滚动的核心代码放到一个 slider 函数里面
2. 固定运动速率 2,定义为变量 speed
3. 修改混动方向的时候,只修改 speed 正数或负数
$(function(){
var ul = $(".wrap ul");
var leftNum = 0;
var ulInner = ul.html();
ul.html(ulInner + ulInner);
var timer = null;
var speed = -2; // 2.定义运动速率
function slider(){ // 1.运动的核心代码放到函数里
leftNum = Math.abs(parseInt(ul.css('left')));
if(speed < 0){
if(leftNum === 800){
ul.css('left', '0px');
}
}
if(speed > 0){
if(leftNum === 0){
ul.css('left', '-800px');
}
}
ul.css('left', '+='+ speed +'px'); // 3.定义的运动速率替换到这里
}
timer = setInterval(slider,30); // 4.定时器里执行函数
$('.wrap').mouseover(function(){
clearInterval(timer);
}).mouseout(function(){
timer = setInterval(slider,30);
});
// 4.修改方向,只需要改变速率speed正数或负数
$('.icon-xiangzuojiantou').click(function(){
speed = -2;
});
$('.icon-xiangyoujiantou').click(function(){
speed = 2;
});
});增加图片的数量,代码要自动适应
1. 获取 ul 的宽度
2. ul 的宽度除 2,替换到代码中的两个地方
3. 增加图片后 li 多了,重新设置一下 ul 行间宽度
$(function(){
var ul = $(".wrap ul");
var leftNum = 0;
var ulInner = ul.html();
ul.html(ulInner + ulInner);
var timer = null;
var speed = -2;
// 1.获取ul的宽
var lis = $('.wrap ul li'); // 获取所有的li
var liWidth = lis.eq(0).width(); // 获取一个li的宽
var liSize = lis.size(); // 获取li的数量
var ulWidth = liWidth * liSize; // 计算出ul的宽
$('.wrap ul').width(ulWidth); // 3.为了防止ul的宽小于总li的宽,这里按照图片个数重新设置一下ul的宽
function slider(){
leftNum = Math.abs(parseInt(ul.css('left')));
if(speed < 0){
if(leftNum === ulWidth/2){ // 2_a.800替换为ulWidth/2
ul.css('left', '0px');
}
}
if(speed > 0){
if(leftNum === 0){
ul.css('left', -ulWidth/2 +'px'); // 2_b.-800替换为-ulWidth/2
}
}
ul.css('left', '+='+ speed +'px');
}
timer = setInterval(slider,30);
$('.wrap').mouseover(function(){
clearInterval(timer);
}).mouseout(function(){
timer = setInterval(slider,30);
});
$('.icon-xiangzuojiantou').click(function(){
speed = -2;
});
$('.icon-xiangyoujiantou').click(function(){
speed = 2;
});
});自己写的代码
点击按钮改变滚动方向,没有用到修改 speed 的方法,比较繁琐
$(function(){
var ul = $(".wrap ul");
var leftNum = 0;
var ulInner = ul.html();
ul.html(ulInner + ulInner);
var timer = null;
var direction = 0; // 定义滚动方向
function Slider(direction){
console.log(direction)
timer = setInterval(function(){
leftNum = Math.abs(parseInt(ul.css('left')));
if(direction){
if(leftNum === 0){
ul.css('left', '-800px');
}
ul.css('left', '+=2px');
}else{
if(leftNum >= 800){
ul.css('left', '0px');
}
ul.css('left', '+=-2px');
}
},30);
}
Slider(0);
$('.wrap').mouseover(function(){
clearInterval(timer);
}).mouseout(function(){
Slider(direction)
});
$('.icon-xiangzuojiantou').click(function(){
clearInterval(timer);
direction = 0;
Slider(direction);
});
$('.icon-xiangyoujiantou').click(function(){
clearInterval(timer);
direction = 1;
Slider(direction);
});
});三、无限轮播图
轮播图的经典 html 结构
1. 移动 ul 元素要设置 position: absolute
2. ul 相对 .wrapper 定位运动,外面还有的一层 .container 元素
3. js 复制第一张图片放到最后一张的位置,并重新设置 ul 的宽度
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>slider</title>
<link rel="stylesheet" href="//at.alicdn.com/t/c/font_5225247_0cb1uve9rw2i.css" />
<style>
body,ol,ul,li,div,p{padding:0;margin:0;}
li{list-style-type:none;}
.container{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);}
.wrapper{
width:500px;height:350px;
overflow: hidden;
position:relative;}
.wrapper ul{width:2000px;position:absolute;left:0;top:0;}
.wrapper li{
width:500px;
float:left;}
.wrapper img{height:350px;}
/* 滚动时候显示的文字 */
.introduce{
width:500px;
position:absolute;bottom:0;left:1px;
text-indent:16px;
line-height:32px;color:#ddd;font-size:14px;
background-color:rgba(0,0,0,.2);
/*opacity:0.2;filter: alpha(opacity=20);透明度兼容ie6,但文字也透明了*/}
/* 索引 */
ol.indicators{position:absolute;bottom:5px;left:0;
width:100%;text-align:center;}
ol.indicators li{width:100%;
display:inline-block;margin:0 2px;width:10px;height:10px;
background-color:rgba(255, 255, 255, .3);border-radius:50%;cursor:pointer;}
ol.indicators .current{background-color:#fc0;}
/* 按钮 */
.iconfont {
position:absolute;top:50%;margin-top:-15px;
width:30px;height:60px;line-height:60px;text-align:center;
z-index:10; /* 确保浮在图片上层 */
background:rgba(0,0,0,0.5);font-size:12px;color:#fc0;cursor:pointer;}
.icon-xiangzuojiantou{left:1px;}
.icon-xiangyoujiantou{right:1px;}
</style>
</head>
<body>
<div class="container">
<div class="wrapper">
<ul>
<!-- 5张图片 -->
<li class="item"><img alt="第一张金喜善" src="https://20180416-1252237835.cos.ap-beijing.myqcloud.com/common/2025/pic/pic001.jpg"/></li>
<li class="item"><img alt="第二张图片" src="https://20180416-1252237835.cos.ap-beijing.myqcloud.com/common/2025/pic/pic002.jpg"/></li>
<li class="item"><img alt="第三张图片" src="https://20180416-1252237835.cos.ap-beijing.myqcloud.com/common/2025/pic/pic003.png"/></li>
<li class="item"><img alt="第四张图片" src="https://20180416-1252237835.cos.ap-beijing.myqcloud.com/common/2025/pic/pic004.jpg"/></li>
<li class="item"><img alt="jquery分类" src="http://ruyic.com/blog/uploads/image/202602/177088387326178.jpg"/></li>
</ul>
</div>
<p class="introduce">第一张图片</p>
<ol class="indicators">
<!-- li的数量跟图片是同步的 -->
<li class="current"></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ol>
<span class="iconfont icon-xiangzuojiantou"></span>
<span class="iconfont icon-xiangyoujiantou"></span>
</div>
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
var ul = $('.wrapper ul'); // 获取ul元素
var num = $('.wrapper ul li').size(); // 获取图片的数量
var liWidth = $('.wrapper ul li').eq(0).width(); // 获取li的宽度
// 复制第一张图片,然后插入到最后一张的位置上,并重新计算ul的宽度
var list = $('.item img').eq(0).clone(true);
$('<li class="item"></li>').append(list).clone(true).appendTo(ul);
ul.width((num+1)*liWidth);
</script>
</body>
</html>无限滚动核心
1. index 索引非常关键
2. 最后一张向后滚动时,滚动动画完毕后,做两件事
left 瞬间移动到第一张的位置
index 索引设置为 0
3. 第一张向前滚动时,滚动动画开始前,做两件事
left 值设置显示最后一张,也就是复制加到最后的那张
index 设置为最后一张
var ul = $('.wrapper ul');
var num = $('.wrapper ul li').size();
var liWidth = $('.wrapper ul li').eq(0).width();
var index = 0; // 1.定义索引并设置初始值(非常关键)
var timer = null; // 计时器
var lock = true; // 定义锁(默认打开)
var list = $('.item img').eq(0).clone(true);
$('<li class="item"></li>').append(list).clone(true).appendTo(ul);
ul.width((num+1)*liWidth);
// 滚动的核心函数slider
function slider(){
ul.animate({left: -index*liWidth+'px'}, 500, function(){
// 2.图片滚动到最后一张时进入判断(包括复制移动的一张),动画运动完后同时做两件事件
if(index === num){
ul.css({'left': 0});
index = 0;
}
// 根据索引index显示小圆点
$('.indicators li').eq(index).addClass('current').siblings().removeClass();
});
}
// 点击按钮向左滚动 ->>
$('.icon-xiangyoujiantou').click(function(){
index++;
slider();
});
// 点击按钮向右滚动 <<-
$('.icon-xiangzuojiantou').click(function(){
index--;
// 3.图片在第一张,向最后一张滚动时进去判断,动画运动前做两件事
if(index < 0){
ul.css({'left': -num * liWidth+'px'});
index = num-1;
}
slider();
});
// 点击小点切换图片
$('.indicators li').click(function(){
index = $(this).index();
slider()
});加锁功能
1. 锁默认打开
2. 进入运动前,关闭锁
3. 运动结束后,在打开锁
var ul = $('.wrapper ul');
var num = $('.wrapper ul li').size();
var liWidth = $('.wrapper ul li').eq(0).width();
var index = 0;
var timer = null;
var lock = true; // 1.定义锁(默认打开)
var list = $('.item img').eq(0).clone(true);
$('<li class="item"></li>').append(list).clone(true).appendTo(ul);
ul.width((num+1)*liWidth);
function slider(){
ul.animate({left: -index*liWidth+'px'}, 500, function(){
if(index === num){
ul.css({'left': 0});
index = 0;
}
$('.indicators li').eq(index).addClass('current').siblings().removeClass();
// 3.动画运动后打开锁文件
lock = true;
});
}
$('.icon-xiangyoujiantou').click(function(){
if(!lock){
return;
}
lock = false; // 2.动画运动前关闭锁
index++;
slider();
});
$('.icon-xiangzuojiantou').click(function(){
if(!lock){
return;
}
lock = false; // 动画运动前关闭锁
index--;
if(index < 0){
ul.css({'left': -num * liWidth+'px'});
index = num-1;
}
slider();
});
$('.indicators li').click(function(){
index = $(this).index();
slider()
});完成
1. 自动播放
2. 显示对应图片的说明文字,文字来源于图片的 alt 属性
var ul = $('.wrapper ul');
var num = $('.wrapper ul li').size();
var liWidth = $('.wrapper ul li').eq(0).width();
var index = 0;
var timer = null;
var lock = true;
var img = $('.wrapper ul img'); // 获取img元素
var imgAlt = ''; // 定义变量存储alt属性的值
var introduce = $('.introduce'); // 获取p元素
// 复制第一张图片添加到末尾的位置,重新计算并设置ul的宽度
var list = $('.item img').eq(0).clone(true);
$('<li class="item"></li>').append(list).clone(true).appendTo(ul);
ul.width((num+1)*liWidth);
// 运动函数
function slider(){
ul.animate({left: -index*liWidth+'px'}, 500, function(){
if(index === num){
ul.css({'left': 0});
index = 0;
}
$('.indicators li').eq(index).addClass('current').siblings().removeClass();
imgAlt = img.eq(index).attr('alt'); // 获得图片alt属性的值
introduce.text(imgAlt); // 将对应的图片说明文字添加到p元素
lock = true;
});
}
// 向右滚动
$('.icon-xiangyoujiantou').click(function(){
if(!lock){
return;
}
lock = false;
index++;
slider();
});
// 向左滚动
$('.icon-xiangzuojiantou').click(function(){
if(!lock){
return;
}
lock = false;
index--;
if(index < 0){
ul.css({'left': -num * liWidth+'px'});
index = num-1;
}
slider();
});
// 点击小点滚动到对应的图片
$('.indicators li').click(function(){
index = $(this).index();
slider()
});
// 自动切换图片
function autoSlider(){
if(index === num){
ul.css({'left': 0});
index = 0;
}else{
index++;
}
slider()
}
// 自动轮播
timer = setInterval(autoSlider, 1500);
// 鼠标移入停止滚动
$('.container').hover(function(){
clearInterval(timer);
}, function(){
timer = setInterval(autoSlider, 1500);
});四、手风琴菜单
原理与 tab 类似
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>accordionMenu</title>
<style>
body,dl,dt,dd,a{padding:0;margin:0;}
body{font-family: BPreplay, Arial, Helvetica, sans-serif;background:#302b23;}
a{text-decoration:none;color:#0196e3;outline:none;}
.Menu{width:240px;margin:80px auto 0 auto;}
.Menu dl{margin-bottom:10px;}
.Menu dl:first-child{margin-bottom:0px;}
.Menu dl dd{display:none;}
.Menu dl:first-child dt ~ dd{display:block;}
.Menu dl dt{cursor:pointer;line-height:44px;text-indent:16px;color #436800;font-size:21px;margin-bottom:5px;}
.Menu dl dd{background-color:#373128;border:1px solid #40392C;color:#CCCCCC;margin:5px 0;padding:4px 18px;font-size:13px;}
.Menu dl:nth-child(1) dt{background:linear-gradient(to top, #86c90e, #a0dc36);}
.Menu dl:nth-child(2) dt{background:linear-gradient(to top, #f25e14, #f77c2b);}
.Menu dl:nth-child(3) dt{background:linear-gradient(to top, #1f7ce6, #489bee);}
.Menu dl:nth-child(4) dt{background:linear-gradient(to top, #c02101, #f8611f);}
</style>
</head>
<body>
<div class="Menu">
<dl>
<dt>Kiwis</dt>
<dd><a href="javascript:void(0);">Open Grapes Section</a></dd>
<dd><a href="javascript:void(0);">Close This Section</a></dd>
<dd><a href="javascript:void(0);">Read on Wikipedia</a></dd>
<dd><a href="javascript:void(0);">Flickr Stream</a></dd>
</dl>
<dl>
<dt>Oranges</dt>
<dd><a href="javascript:void(0);">Open Grapes Section</a></dd>
<dd><a href="javascript:void(0);">Wikipedia Page</a></dd>
<dd><a href="javascript:void(0);">Flickr Photos</a></dd>
<dd><a href="https://read.qq.com/chapter/1027614365">QQ 阅读</a></dd>
</dl>
<dl>
<dt>Grapes</dt>
<dd><a href="javascript:void(0);">Wiki page</a></dd>
<dd><a href="javascript:void(0);">Text label</a></dd>
<dd><a href="javascript:void(0);">Flickr Stream</a></dd>
<dd><a href="https://www.ruanjianduo.top//">软件仓库</a></dd>
</dl>
<dl>
<dt>Strawberries</dt>
<dd><a href="javascript:void(0);">crop circles</a></dd>
<dd><a href="javascript:void(0);">Iphone wallpaper</a></dd>
<dd><a href="javascript:void(0);">Lanrentuku</a></dd>
<dd><a href="https://www.iplaysoft.com/photoshop-web.html">web Photoshop </a></dd>
</dl>
</div>
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.4.1/jquery.easing.min.js"></script>
<script>
$.easing.def = 'easeOutElastic'; // 定义动画,后面所有的动画都是easeOutElastic效果
$(".Menu dl dt").click(function(){
var dls = $(this).nextAll().slideDown()
.parent().siblings()
.children('dd').slideUp();
});
</script>
</body>
</html>动画算法插件 jquery-easing
除了上面的用法,在 animate 方法里面可以定义其他效果
// .animate(porp, duration, easing, complete)
var m = 'easeOutBounce'; // 定义一个默认效果
ul.animate({'left': liWidth*index}, 1500, m) // 应用到这里,可以动态改变 m 的值