Jquery实现图片左右自动滚动示例


Posted in Javascript onSeptember 25, 2013
<!DOCTYPE HTML> 
<html> 
<head> 
<title>基于jQuery的控制左右滚动效果_自动滚动版本</title> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script> 
<style> body{font-size:0.8em;letter-spacing:1px;font-family:"微软雅黑"; line-height:1.8em} 
div,ul,li,ol,img{margin:0;padding:0} 
h1{font-size:1em; font-weight:normal;} 
h1 a{background:#CFF; padding:2px 3px; text-decoration:none;} 
h1 a:hover{background:#eee; text-decoration:underline} 
h2,h3{font-size:1em; font-weight:normal; color:#a40000; margin:1em auto; position:relative} 
h3{color:#888; font-weight:bold} 
ul,li,ol{list-style:none} 
.ibox{width:850px; height:210px; background:#ddd; margin:1em auto; border:1em solid #ddd; position:relative; overflow:hidden} 
.ibox .showbox{position:absolute;left:0;width:2550px; height:170px; background:#fff} 
.ibox .showbox ul li{float:left;margin:7px} 
.ibox .showbox ul li img{width:150px; height:150px; border:3px solid #a40000} 
.ibox span{position:absolute;padding:2px 5px; background:#fff; cursor:pointer;} 
.ibox span.pre{left:10px; bottom:0} 
.ibox span.next{right:10px; bottom:0} 
.ibox span.num{right:45%; bottom:0; background:#ddd;line-height:18px;} 
.ibox span.num li{display:inline;margin:0 5px; padding:1px 5px; line-height:18px} 
.ibox span.num .numcur{background:#a40000; color:#fff} 
</style> 
<script> 
$(function(){ 
//@Mr.Think***变量 
var $cur = 1;//初始化显示的版面 
var $i = 5;//每版显示数 
var $len = $('.showbox>ul>li').length;//计算列表总长度(个数) 
var $pages = Math.ceil($len / $i);//计算展示版面数量 
var $w = $('.ibox').width();//取得展示区外围宽度 
var $showbox = $('.showbox'); 
var $num = $('span.num li') 
var $pre = $('span.pre') 
var $next = $('span.next'); 
var $autoFun; 
//@Mr.Think***调用自动滚动 
autoSlide(); 
//@Mr.Think***向前滚动 
$pre.click(function(){ 
if (!$showbox.is(':animated')) { //判断展示区是否动画 
if ($cur == 1) { //在第一个版面时,再向前滚动到最后一个版面 
$showbox.animate({ 
left: '-=' + $w * ($pages - 1) 
}, 500); //改变left值,切换显示版面,500(ms)为滚动时间,下同 
$cur = $pages; //初始化版面为最后一个版面 
} 
else { 
$showbox.animate({ 
left: '+=' + $w 
}, 500); //改变left值,切换显示版面 
$cur--; //版面累减 
} 
$num.eq($cur - 1).addClass('numcur').siblings().removeClass('numcur'); //为对应的版面数字加上高亮样式,并移除同级元素的高亮样式 
} 
}); 
//@Mr.Think***向后滚动 
$next.click(function(){ 
if (!$showbox.is(':animated')) { //判断展示区是否动画 
if ($cur == $pages) { //在最后一个版面时,再向后滚动到第一个版面 
$showbox.animate({ 
left: 0 
}, 500); //改变left值,切换显示版面,500(ms)为滚动时间,下同 
$cur = 1; //初始化版面为第一个版面 
} 
else { 
$showbox.animate({ 
left: '-=' + $w 
}, 500);//改变left值,切换显示版面 
$cur++; //版面数累加 
} 
$num.eq($cur - 1).addClass('numcur').siblings().removeClass('numcur'); //为对应的版面数字加上高亮样式,并移除同级元素的高亮样式 
} 
}); 
//@Mr.Think***数字点击事件 
$num.click(function(){ 
if (!$showbox.is(':animated')) { //判断展示区是否动画 
var $index = $num.index(this); //索引出当前点击在列表中的位置值 
$showbox.animate({ 
left: '-' + ($w * $index) 
}, 500); //改变left值,切换显示版面,500(ms)为滚动时间 
$cur = $index + 1; //初始化版面值,这一句可避免当滚动到第三版时,点击向后按钮,出面空白版.index()取值是从0开始的,故加1 
$(this).addClass('numcur').siblings().removeClass('numcur'); //为当前点击加上高亮样式,并移除同级元素的高亮样式 
} 
}); 
//@Mr.Think***停止滚动 
clearFun($showbox); 
clearFun($pre); 
clearFun($next); 
clearFun($num); 
//@Mr.Think***事件划入时停止自动滚动 
function clearFun(elem){ 
elem.hover(function(){ 
clearAuto(); 
}, function(){ 
autoSlide(); 
}); 
} 
//@Mr.Think***自动滚动 
function autoSlide(){ 
$next.trigger('click'); 
$autoFun = setTimeout(autoSlide, 4000);//此处不可使用setInterval,setInterval是重复执行传入函数,这会引起第二次划入时停止失效 
} 
//@Mr.Think***清除自动滚动 
function clearAuto(){ 
clearTimeout($autoFun); 
} 
}); 
</script> 
</head> 
<body> 
<div class="ibox"> 
<div class="showbox"> 
<ul> 
<li><img src="//img.jbzj.com/demoimg/201007/f8a9dd53720bf31b5917915e8222c27370a3681c_m.jpg" alt="demo" title="demo" /></li> 
<li><img src="//img.jbzj.com/demoimg/201007/15a1d7982c49b0e638ae3340cf86dc4469f955cc_m.jpg" alt="demo" title="demo" /></li> 
<li><img src="//img.jbzj.com/demoimg/201007/68e9a7a8476e26a1022fa5e39ccdda669a5d4f08_m.jpg" alt="demo" title="demo" /></li> 
<li><img src="//img.jbzj.com/demoimg/201007/56d1b9aaff5b424f1cdb08b80544d5150839b4de_m.jpg" alt="demo" title="demo" /></li> 
<li><img src="//img.jbzj.com/demoimg/201007/56d1b9aaff5b424f1cdb08b80544d5150839b4de_m.jpg" alt="demo" title="demo" /></li> 
<li><img src="//img.jbzj.com/demoimg/201007/20417dfc945bae6c720a660625e9652a154c2c94_m.jpg" alt="demo" title="demo" /></li> 
<li><img src="//img.jbzj.com/demoimg/201007/f4a9f29299f3dba6e7af0ac3c5aff93e01f874d3_m.jpg" alt="demo" title="demo" /></li> 
<li><img src="//img.jbzj.com/demoimg/201007/ca6f0c9ac0c6e3bfce827cd92833e1db620b6377_m.jpg" alt="demo" title="demo" /></li> 
<li><img src="//img.jbzj.com/demoimg/201007/809fcfbb8a1f58d1d47a760fd4283556cce201ef_m.jpg" alt="demo" title="demo" /></li> 
<li><img src="//img.jbzj.com/demoimg/201007/15a1d7982c49b0e638ae3340cf86dc4469f955cc_m.jpg" alt="demo" title="demo" /></li> 
<li><img src="//img.jbzj.com/demoimg/201007/56d1b9aaff5b424f1cdb08b80544d5150839b4de_m.jpg" alt="demo" title="demo" /></li> 
<li><img src="//img.jbzj.com/demoimg/201007/15a1d7982c49b0e638ae3340cf86dc4469f955cc_m.jpg" alt="demo" title="demo" /></li> 
<li><img src="//img.jbzj.com/demoimg/201007/49d6ae8901500f473a2e3e58e5b5ddc0e788bc9d_m.jpg" alt="demo" title="demo" /></li> 
</ul> 
</div> 
<span class="pre">«向左滚动</span> 
<span class="next">向右滚动»</span> 
</div> 
</body> 
</html>
Javascript 相关文章推荐
JavaScript 学习笔记(十三)Dom创建表格
Jan 21 Javascript
CSS和JS标签style属性对照表(方便js开发的朋友)
Nov 11 Javascript
JS判断元素为数字的奇异写法分享
Aug 01 Javascript
Javascript模块化编程(一)AMD规范(规范使用模块)
Jan 17 Javascript
Javascript中使用parseInt函数需要注意的问题
Apr 02 Javascript
使用jQuery实现Web页面换肤功能的要点解析
May 12 Javascript
内容滑动切换效果jquery.hwSlide.js插件封装
Jul 07 Javascript
AngularJS ng-bind-html 指令详解及实例代码
Jul 30 Javascript
vuejs通过filterBy、orderBy实现搜索筛选、降序排序数据
Oct 26 Javascript
如何获取TypeScript的声明文件.d.ts
May 01 Javascript
Vue插槽_特殊特性slot,slot-scope与指令v-slot说明
Sep 04 Javascript
JSONObject与JSONArray使用方法解析
Sep 28 Javascript
jquery实现加载等待效果示例
Sep 25 #Javascript
js的onload事件及初始化按钮事件示例代码
Sep 25 #Javascript
jquery实现table鼠标经过变色代码
Sep 25 #Javascript
js跨浏览器实现将字符串转化为xml对象的方法
Sep 25 #Javascript
仿百度的关键词匹配搜索示例
Sep 25 #Javascript
jquery 页面滚动到指定DIV实现代码
Sep 25 #Javascript
js实现两个值相加alert出来精确到指定位
Sep 25 #Javascript
You might like
《APMServ 5.1.2》使用图解
2006/10/23 PHP
php实现的网络相册图片防盗链完美破解方法
2015/07/01 PHP
深入分析PHP优化及注意事项
2016/07/04 PHP
PHP搭建大文件切割分块上传功能示例
2017/01/04 PHP
PHP封装返回Ajax字符串和JSON数组的方法
2017/02/17 PHP
PHP常见过waf webshell以及最简单的检测方法
2019/05/21 PHP
PHP随机生成中文段落示例【测试网站内容时使用】
2020/04/26 PHP
懒就要懒到底——鼠标自动点击(含时间判断)
2007/02/20 Javascript
javascript 数组学习资料收集
2010/04/11 Javascript
用Javascript实现Sleep暂停功能代码
2010/09/03 Javascript
jquery getScript动态加载JS方法改进详解
2012/11/15 Javascript
创建js对象和js类的方法汇总
2014/12/24 Javascript
javascript操作符&quot;!~&quot;详解
2015/02/10 Javascript
AngularJS向后端ASP.NET API控制器上传文件
2016/02/03 Javascript
requirejs + vue 项目搭建详解
2017/06/16 Javascript
使用JS编写的随机抽取号码的小程序
2017/08/11 Javascript
详解微信小程序scroll-view横向滚动的实践踩坑及隐藏其滚动条的实现
2019/03/14 Javascript
如何通过setTimeout理解JS运行机制详解
2019/03/23 Javascript
p5.js实现故宫橘猫赏秋图动画
2019/10/23 Javascript
vue 实现LED数字时钟效果(开箱即用)
2019/12/08 Javascript
24个ES6方法解决JS实际开发问题(小结)
2020/05/31 Javascript
Python urlopen 使用小示例
2008/09/06 Python
python封装对象实现时间效果
2020/04/23 Python
python 显示数组全部元素的方法
2018/04/19 Python
解决Python3.5+OpenCV3.2读取图像的问题
2018/12/05 Python
python 产生token及token验证的方法
2018/12/26 Python
Python3中exp()函数用法分析
2019/02/19 Python
Waterford加拿大官方网站:世界著名的水晶杯品牌
2016/11/01 全球购物
美国女士泳装店:Swimsuits For All
2017/03/02 全球购物
计算机网络毕业生自荐信
2013/10/01 职场文书
心理学专业毕业生推荐信范文
2013/11/21 职场文书
开办大学饮食联盟创业计划书
2014/01/29 职场文书
党的群众路线教育实践活动组织生活会发言材料
2014/10/17 职场文书
新员工辞职信范文
2015/05/12 职场文书
2015年高三班主任工作总结
2015/05/21 职场文书
深入理解CSS 中 transform matrix矩阵变换问题
2021/08/30 HTML / CSS