简单的图片滑动效果插件 jQuery.iocnSlider.js
2014-05-06 11:09
731 查看
近几日在制作一个客户引导页面,其中有一个图片展示而且带滑动的效果。好久没练手了,索性自己写一个插件吧。
依据设计原型,需要满足两套分辨率下图片不同的尺寸,所以在css中使用了media query的相关技术(此处不考虑IE那家伙,但是js可以正常运行),插件中也对按钮的事件以及 $(window).resize 进行了处理。
值得注意的是:
此处是防止 resize() 事件在实际情况中多次执行而进行的限制。
代码走起:
html:
css:
干货已上,我们该如何使用呢?So Easy!
插件中我只设置了三个参数(左右按钮,滑动时间),照葫芦画瓢,如下:
当然,在插件之前别忘了调用jquery.js 哟!
依据设计原型,需要满足两套分辨率下图片不同的尺寸,所以在css中使用了media query的相关技术(此处不考虑IE那家伙,但是js可以正常运行),插件中也对按钮的事件以及 $(window).resize 进行了处理。
值得注意的是:
var resizeTimer = null; $(window).resize(function() { if (resizeTimer){ clearTimeout(resizeTimer); } resizeTimer = setTimeout(winResizble, 500); });
此处是防止 resize() 事件在实际情况中多次执行而进行的限制。
代码走起:
/* * choose site style * dereksunok */ (function($) { $.fn.iocnSlider = function(options) { var settings = { leftBtn: null, rightBtn: null, slidetime: 160, n: 2 }; var opts = $.extend(settings, options, {}); //公共参数 var obj = this.find("ul"); var offset = obj.find("li").width(); var i = obj.find("li").length; var viewSize; var resizeTimer = null; $(window).resize(function() { if (resizeTimer){ clearTimeout(resizeTimer); } resizeTimer = setTimeout(winResizble, 500); }); //模块尺寸变化时重置offset function winResizble(){ var n = obj.find("li").length-i; var _offset = obj.find("li").width()*n; $(".siteStyleChooseCont ul").animate({ 'left':'-'+_offset },300); } //右滑方法 function rightSlide() { offset = obj.find("li").width(); viewSize = parseInt(obj.parent().width() / offset); if ((i - viewSize) > 0) { obj.animate({ left: "-=" + offset }, settings.slidetime, function() { settings.leftBtn.removeClass("disabled"); }); i--; if ((i - viewSize) == 0) { settings.rightBtn.addClass("disabled"); } }; }; //左滑方法 function leftSlide() { offset = obj.find("li").width(); viewSize = parseInt(obj.parent().width() / offset); if ((i - viewSize) < obj.find("li").length - viewSize) { ++i; obj.animate({ left: "+=" + offset }, settings.slidetime, function() { settings.rightBtn.removeClass("disabled"); }); if ((i - viewSize) == obj.find("li").length - viewSize) { settings.leftBtn.addClass("disabled"); } }; }; //事件绑定 if (i - (obj.parent().width() / offset) <= 0) { settings.leftBtn.add(settings.rightBtn).hide(); }; settings.leftBtn.bind("click", leftSlide); settings.rightBtn.bind("click", rightSlide); }; })(jQuery);
html:
<div class="siteStyleChoose"> <a href="javascript:;" id="left" class="btns disabled">left</a> <div class="siteStyleChooseCont"> <ul class="fix" style="left: 0px;"> <li class="checkedThis"> <a href="javascript:;"><img src="../images/demo01.jpg" alt=""></a> <span class="checkIcon"></span> </li> <li> <a href="javascript:;"><img src="../images/demo02.jpg" alt=""></a> </li> <li> <a href="javascript:;"><img src="../images/demo03.jpg" alt=""></a> </li> <li> <a href="javascript:;"><img src="../images/demo01.jpg" alt=""></a> </li> <li> <a href="javascript:;"><img src="../images/demo01.jpg" alt=""></a> </li> </ul> </div> <a href="javascript:;" id="right" class="btns">right</a> </div>
css:
/*siteStyleChooseCont*/ .siteStyleChoose { position: relative;} .siteStyleChoose > .btns { position:absolute; height: 40px; width: 20px; z-index: 9; overflow: hidden; text-indent: -99em; background-image:url(../images/sliderbtnbg.gif); top: 100px;} .siteStyleChoose #left { left: 10px; background-position: left bottom;} .siteStyleChoose #right { right: 10px; background-position: right bottom;} .siteStyleChoose #left.disabled { background-position: left top;} .siteStyleChoose #right.disabled { background-position: right top;} .siteStyleChooseCont { position: relative; margin: 0 auto; width: 1000px; height: 230px; overflow: hidden;} .siteStyleChooseCont ul { position: relative; width: 999em;} .siteStyleChooseCont li { position: relative; float: left; width: 333px; padding-bottom:6px; text-align: center;} .siteStyleChooseCont li a { outline: none; background-color: #000; display: block; width: 313px; margin: 0 auto;} .siteStyleChooseCont li img { width: 313px;} .siteStyleChooseCont li img:hover,.siteStyleChooseCont li.checkedThis img { opacity: 0.7; filter:alpha(opacity=70);} .siteStyleChooseCont li .checkIcon { position:absolute; bottom: 0; left: 0; height: 80px; width: 84px; background: url(../images/check.png) top left no-repeat;} @media screen and (min-width:1440px) and (max-width:2560px){ .siteStyleChooseCont { width: 1402px; height: 310px;} .siteStyleChooseCont li { width: 467px;} .siteStyleChooseCont li a { width: 413px;} .siteStyleChooseCont li img { width: 413px;} .siteStyleChoose > .btns { top: 140px;} .siteStyleChoose #left { left: 60px;} .siteStyleChoose #right { right: 60px;} } @media screen and (min-width:1680px) and (max-width:2560px){ .siteStyleChoose #left { left: 50px;} .siteStyleChoose #right { right: 50px;} } .siteStyleChooseCont li a,.siteStyleChooseCont li img { -webkit-transition:all .3s linear; -moz-transition:all .3s linear; -ms-transition:all .3s linear; -o-transition:all .3s linear; transition:all .3s linear; }
干货已上,我们该如何使用呢?So Easy!
插件中我只设置了三个参数(左右按钮,滑动时间),照葫芦画瓢,如下:
$(".siteStyleChooseCont").iocnSlider({leftBtn:$(".siteStyleChoose #left"),rightBtn:$(".siteStyleChoose #right"),slidetime:400});
当然,在插件之前别忘了调用jquery.js 哟!
相关文章推荐
- jQuery的图片滑动翻牌效果插件,适合对图片的简单描述交互
- jQuery插件Flexslider实现图片轮播、图文结合滑动切换效果
- jQuery简单实用的图片标题动画效果插件
- 一款jQuery图片浏览插件可简单的设置7种切换效果
- PSD转HTML实例教程——利用JQuery插件实现图片滑动效果
- jQuery中图片展示插件highslide.js的简单dom
- 可滑动切换的图片轮播——bootstrap中的carousel插件,hammer.js,jquery.hammer.js
- jQuery实现图片轮播效果代码(基于jquery.pack.js插件)
- 利用jquery-fform.js插件实现图片所见即所得效果
- jquery的图片效果和内容滑动及弹出插件
- jquery delayLoading.js插件的延迟加载效果和图片延迟加载
- jQuery插件Flexslider实现图片轮播、图文结合滑动切换效果
- Flexslider图片轮播、文字图片相结合滑动切换效果HTML 首先在页面head部位载入jquery库文件和Flexslider插件,以及Flexslider所需的基本css样式文件。
- jquery 简单图片导航插件jquery.imgNav.js
- jQuery插件MovingBoxes实现左右滑动中间放大图片效果
- jQuery-实现图片投影效果的js插件
- jquery插件jquery.LightBox.js实现点击放大图片并左右点击切换效果(附demo源码下载)
- jquery.roundabout.js图片叠加3D旋转插件多功能图片翻转切换效果
- JQuery最佳实践-简单图片导航插件jquery.imgNav.js