简单的图片滑动效果插件 jQuery.iocnSlider.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:; 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的更多相关文章
- 简单jQuery图片自适应宽度插件jQuery.imgAutoSize.js
(function ($) { var loadImg = function (url, fn) { var img = new Image(); img. ...
- 10款好用的 jQuery 图片切换效果插件
jQuery 是一个非常优秀的 Javascript 框架,使用简单灵活,同时还有许多成熟的插件可供选择.其中,最令人印象深刻的应用之一就是对图片的处理,它可以让帮助你在你的项目中加入一些让人惊叹的效 ...
- jQuery图片懒加载插件jquery.lazyload.js使用实例注意事项说明
jQuery图片懒加载插件jquery.lazyload.js使用实例注意事项说明 jquery.lazyload.js是一个用JavaScript编写的jQuery插件.它可以延迟加载长页面中的图片 ...
- jquery插件jquery.LightBox.js之点击放大图片并左右点击切换图片(仿相册插件)
该插件乃本博客作者所写,目的在于提升作者的js能力,也给一些js菜鸟在使用插件时提供一些便利,老鸟就悠然地飞过吧. 此插件旨在实现目前较为流行的点击放大图片并左右点击切换图片的效果,您可以根据自己的实 ...
- 100种不同图片切换效果插件pageSwitch
分享100种不同图片切换效果插件pageSwitch.这是一款适用于全屏切换场景,即一切一屏,并且实现了超过一百种切换效果,支持自定义切页动画.效果图如下: 在线预览 源码下载 实现的代码. ht ...
- 图片文字滚动插件jQuery Scrollbox
图片文字滚动插件jQuery Scrollbox附件中提供了五种图片.文字滚动样式,只需调用jquery库和jQuery Scrollbox插件,然后再加一段简单的jquery代码即可使用,兼容性良好 ...
- jQuery懒加载插件jquery.lazyload.js使用说明实例
jQuery懒加载插件jquery.lazyload.js使用说明实例很多网站都会用到‘图片懒加载’这种方式对网站进行优化,即延迟加载图片或符合某些条件才开始加载图片.懒加载原理:浏览器会自动对页面中 ...
- jQuery响应式幻灯片插件jquery.glide.js(支持触摸&轻量级)
找到一款好的幻灯片插件不容易,找到一款功能全并且使用很简单的幻灯片更不容易,今天为大家分享一款全能的幻灯片插件glide.js,也是我现在在使用的一款插件. jquery.glide.js是响应和触摸 ...
- jQuery分页插件(jquery.page.js)的使用
效果描述: 不用分页即可显示的jQuery插件 jQuery分页插件——jQuery.page.js用法很简单,效果很棒 1.前端 首先html的head中引入相关css与js <lin ...
随机推荐
- Finder 的分栏显示模式宽度调整
Mac系统下设置 Finder 分栏默认宽度的方法 苹果电脑 Mac OS X 系统中最重要的功能:Finder 有四种显示模式:图标.列表.分栏.Cover Flow,很多 Mac “老手” ...
- Vue教程:指令与事件(二)
一.插值 v-once 通过使用 v-once 指令,你也能执行一次性地插值,当数据改变时,插值处的内容不会更新.但请留心这会影响到该节点上所有的数据绑定: span v-once>这个将不会改 ...
- PL/SQL添加Oracle对象
1.首先用system的身份进入数据库 2.找到user文件夹 3.右击新建用户 在“创建用户”窗口中,输入新用户的名称.口令,默认表空间.临时表空间等 4.赋予新用户权限,赋予其角色权限:conne ...
- 【2017001】IList转DataTable、DataTable转IList
IList转DataTable.DataTable转IList using System; using System.Collections.Generic; using System.Compone ...
- 系统优化怎么做-SQL优化
大家好,这里是「聊聊系统优化 」,并在下列地址同步更新 博客园:http://www.cnblogs.com/changsong/ 知乎专栏:https://zhuanlan.zhihu.com/yo ...
- 基于java的简易计算器实现
方法: 1.将string类型的表达式输入转换成后缀表达式 2.计算后缀表达式 步骤一:将string类型的表达式输入转换成后缀表达式 输入字符串表达式,并将表达式转换成char型数组 String ...
- sudo命令: 在其他用户下操作root用户权限
一. 场景: 在某个远程服务器 A 上,用 账户1 登陆, 想要在root用户的目录下创建一个 .sh文件, 如果直接 用 touch test.sh 创建,会提示权限不足 此时可以用sudo命令: ...
- 破损的键盘(悲剧文本)(Broken Keyboard(a.k.a. Beiju Text),Uva 11988)
破损的键盘(悲剧文本)(Broken Keyboard(a.k.a. Beiju Text),Uva 11988) 题意描述 你在输入文章的时候,键盘上的Home键和End键出了问题,会不定时的按下. ...
- JavaBen 中 如何将字段设置为 "text" 文本类型
@Lob @Column(name="FEEDBACK_MESSAGE",columnDefinition="TEXT", nullable=true) pub ...
- 鸟哥私房菜笔记-1 (S0_S3)
学新东西,总感觉还是看书来的实在,直接看教程上手太慢且没有目的, 接下来先啃鸟哥这本吧,买的第三版,内容在鸟哥站上都有: 鸟哥的 Linux 私房菜 -- 基础学习篇目录 (繁体) http://cn ...