jquery实现轮播插件
这几天用jquery写了两个轮播的插件,功能很简单。第一次尝试写插件,有很多不足的地方,代码如下:
注:图片链接请替换掉,配置信息必须加上图片width和height。
<!DOCTYPE html>
<html ng-app="myApp">
<head lang="en">
<meta charset="UTF-8">
<link rel="stylesheet" href="css/bootstrap.min.css">
<title>轮播动画</title>
<style type="text/css">
.marquee-wrap {
overflow: hidden;
margin: 0 auto;
position: relative;
top: 0;
left: 0;
} .indicator {
list-style: none;
position: absolute;
right: 60px;
bottom: 4px;
z-index: 102;
} .indicator li {
float: left;
width: 20px;
height: 20px;
border-radius: 50%;
-webkit-border-radius: 50%;
-moz-border-radius: 50%;
background-color: #ffffff;
text-align: center;
margin: 2px;
} .indicator li a {
color: #333;
text-decoration: none;
} .indicator li.active {
background-color: rgb(255, 157, 51);
} .indicator li.active a {
color: #ffffff;
} .operator {
width: 100%;
padding: 0 16px;
position: absolute;
top: 40%;
left: 0;
z-index: 101;
} .operator a {
font-size: 26px;
text-decoration: none;
color: #ffffff;
font-weight: 200;
} .operator a:hover {
opacity: 0.9;
} .marquee {
list-style: none;
margin: 0;
padding: 0;
overflow: hidden;
position: relative;
top: 0;
z-index: 99;
} ul.marquee:after, ol.indicator:after, .operate:after {
display: block;
content: ".";
visibility: hidden;
height: 0;
clear: both;
*zoom: 1;
} .marquee li {
float: right;
} .my-marquee-wrap {
overflow: hidden;
margin: 20px auto;
} .my-marquee {
position: relative;
top: 0;
left: 0;
margin: 0;
padding: 0;
} .my-marquee li {
display: block;
position: absolute;
top: 0;
left: 0;
} </style>
</head>
<body> <div class="marquee-wrap" id="marquee">
<ol class="indicator">
<li class="active"><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
<li><a href="#">6</a></li>
</ol>
<ul class="marquee">
<li>
<a href="#" target="_blank">
<img src="data:images/banner2.jpg">
</a>
</li>
<li>
<a href="#" target="_blank">
<img src="data:images/banner5.jpg">
</a>
</li>
<li>
<a href="#" target="_blank">
<img src="data:images/banner9.jpg">
</a>
</li>
<li>
<a href="#" target="_blank">
<img src="data:images/banner10.jpg">
</a>
</li>
<li>
<a href="#" target="_blank">
<img src="data:images/banner11.jpg">
</a>
</li>
<li>
<a href="#" target="_blank">
<img src="data:images/banner12.jpg">
</a>
</li>
</ul>
<div class="operator">
<a href="#" class="next pull-right"><span class="glyphicon glyphicon-chevron-right"></span></a>
<a href="#" class="prev pull-left"><span class="glyphicon glyphicon-chevron-left"></span></a>
</div> </div> <div class="my-marquee-wrap" id="my-marquee">
<ul class="my-marquee">
<li>
<a href="#" target="_blank">
<img src="data:images/banner2.jpg">
</a>
</li>
<li>
<a href="#" target="_blank">
<img src="data:images/banner5.jpg">
</a>
</li>
<li>
<a href="#" target="_blank">
<img src="data:images/banner9.jpg">
</a>
</li>
<li>
<a href="#" target="_blank">
<img src="data:images/banner10.jpg">
</a>
</li>
<li>
<a href="#" target="_blank">
<img src="data:images/banner11.jpg">
</a>
</li>
<li>
<a href="#" target="_blank">
<img src="data:images/banner12.jpg">
</a>
</li>
</ul>
</div> <script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script> (function ($) { $.fn.slide = function (options) { this.defaults={
slideDuration:2000,
animateDuration:4000
}; var settings= $.extend({},this.defaults,options); return this.each(function () { var $marquee = $(this).children('.marquee');
var $indicator = $(this).children('.indicator');
var $operator = $(this).children('.operator'); if(typeof settings.width!='undefined' && typeof settings.height!='undefined'){
$(this).css({
width:settings.width,
height:settings.height
});
$marquee.css({
width:parseInt(settings.width)*3,
height:settings.height,
right:settings.width
}); } var index= 0,interval=""; init(); function init(){
interval=window.setInterval(slide,settings.animateDuration);
} function slide() { $marquee.find('li').eq(0).animate({
opacity: 0,
width: 0
}, settings.slideDuration, function () {
index = index + 1 > 5 ? 0 : index + 1; $indicator.find('li').eq(index).addClass('active').siblings().removeClass('active');
$marquee.find('li').eq(0).css({opacity: 1, width: settings.width}).appendTo($marquee);
});
} $indicator.find('a').on('click', function (event) {
event.preventDefault();
clearInterval(interval);
var current = index;
index = $(this).text() - 1;
var temp = Math.abs(current - index);
if (current == index) {
return false;
}
else {
//修改循环队列
for (var i = 0; i < temp; i++) { if (current < index) {
$marquee.find('li').eq(0).css({opacity: 1, width: settings.width}).appendTo($marquee);
}
else {
$marquee.find('li').last().css({opacity: 1, width: settings.width}).prependTo($marquee);
}
}
}
$indicator.find('li').eq(index).addClass('active').siblings().removeClass('active'); interval = window.setInterval(slide, settings.animateDuration);
}); $operator.find('.next').on('click', function (event) { event.preventDefault();
clearInterval(interval);
$marquee.find('li').eq(0).animate({
opacity: 0,
width: 0
}, 600, function () {
index = index + 1 > 5 ? 0 : index + 1; $indicator.find('li').eq(index).addClass('active').siblings().removeClass('active');
$marquee.find('li').eq(0).css({opacity: 1, width: settings.width}).appendTo($marquee); });
interval = window.setInterval(slide, settings.animateDuration); });
$operator.find('.prev').on('click', function (event) { event.preventDefault();
clearInterval(interval);
$marquee.find('li').last().css({opacity: 0, width: "0"}).prependTo($marquee); $marquee.find('li').eq(0).animate({
opacity: 1,
width: settings.width
}, 600, function () {
index = index - 1 < 0 ? 5 : index - 1;
$indicator.find('li').eq(index).addClass('active').siblings().removeClass('active');
}); interval = window.setInterval(slide, settings.animateDuration); }); }); }; })(jQuery); (function($){ $.fn.marquee=function(options){ this.defaults={
slideDuration:1500,
animateDuration:1000
}; var settings= $.extend({},this.defaults,options); return this.each(function () { var $marquee=$(this).children('.my-marquee');
var interval=""; if(typeof settings.width!='undefined' && typeof settings.height!='undefined'){
$(this).css({
width:settings.width,
height:settings.height
});
}
init(); function init(){
interval = window.setInterval(slide, settings.animateDuration);
} function slide(){
$marquee.find('li').last().fadeOut(settings.slideDuration,function(){
$(this).show().prependTo($marquee);
})
} }); };
})(jQuery); $(function () { $('#marquee').slide({
width:'1200px',
height:'330px'
}); $('#my-marquee').marquee({
width:'1200px',
height:'330px'
}); }); </script>
</body>
</html>
jquery实现轮播插件的更多相关文章
- 12款经典的白富美型—jquery图片轮播插件—前端开发必备
图片轮播是网站中的常用功能,用于在有限的网页空间内展示一组产品图片或者照片,同时还有非常吸引人的动画效果.本文向大家推荐12款实用的 jQuery 图片轮播效果插件,帮助你在你的项目中加入一些效果精美 ...
- Nivo Slider - 世界上最棒的 jQuery 图片轮播插件
Nivo Slider 号称世界上最棒的图片轮播插件,有独立的 jQuery 插件和 WordPress 插件两个版本.目前下载量已经突破 1,800,000 次!jQuery 独立版本的插件主要有如 ...
- jquery图片轮播插件slideBox
效果预览: 源代码下载: jQuery图片轮播(焦点图)插件jquery.slideBox 特点:兼容IE6+,Chrome,Firefox,Opera,safari,可左右,可上下,可快可慢,可指定 ...
- 面板支持单个,多个元素的jQuery图片轮播插件
一.先附上demo <!doctype html> <html> <head> <meta charset="utf-8"> < ...
- Unslider – 轻量的响应式 jQuery 内容轮播插件
Unslider 是一款非常轻量的 jQuery 插件(压缩后不到3KB),能够用于任何 HTML 内容的滑动. 可以响应容器的大小变化,自动排布不用大小的滑块.可以通过整合 jQuery.event ...
- jquery图片轮播-插件
更新内容: 1. 页面结构和css样式必定类似下边放置 2. 点击左右按钮,实现左右滑动. 3. 这一般用于多个图片轮播使用,简化并优化代码. 若因不同需求,均可自行将插件scrollimgplus. ...
- jquery flexslider 轮播插件
去官网下载最新的 https://www.woothemes.com/flexslider/ 引入 css 和 js api $(window).load(function() { $('.flexs ...
- Javascript和jQuery WordPress 图片轮播插件, 内容滚动插件,前后切换幻灯片形式显示
用于在有限的网页空间内展示一组产品图片或者照片,同时还有非常吸引人的动画效果.本文向大家推荐12款实用的 jQuery 图片轮播效果插件,帮助你在你的项目中加入一些效果精美的图片轮播效果,希望这些插件 ...
- 12款 jquery轮播插件
Nivo Slider 首先推荐的这款插件号称世界上最棒的图片轮播插件,有独立的 jQuery 插件和 WordPress 插件两个版本. 目前下载量已经突破 1,800,000 次!jQuery 独 ...
随机推荐
- Android自定义控件练手——简单的时钟
首先这应该是一个老生常谈的设计了,但是毕竟身为小白的自己都没动手做过,不动手怎么提高自己呢,所以在这梅林沉船闲暇之际,我就把我的设计流程与思路记录下来.首先来看看效果图吧: 如上图就是一个简单并没有美 ...
- JavaScript getMonth() 方法
应该特别注意的是Js中getMonth()这个方法的返回值: 定义和用法: getMonth() 方法可返回表示月份的数字. 返回值: dateObject 的月份字段,使用本地时间.返回值是 0(一 ...
- StringBuffer是可变的还是不可变的?
前言:我们知道String类的修饰符是final,其char[] value也是由final修饰的,每次给String变量赋一个新值,都会创建一个新的String对象,很多有涉及到字符串本身的改变都是 ...
- CRM User Status profile中Business Transaction字段的用途
有朋友问到User Status profile中Business Transaction字段的用途,如下图INPR, FINI所示. 实际上,这个字段作为一个桥梁,连接了User Status和Sy ...
- js 中//<![CDATA[ 意义
CDATA内部所有东西都会被解析器忽略,加入文本中包含了大量< 和 $符号,就像编程中经常出现的情况一样,那么这个元素就可以被定义为一个CDATA部分 ,CDATA 区段开始于 "&l ...
- AOJ 558 Cheese(bfs)
题意:网格图,老鼠吃奶酪,吃完奶酪体力值会增加,只能吃硬度不大于体力值的,问最小步数. 思路:按硬度从小到大的吃起,依次求最短路. 我用曼哈顿距离估价的A*,和普通bfs的time没区别啊,还把优先级 ...
- Aizu 2456 Usoperanto (贪心)
贪心,对于一个修饰关系可以连一条有向边,在合并的时候,子节点的序列一定是连续安排的,因为如果有交叉,交换以后一定更优. 然后一个序列一个序列的考虑,长度短的应该在前面,否则同样交换以后更优.因此排序以 ...
- python_41_with语句
#为了避免打开文件后忘记关闭,可以通过管理上下文,即:with open('log','r') as f: # 如此方式,当with代码块执行完毕时,内部会自动关闭并释放文件资源. with open ...
- 对mysql快速批量修改,查重
更新UPDATE mytable SET myfield = CASE id WHEN 1 THEN 'value' WHEN 2 THEN 'value' WHEN 3 THEN 'value' E ...
- OI,我的决心
虽然从初一就开始NOIP,但沉溺于游戏编程等各种乱七八糟的技术,一直没对算法有过透彻的研究. ——————————简单的来说就是水过了—————————— 我生于一个弱省,就读于一所弱校(我们全区的都 ...