在上一篇博文中,我们完成了一个简单的轮播切换。它的功能比较简单,仅仅能定时切换图片。

但是有没有这样一种情况。当我们特意的想看某一个轮播显示项时不希望等轮播一圈才能等到,希望通过图上的一些元素,触发某些事件,而快速轮播到目标项。

在很多网站中,都有这样的效果。基本上,是通过轮播图上的小圆点来实现的。那么我们就在上一个轮播切换的基础上进行完善。

我们将他做成鼠标悬停在小圆点上时就显示对应的目标项。

等一下,这不就是tab选项卡的升级版吗?没错。

首先,我们将这个小圆点起名为‘轮播按钮’(方便文章描述,即用‘轮播按钮’控制‘轮播图’)。

 <div class="gr_UI_sliderBox">
<ul class="img_ul">
<li class="slider_Item_1"></li><li class="slider_Item_2"></li><li class="slider_Item_3"></li>
</ul>
<ul class="btn_ul">
<li></li><li></li><li></li>
</ul>
</div>

即上面的class=“btn_ul”

接下来我们在css中为其添加式样(平时的式样,和悬停的式样)。

 .gr_UI_sliderBox ul.btn_ul {
position: absolute;
width: 100px;
height: 20px;
top: 300px;
left: 350px;
list-style: none;
} .gr_UI_sliderBox ul.btn_ul li {
display: inline-block;
width: 13px;
height: 13px;
margin-right: 5px;
background:url("images/point.png") no-repeat 0 0;
} .gr_UI_sliderBox ul.btn_ul li.current_btn {
background:url("images/point.png") no-repeat 0 -14px;
}

通过以上的代码,我们通过绝对布局的方式,将轮播按钮定位到轮播图的中下方。

这里要注意的是,我没有为轮播按钮定义CSS的伪类。没有定义:hover式样。是因为,我准备在脚本之中完成这一效果,因为我轮播图在轮播时当然要让轮播按钮也跟着对应的变更式样。我不想写两套式样,所以我在css文件中只定义了,“当前”和“普通”两个式样,再用js控制。

现在,我们更新一下js文件:

 function moveToCurrentByIndex(index){

     $(".gr_UI_sliderBox ul.img_ul li.slider_current").removeClass("slider_current");
$(".gr_UI_sliderBox ul.img_ul li:eq(" + index + ")").addClass("slider_current");
var move_x = -index * 800;
var str_m_x = move_x + "px";
var $sliderUl = $(".gr_UI_sliderBox ul.img_ul");
$sliderUl.animate({left: str_m_x}, "slow");
//按钮变化
$(".gr_UI_sliderBox ul.btn_ul li:eq(" + index + ")").addClass("current_btn").siblings().removeClass("current_btn");
} function sliderRun(){
var newCurrentIndex = $(".gr_UI_sliderBox ul.img_ul li.slider_current").index() + 1;
var liCount = $(".gr_UI_sliderBox ul.img_ul li").length;
if(newCurrentIndex >= liCount){
newCurrentIndex = 0;
}
console.log("new index : " + newCurrentIndex + " length : " + liCount);
moveToCurrentByIndex(newCurrentIndex);
} /*
在上面这两个函数中我们分别实现两个功能:(1)function moveToCurrentByIndex(index)通过参数(下标值)切换轮播图,同时切换轮播按钮的式样;(2)function sliderRun()获取下一个状态的下标值,并调用第一个函数;*/

以上是定时轮播的代码,接下来,我们一起完成轮播按钮的悬停事件:

这需要在ready()中完成:

 $(document).ready(function(){
var tCtr;
$(".gr_UI_sliderBox ul.img_ul li:eq(0)").addClass("slider_current");
$(".gr_UI_sliderBox ul.btn_ul li:eq(0)").addClass("current_btn");
$(".gr_UI_sliderBox ul.btn_ul li").mouseenter(function(){
clearTimeout(tCtr);
moveToCurrentByIndex($(this).index());
}).mouseleave(function(){
tCtr = setInterval("sliderRun()", 2000);
}); tCtr = setInterval("sliderRun()", 2000);
});

因为我们是通过‘当前类’的方式来获取目标Dom的,所以我们要在初始化的时候为‘当前类’指定一个元素。

然后我们需要为轮播按钮绑定悬停事件。值得注意的是,当我们将鼠标悬停在某一个轮播按钮上时,我们的轮播图对应的切换后,我们要停掉定时器,当鼠标离开轮播按钮时在启动定时器。

这需要保留定时器API返回的定时器对象。

这样我们就完成了一个普通的轮播切换。

在下一篇博文中我们要将它改写成插件。

