jQuery-demos轮播图练习(一)
在jQuery插件库上看到一个轮播图觉得很漂亮,就自己尝试做了一个,实现左侧小图定时滚动,小图和底部的原点可以点击切换大图,离开后小图继续滚动,白色背景始终保持在当前图上。
思路:HTML结构分了大图片部分、小图导航和底部圆点三个部分;通过克隆图片列表加长了列表长度,当滚动到克隆的图片部分时,将整个列表拉回原位,看起来就像连续滚动的效果了。
- html
<div class="images"> //大图部分<ul class="iunit"><li><img src="data:images/a1.png" alt=""></li><li><img src="data:images/a2.png" alt=""></li><li><img src="data:images/a3.png" alt=""></li><li><img src="data:images/a4.png" alt=""></li><li><img src="data:images/a5.png" alt=""></li><li><img src="data:images/a6.png" alt=""></li></ul>
</div>
<div class="nav"> //小图导航部分 li有6个<ul class="nunit"><li class="cur"><a href="javascript:;"><img src="data:images/a1x.png" alt=""><span class="title">Title</span><br><span class="descrip">Description</span></a></li></ul>
</div>
<div class="sub_nav"> //底部圆点导航部分<ul class="sunit"><li class="cur"></li><li></li><li></li><li></li><li></li><li></li></ul>
</div>复制代码
css就不放上来了,全部源文件在最后的链接,下面是js部分代码:
1.获取元素和克隆列表
var $carousel = $("#carousel");
var $iunit = $carousel.find(".iunit"); //大图片部分的ul
var $nunit = $carousel.find(".nunit"); //小图片部分的ul
var $sunit = $carousel.find(".sunit"); //圆点部分的ul
var idx=0, _idx = 0; //设置三个信号量分别控制三个部分,降低三个部分之间的耦合性
var s_idx = 0;//克隆两个图片列表
$iunit.find("li").clone().appendTo($iunit);
$nunit.find("li").clone().appendTo($nunit);//获取每一个里表中的li,这里要在克隆之后获取,否则就只能获取到克隆之前的个数
var $iunit_lis = $iunit.find("li");
var $nunit_lis = $nunit.find("li");
var $sunit_lis = $sunit.find("li");
复制代码
2.添加鼠标移入和移除事件监听
//添加鼠标移入监听,给后面加cur添加important否则权重不够行内
$nunit_lis.mouseenter(function(){$(this).css("background-color", "rgba(255,255,255,0.3)");
});
$nunit_lis.mouseleave(function(){$(this).css("background-color", "rgba(0,0,0,0.08)");
});
复制代码
3.左侧导航部分添加点击事件监听
$nunit_lis.click(function(){//当前点击的下标1-12idx = $(this).index();$(this).siblings("li").removeClass("cur");$(this).addClass("cur");//判断下标,当大于7时,下标值减去6,返回1-6if(idx > 6){idx -= 6;}$nunit_lis.eq(idx+6).addClass("cur");//添加运动事件,内部判断索引值为6时,still移动,但是移动之后拉回到0$iunit.animate({"left": -980 * idx}, 300, function(){if(idx>5){$(this).css("left", 0);}});//小圆点跟随信号量idx值一同改变$sunit_lis.eq(idx).addClass("cur").siblings("li").removeClass("cur");
});
复制代码
4.底部圆点添加点击事件监听
$sunit_lis.click(function(){s_idx = $(this).index();$sunit_lis.eq(s_idx).addClass("cur").siblings("li").removeClass("cur");$iunit.animate({"left": -980 * s_idx}, 300);
});
复制代码
5.封装运动函数,开启定时器让导航滚动起来
function go(){_idx++;$nunit.animate({"top": -70 * _idx}, 300, function(){if(_idx>5){_idx=0;$nunit.css("top", 0);}})
}var timer = setInterval(go, 1000);$carousel.mouseenter(function(){clearInterval(timer);
});
$carousel.mouseleave(function(){timer = setInterval(go, 1000);
});
复制代码
小结:没有完全实现作者的所有功能,原轮播可以在滚动时自动切换当前小图,并且始终保持在中间位置,看了一下他的源代码是使用了一个插件,还有一些css3的知识,最近刚开始学习css3,回头再重新用css3重做应该会做的更好。
源代码戳这里
刚刚学会使用GitHub,可以上传一些之前做的demo了!加油加油,还有那么多要学的东东!css3好有意思啊,又学到好多新方法,已经想做点什么来试试手了!
转载于:https://juejin.im/post/5a40f4c4518825772a4b3a3b
jQuery-demos轮播图练习(一)相关推荐
- 用js和jQuery做轮播图
Javascript或jQuery做轮播图 css样式 <style> a{ text-decoration:none; } .naver{ width: 100%; position:r ...
- 网页直播源码,JQuery实现轮播图方法
网页直播源码,JQuery实现轮播图方法 html <!DOCTYPE html> <html> <head lang="en"><met ...
- ajax轮播图控件,基于json数据的jquery卡片轮播图插件
这是一款基于json数据的jquery卡片轮播图插件.该插件通过ajax来获取卡片的信息,动态显示卡片.它还提供不使用ajax的方式来获取数据,和其它一些api接口. 使用方法 在页面中引入jquer ...
- 基于JQuery 编写轮播图插件
基于JQuery 编写轮播图插件 不管是实际开发还是平时的小项目中 ,页面一定有且多个的轮播图,那么为了效率大家可以考虑封装这样的小插件.下面一起看看他的使用方法吧 使用需要准备(往下滑动会看到): ...
- jQuery实现轮播图(无缝轮播,附效果图),代码有详解。
jQuery实现轮播图 这里用了一些有颜色的div块当做图片,复制之后可以直接用,有需要的话再根据自己的需求替换就可以了. 功能: (1)左右无缝轮播. (2)鼠标移上去会停止,移走继续动. (3)点 ...
- Jquery实现轮播图效果
Jquery实现轮播图效果 首先是html <div id="box"><img src="./day6/am/轮播图/img/1.jpg" ...
- jQuery 实现轮播图
jQuery 轮播图 预览图: 使用jquery实现轮播图要比用原生js简单许多,代码也少很多. 思路 1.外层盒子设置为一个图片的大小 2.内层盒子为所有图片的宽度,图片左浮动 3.外层盒子设置ov ...
- JQuery实现轮播图及其原理
源码: <!DOCTYPE html> <html><head><meta charset="utf-8" name="view ...
- Jquery实现轮播图效果(fadeIn()和fadeOut()方法的应用)
2019独角兽企业重金招聘Python工程师标准>>> 1.jquery.js从官网上下载最新的,使用外链导入到html中, 下载地址: http://jquery.com/down ...
- 自己定义jquery插件轮播图
轮播图-html <!DOCTYPE html> <html lang="en"> <head><meta charset="U ...
最新文章
- Flex的NumericStepper控件
- reduce_sum() got an unexpected keyword argument 'keep_dims'
- NumberUtils用法
- 移动开发工程师面试题集:Android iOS
- 惊呆了!这篇论文全文都是脏话,可编辑部居然对它评价极佳并发表了!
- 将一个长度最多为30位数字的十进制非负整数转换为二进制数(Java)
- GridView position = 0重复加载的问题
- 【指纹识别】基于matlab GUI指纹打卡系统【含Matlab源码 867期】
- Discuz漏洞复现
- matlab 2010无法运行程序,图文操作win7系统运行matlab2010找不到指定的程序的还原步骤...
- catia工程图纸中如何画图_catia工程图 方法和步骤
- php的rps,如何理解RPS的本质
- 【游记】NOI2021
- Android实现打开手机淘宝并自动识别淘宝口令弹出商品信息功能
- C++ 调用打印机 打印一段文字
- JavaBean 与 POJO
- Codeforces D. Omkar and Bed Wars
- UVa 11062 Andy's Second Dictionary(刘汝佳紫书升级题)
- 如果你只知道开心网,那你就OUT了。。。。。
- 关于Google收购FeedBurner的一点感想