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

依据设计原型,需要满足两套分辨率下图片不同的尺寸,所以在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 编写小工具 尝试 学习(七)

    1.在java 编写小工具 尝试 学习(六)里学会了,控件 的随意摆放, 以及大小(x,y,width,height),又根据前面学习的按钮 被点击 的事件监控 的方法 ,点击 按钮 在显示区域显示“ ...

  2. linux常用监测命令

    1 uptime uptime 命令可以用来查看服务器已经运行了多久,当前登录的用户有多少. 2 top top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于W ...

  3. max-height实现任意高度元素的展开收缩动画

    http://dobinspark.com.cn/ 前言: 在说到实现元素的展开收缩,通常的想法是通过控制display的元素属性和none之间的切换,虽然说功能可以实现,但是这种展开是没有任何动画的 ...

  4. HDU 5572--An Easy Physics Problem(射线和圆的交点)

    An Easy Physics Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/ ...

  5. 复习宝典之Redis

    查看更多宝典,请点击<金三银四,你的专属面试宝典> 第八章:Redis Redis是一个key-value的nosql数据库.先存到内存中,会根据一定的策略持久化到磁盘,即使断电也不会丢失 ...

  6. Redis Cluster Notes

    Redis Cluster Goal:     1. 最大支持1000个节点的高性能.可线性扩展集群:集群架构中无Proxy层,主从间采用异步同步机制(replication),无merge层(不支持 ...

  7. qq空间认证教程:借助企鹅媒体平台认证QQ公众空间

    年轻人,最近你是否眼看众多新开的QQ空间认证成功,自己却一筹莫展,而心情极度狂躁焦虑,别急,以下是详细教程,不能保证100%,但老夫已认证成功几个号. 不废话,直接上流程: 方法大致有2种: 1. 通 ...

  8. MongoDB 4.0.6 Manual

    General mongod options: -v [ --verbose ] [=arg(=v)] be more verbose (include multiple times for more ...

  9. php 将富文本编辑后的内容取出

    背景:项目中用了富文本编辑器,讲写完的内容存入了数据库,但是取出的时候因为有些展示地方并不需要样式,只想获取到内容,所以需要将带了html编码的信息解析出来. 原始信息如下 [task_desc] = ...

  10. STM32学习日志

    今天是开学第二周周末 写这篇博客纯属是为了记住一些学到的知识,大佬勿喷.. 首先学32要知道一些选型知识,32中常用的芯片类型(某宝常卖的开发板芯片大多是这几种):C8T6,RBT6,RCT6,VET ...