jQuery实现轮播切换以及将其封装成插件(2)的更多相关文章

  1. jQuery实现轮播切换以及将其封装成插件(3)

    在前两篇博文中,我们写了一个普通的轮播切换.但是我们不能每一次需要这个功能就把这些代码有重新敲一次.下面我们就将它封装成一个插件. 至于什么是插件,又为什么要封装插件,不是本文考虑的内容.  我们趁着 ...

  2. jQuery实现轮播切换以及将其封装成插件(1)

    我们在网上经常会看到一些轮播切换的效果.轮播切换,就是在一个有限的空间中定时的像走马灯一样去播放一组图片,当然也可以通过鼠标悬停在小按钮上来切换显示.下面我们将一步一步的实现这一效果. 为保证效果,请 ...

  3. 一款基于jQuery轮播切换焦点图,可播放多张图片

    今天给大家分享一款基于jQuery轮播切换焦点图,可播放多张图片,在这个组件中,你可以任意指定8张图片,然后插件就会帮你自动生成缩略图,并且自动开始切换播放图片.当然,你也可以手动切换图片,只要点击缩 ...

  4. 基于jquery带时间轴的图片轮播切换代码

    基于jquery图片标题随小圆点放大切换.这是是一款带时间轴的图片轮播切换代码.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div id="decoroll2 ...

  5. jQuery - 广告图片轮播切换

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  6. 12款经典的白富美型—jquery图片轮播插件—前端开发必备

    图片轮播是网站中的常用功能,用于在有限的网页空间内展示一组产品图片或者照片,同时还有非常吸引人的动画效果.本文向大家推荐12款实用的 jQuery 图片轮播效果插件,帮助你在你的项目中加入一些效果精美 ...

  7. 3D轮播切换特效 源码

    这个3D轮播切换特效是我2017年2月份写的 当初我 刚接触HTML不久,现在把源码分享给大家 源码的注释超级清楚 . <!-- 声明文档类型:html 作用:符合w3c统一标准规范 每个浏览器 ...

  8. 用js和jQuery做轮播图

    Javascript或jQuery做轮播图 css样式 <style> a{ text-decoration:none; } .naver{ width: 100%; position:r ...

  9. CSS+jQuery实现轮播

    CSS+jQuery实现轮播 CSS jQuery 前端  实现功能: 自动轮播: 鼠标放在上面停止轮播: 鼠标放在上面显示左右切换的按钮: 鼠标放在小圆圈上显示对应的图片: 轮播效果图 style. ...

随机推荐

  1. Web 2.0 浏览器端可靠性测试第1部分(浏览器端可靠性测试的概念和背景)

    Web 2.0 是一个体现当代网络技术发展趋势的流行概念.它使得基于 Web 的信息交互和用户间协作性更加灵活和丰富.很多的社交网站.博客.wiki,都是 Web 2.0 技术的典型应用. 我们知道, ...

  2. requirej入门(二)

    requirejs中的一些基本知识,包括API使用方式等. 基本API require会定义三个变量:define,require,requirejs,其中require === requirejs, ...

  3. goodBye wordPress

    2016-07-28,我自己在GoDaddy上面注册了一个自己的域名,www.codetree.tech,同时在老薛主机上面购买了一个主机域名.我搭建了一个属于自己的博客,开心了很久.最近收到了域名续 ...

  4. #1413 : Rikka with String 后缀自动机 + 二级差分

    http://hihocoder.com/problemset/problem/1413?sid=1199641 这题断断续续做了2个多星期吧,一直不会 设总答案为sum,替换后新加的子串数量为x,失 ...

  5. 转:自定义控件三部曲之动画篇——alpha、scale、translate、rotate、set的xml属性及用法

    第一篇: 一.概述 Android的animation由四种类型组成:alpha.scale.translate.rotate,对应android官方文档地址:<Animation Resour ...

  6. Murano Weekly Meeting 2016.06.28

    Meeting time: 2016.June.28 1:00~2:00 Chairperson:  Kirill Zaitsev, from Mirantis Meeting summary: 1. ...

  7. swing线程机制

    在介绍swing线程机制之前,先介绍一些背景概念. 背景概念 同步与异步:     同步是指程序在发起请求后开始处理事件并等待处理的结果或等待请求执行完毕,在此之前程序被阻塞(block)直到请求完成 ...

  8. Junit使用过程中需要注意的诡异bug以及处理办法

    在开发过程中我们有时会遇到狠多的问题和bug,对于在编译和运行过程中出现的问题很好解决,因为可以在错误日志中得到一定的错误提示信息,从而可以找到一些对应的解决办法.但是有时也会遇到一些比较诡异的问题和 ...

  9. angularJS ui router 多视图单独刷新问题

    场景:视图层级如下 view1 --view11 --view111 需求:view11的一个动作过后,单独刷新view12 解决方式:修改层级设计 view1 --view11 --view111 ...

  10. Asp.Net Mvc: 应用BindAttribute

    环境: Windows 2008, VS 2008 SP1, Asp.Net Mvc RC1 ----------------------------------------------------- ...