近几日在制作一个客户引导页面,其中有一个图片展示而且带滑动的效果。好久没练手了,索性自己写一个插件吧。

依据设计原型,需要满足两套分辨率下图片不同的尺寸,所以在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:; 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:; left:; 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.iocnSlider.js的更多相关文章

  1. 简单jQuery图片自适应宽度插件jQuery.imgAutoSize.js

    (function ($) {       var loadImg = function (url, fn) {         var img = new Image();         img. ...

  2. 10款好用的 jQuery 图片切换效果插件

    jQuery 是一个非常优秀的 Javascript 框架,使用简单灵活,同时还有许多成熟的插件可供选择.其中,最令人印象深刻的应用之一就是对图片的处理,它可以让帮助你在你的项目中加入一些让人惊叹的效 ...

  3. jQuery图片懒加载插件jquery.lazyload.js使用实例注意事项说明

    jQuery图片懒加载插件jquery.lazyload.js使用实例注意事项说明 jquery.lazyload.js是一个用JavaScript编写的jQuery插件.它可以延迟加载长页面中的图片 ...

  4. jquery插件jquery.LightBox.js之点击放大图片并左右点击切换图片(仿相册插件)

    该插件乃本博客作者所写,目的在于提升作者的js能力,也给一些js菜鸟在使用插件时提供一些便利,老鸟就悠然地飞过吧. 此插件旨在实现目前较为流行的点击放大图片并左右点击切换图片的效果,您可以根据自己的实 ...

  5. 100种不同图片切换效果插件pageSwitch

    分享100种不同图片切换效果插件pageSwitch.这是一款适用于全屏切换场景,即一切一屏,并且实现了超过一百种切换效果,支持自定义切页动画.效果图如下: 在线预览   源码下载 实现的代码. ht ...

  6. 图片文字滚动插件jQuery Scrollbox

    图片文字滚动插件jQuery Scrollbox附件中提供了五种图片.文字滚动样式,只需调用jquery库和jQuery Scrollbox插件,然后再加一段简单的jquery代码即可使用,兼容性良好 ...

  7. jQuery懒加载插件jquery.lazyload.js使用说明实例

    jQuery懒加载插件jquery.lazyload.js使用说明实例很多网站都会用到‘图片懒加载’这种方式对网站进行优化,即延迟加载图片或符合某些条件才开始加载图片.懒加载原理:浏览器会自动对页面中 ...

  8. jQuery响应式幻灯片插件jquery.glide.js(支持触摸&轻量级)

    找到一款好的幻灯片插件不容易,找到一款功能全并且使用很简单的幻灯片更不容易,今天为大家分享一款全能的幻灯片插件glide.js,也是我现在在使用的一款插件. jquery.glide.js是响应和触摸 ...

  9. jQuery分页插件(jquery.page.js)的使用

    效果描述: 不用分页即可显示的jQuery插件 jQuery分页插件——jQuery.page.js用法很简单,效果很棒   1.前端   首先html的head中引入相关css与js <lin ...

随机推荐

  1. Java项目排查cpu负载高

    背景 我负责的其中一个项目在空负载的情况下,CPU占用率依然保持着100%左右,线上.测试.开发的服务都一样:是什么导致的呢?在开发环境我查看了请求流量,这个流量可以忽略但CPU占用率一直在60%-1 ...

  2. iOS之动态计算文字的高度

    + (CGSize)boundingALLRectWithSize:(NSString *)txt Font:(UIFont *)font Size:(CGSize)size { NSMutableA ...

  3. 技巧:Vimdiff 使用(改)

    技巧:Vimdiff 使用(改) 各种 IDE 大行其道的同时,传统的命令行工具以其短小精悍,随手可得的特点仍有很大的生存空间,这篇短文介绍了一个文本比较和合并的小工具:vimdiff.希望能对在 U ...

  4. DOCTYPE导致MyEclipse无法正常格式化HTML的问题

    今天遇到在JSP代码中Ctrl+F无法正常格式化HTML代码,经过排查是DOCTYPE的原因. 之前写的是: <!DOCTYPE html PUBLIC "-//W3C//DTD XH ...

  5. redhat系统升级openssh到7.5

    注意,注意,注意重要的事情说三遍,关于ssh的升级不能完全按照别人的教程进行升级,因为每台生产机器都是不一样的,有可能别人能升级成功但是另外一个就可能会失败,因为每台机器上面跑的应用是不一样的,涉及到 ...

  6. thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法

    这篇文章主要介绍了thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法,结合简单示例形式分析了thinkPHP5框架验证码相关配置.后台验证.前台刷新等操作技巧,学习thinkphp源码的朋 ...

  7. nginx的docker化部署

    nginx的docker化有一个隐藏的坑,就是其默认的配置目录(/etc/nginx)需要先从容器中拷贝出来. 拉取镜像 docker pull nginx 启动容器 docker run -d -- ...

  8. react-router 4.0版本使用笔记

    react-router 4变化还是挺大的,看网上很多人遇到问题,都是基本用法的改变,所以这里记录一下. http://www.jianshu.com/p/d6727e8d81c4 1.react-r ...

  9. 全文检索引擎 sphinx-coreseek中文索引

    Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索. Sphinx特别为一些 ...

  10. Oracle_11g桌面版 中解决被锁定的scott 教学数据库的方法

    Oracle 11g中修改被锁定的用户:scott 在安装完Oracle10g和创建完oracle数据库之后,想用数据库自带的用户scott登录,看看连接是否成功. 在cmd命令中,用“sqlplus ...