用jQuery实现优酷首页轮播图
▓▓▓▓▓▓ 大致介绍
看到了一个轮播图的思路,就想的自己动手实践一下,总体来说用jQuery实现起来简单多了
如果对代码中使用的方法有疑问,可以参考我的jQuery学习之路(持续更新),里面有讲解;或者你和我一样学习jQuery不久,那你可以看看我的jQuery小案例(持续更新),互相学习!
预览:优酷首页轮播图
▓▓▓▓▓▓ 思路
思路其实非常简单,就是当点击图片下面的圆点或者图片两边的箭头时,让想要看到的图片走到它的位置,然后当前的图片和想要看到的图片按照一个方向运动就可以了
例如:我们点击第五个小圆点,让第五个图片跑到当前图片的后面,然后一起向左运动

当然了,如果你想要看前面的图片,让图片先跑到当前图片的左边,然后和当前图片一起向右运动
▓▓▓▓▓▓ 基本结构与样式
<div class="lunbo">
<div class="picture">
<ul>
<li><img src="img/1.jpg"></li>
<li><img src="img/2.jpg"></li>
<li><img src="img/3.jpg"></li>
<li><img src="img/4.jpg"></li>
<li><img src="img/5.jpg"></li>
</ul>
</div>
<ul class="btn">
<li id="active"><div></div></li>
<li><div></div></li>
<li><div></div></li>
<li><div></div></li>
<li><div></div></li>
</ul>
<div id="left"><img src="img/left.png"></div>
<div id="right"><img src="img/right.png"></div>
</div>
*{
margin:;
padding:;
}
.lunbo{
width: 100%;
height: 410px;
position: relative;
text-align: center;
}
.picture{
width: 1190px;
height: 480px;
position: absolute;
top:;
left: 88px;
overflow: hidden;
}
.picture li{
width: 1190px;
height: 410px;
margin: 0 auto;
list-style-type: none;
margin-top: 70px;
position: absolute;
overflow: hidden;
top: ;
left: ;
}
.picture img{
cursor: pointer;
}
.btn{
display: block;
width: 150px;
height: 30px;
position: absolute;
top: 460px;
left: 130px;
}
.btn li{
display: block;
width: 10px;
height: 10px;
background-color:white;
list-style-type: none;
position: absolute;
top: 0px;
left: 0px;
border-radius: 10px;
cursor: pointer;
}
#active{
background-color: #03A9F4;
}
.btn li:hover{
background-color:#9e9e9e;
}
#left{
position: absolute;
top: 240px;
left: 90px;
cursor: pointer;
}
#right{
position: absolute;
top: 240px;
left: 1220px;
cursor: pointer;
}
然后我们用jQuery来设置初始图片的位置和小圆点的位置
function setCirPos(){
// 设置圆点的位置
$cir.each(function(){
$(this).css({
left:$(this).index()*25 + 500
})
});
// 设置刚开始不显示的图片的位置
$pic.slice(1).each(function(){
$(this).css({
left:$picW
})
})
}
▓▓▓▓▓▓ 自动轮播
先来看看定义的全局变量
var $cir = $('.btn li');
var $pic = $('.picture li');
var $picW = $pic.width();
var $oLeft = $('#left');
var $oRight = $('#right');
// 当前图片
var nowPic = 0;
// 防止用户连续的点击
var canClick = true;
// 定时器
var timer = null;
设置nowPic是为了记录当前显示的图片,因为这个轮播图一共有三种触发图片切换的方法,所以这个变量是三个方法要共享的
设置canClick变量是为了防止用户在图片切换动画效果还未完成的时候在进行点击
// 设置定时器自动切换
timer = setInterval(function(){
auto();
},2000); //自动切换
function auto(){
var index = nowPic + 1;
if(index < 0){
index = 4;
}else if(index > 4){
index = 0;
}
$pic.eq(index).css('left',$picW);
$pic.eq(nowPic).animate({left:-$picW}, 400);
$pic.eq(index).animate({left:0}, 400); nowPic = index;
// 设置当前图片的圆点的样式
$cir.eq(nowPic).attr('id','active').siblings().attr('id','');
}
▓▓▓▓▓▓ 点击小圆点
图片切换的方法都是一样的但是要注意,当点击小圆点时要清楚图片自动切换的定时器,在图片切换完成后,在设置自动切换的定时器
function lunbo(){
$cir.click(function(){
clearInterval(timer);
var index = $(this).index();
if(index > nowPic){
// 点击的值大于当前的值
$pic.eq(index).css('left',$picW);
$pic.eq(nowPic).animate({left:-$picW},400);
}else if(index < nowPic){
// 点击的值小于当前的值
$pic.eq(index).css('left',-$picW);
$pic.eq(nowPic).animate({left:$picW},400);
}
$pic.eq(index).animate({left:0},400,function(){
timer = setInterval(function(){
auto();
},3000);
});
nowPic = index;
// 设置当前图片的圆点的样式
$cir.eq(nowPic).attr('id','active').siblings().attr('id','');
});
}
▓▓▓▓▓▓ 点击箭头
当点击箭头时,我们为了防止用户多次连续的点击,所以设置了canClick这个全局变量,当点击了箭头时,要首先判断是否有为完成的动画即canClick是否为true,如果为true,就将canCilck设置为false,防止再次点击箭头,然后进行图片切换的动画,同样不要忘了清楚定时器,最后当切换图片的动画完成时,animate()方法的回调函数执行,将canClick设置为true
// 点击左箭头
$oLeft.click(function(){ if(canClick){
clearInterval(timer);
canClick = false;
var index = nowPic - 1;
if(index < 0){
index = 4;
}else if(index > 4){
index = 0;
}
$pic.eq(index).css('left',-$picW);
$pic.eq(nowPic).animate({left:$picW}, 400);
$pic.eq(index).animate({left:0}, 400,function(){
canClick = true;
timer = setInterval(function(){
auto();
},3000);
}); nowPic = index;
// 设置当前图片的圆点的样式
$cir.eq(nowPic).attr('id','active').siblings().attr('id','');
}
})
// 点击右箭头
$oRight.click(function(){ if(canClick){
clearInterval(timer);
canClick = false;
var index = nowPic + 1;
if(index < 0){
index = 4;
}else if(index > 4){
index = 0;
}
$pic.eq(index).css('left',$picW);
$pic.eq(nowPic).animate({left:-$picW}, 400);
$pic.eq(index).animate({left:0}, 400,function(){
canClick = true;
timer = setInterval(function(){
auto();
},3000);
}); nowPic = index;
// 设置当前图片的圆点的样式
$cir.eq(nowPic).attr('id','active').siblings().attr('id','');
}
})
▓▓▓▓▓▓ 总结
这个效果实现起来很简单,就是刚开始没有想到实现的思路(笨)。
用jQuery实现优酷首页轮播图的更多相关文章
- 关于用jQuery知识来实现优酷首页轮播图!
▓▓▓▓▓▓ 大致介绍 看到了一个轮播图的思路,就想的自己动手实践一下,总体来说用jQuery实现起来简单多了 如果对代码中使用的方法有疑问,可以参考我的jQuery学习之路(持续更新),里面有讲解: ...
- 【VIP视频网站项目二】搭建爱奇艺优酷腾讯视频官网首页轮播图效果及实现原理分析
这个是实现的效果,基本上轮播效果和主流网站的一致,但是我也在上面优化了一些效果, 可以在线预览效果:https://vip.52tech.tech/ 目前项目代码已经全部开源:项目地址:https:/ ...
- web手工项目02-注册功能输入分析,处理,输出方法-测试用例及缺陷编写-首页轮播图和购物车
web手工项目第二天笔记 昨日回顾 搭建测试环境(WAMP,phpStudy,tpshop项目文件) 熟悉项目(四个步骤,三个来源) 项目测试流程(需求评审,测试计划与方案,测试用例设计与评审,测试执 ...
- 商城05——首页轮播图显示实现&Redis环境搭建&Redis实现缓存
1. 课程计划 1.首页轮播图的展示 2.首页大广告展示流程图 3.Redis的常用命令 4.Redis的服务器搭建 (集群的搭建) 5.向业务逻辑中添加缓存 6.Jedis的使用(redis的客 ...
- celery介绍、架构、快速使用、包结构,celery执行异步、延迟、定时任务,django中使用celery,定时更新首页轮播图效果实现,数据加入redis缓存的坑及解决
今日内容概要 celery介绍,架构 celery 快速使用 celery包结构 celery执行异步任务 celery执行延迟任务 celery执行定时任务 django中使用celery 定时更新 ...
- Android自己定义控件之应用程序首页轮播图
如今基本上大多数的Android应用程序的首页都有轮播图.就是像下图这种(此图为转载的一篇博文中的图.拿来直接用了): 像这种组件我相信大多数的应用程序都会使用到,本文就是自己定义一个这种组件,能够动 ...
- angularjs实现首页轮播图
<!DOCTYPE html> <html ng-app="myApp" lang="en"> <head> <met ...
- 使用JS完成首页轮播图效果
获取document.getElementById("id名称"); 事件onload 定时操作setInterval("changeImg()",3000); ...
- Flask实战第48天:首页轮播图实现
首页的布局如下 因为以后所有的内容都是在main-container里面,所以这里我们修改front_base.html,把{% block body%}{% endblock%}放到里面去 < ...
随机推荐
- IE11的CSS兼容性问题
最近测试给了我一大堆BUG,一瞅发现全是IE11的.吐槽一下这个浏览器真的比较特立独行.很多默认的样式跟别的浏览器不同,而且最明显的一点应该是padding左右内边距往往比别的浏览器大了一倍.但是当需 ...
- 防止apche列出目录以及下载文件
1.修改httpd.conf,将override none改为override all 2.在需要设置权限的目录上传.htaccess文件,.htaccess文件内容如下: <FilesMatc ...
- PHP图片上传程序(完整版)
从PHP100上搜刮来的,功能很强大.几乎考虑到了每个细节,与大家分享!~~~ <meta http-equiv="Content-Type" content="t ...
- WPF中增加Month Calendar月历控件
XAML代码:(这里使用了codeproject.com网站上的一个Dll,你可以在这里下载它:http://www.codeproject.com/cs/miscctrl/MonthCalendar ...
- 2014年度辛星html教程夏季版第三节
接下来我们继续学习HTML中的标签,希望大家能够再接再厉,同时辛星也会支持大家,我们一起努力,一起加油.我们本小节来认识另外几个标签. *************空格和换行************** ...
- bootstrap-datepicker 日期拾取器
最近开发的项目界面用的是bootstrap的框架,发现开源的东西真的很多,慢慢的我会记录到上面来 地址 http://www.bootcss.com/p/bootstrap-datetimepick ...
- 【python之路6】pycharm的使用
1.pycharm简介 PyCharm 是我众多python编辑器中比较好的一个.而且可以跨平台,在macos和windows下面都可以用,这点比较好. PyCharm是一种Python IDE,带有 ...
- 单片微机原理P0:80C51结构原理
本来我真的不想让51的东西出现在我的博客上的,因为51这种东西真的太low了,学了最多就所谓的垃圾科创利用一下,但是想一下这门课我也要考试,还是写一点东西顺便放博客上吧. 这一系列主要参考<单片 ...
- OSI/RM网络7层体系
转自OSI/RM网络7层体系 1 物理层 这是整个OSI参考模型的最低层,它的任务就是提供网络的物理连接.所以,物理层是建立在物理介质上(而不是逻辑上的协议和会话),它提供的是机械和电气接口.主要包括 ...
- 构建简单的 C++ 服务组件,第 1 部分: 服务组件体系结构 C++ API 简介
构建简单的 C++ 服务组件,第 1 部分: 服务组件体系结构 C++ API 简介 熟悉将用于 Apache Tuscany SCA for C++ 的 API.您将通过本文了解该 API 的主要组 ...