jquery实现的缩略图预览滑块实例


Posted in Javascript onJune 25, 2015

本文实例讲述了jquery实现的缩略图预览滑块。分享给大家供大家参考。具体如下:

运行效果如下图所示:

jquery实现的缩略图预览滑块实例

主要代码如下:

(function($) {
$.fn.thumbnailSlider = function(options) {
var opts = $.extend({}, $.fn.thumbnailSlider.defaults, options);
return this.each(function() {
var $this = $(this),
o = $.meta ? $.extend({}, opts, $pxs_container.data()) : opts;
var $ts_container= $this.children('.ts_container'),
$ts_thumbnails= $ts_container.children('.ts_thumbnails'),
$nav_elems= $ts_container.children('li').not($ts_thumbnails),
total_elems= $nav_elems.length,
$ts_preview_wrapper= $ts_thumbnails.children('.ts_preview_wrapper'),
$arrow= $ts_thumbnails.children('span'),
$ts_preview= $ts_preview_wrapper.children('.ts_preview');
/* 
计算出$ts_thumbnails的尺寸:
width -> width thumbnail + border (2*5)
height -> height thumbnail + border + triangle height(6)
top-> -(height plus margin of 5)
left-> leftDot - 0.5*width + 0.5*widthNavDot 
当鼠标经过导航的时候它将会被设定并且默认的值将会赋给导航的第一个预览点
*/
var w_ts_thumbnails= o.thumb_width + 2*5,
h_ts_thumbnails= o.thumb_height + 2*5 + 6,
t_ts_thumbnails= -(h_ts_thumbnails + 5),
$first_nav= $nav_elems.eq(0),
l_ts_thumbnails= $first_nav.position().left - 0.5*w_ts_thumbnails + 0.5*$first_nav.width();
$ts_thumbnails.css({
width: w_ts_thumbnails + 'px',
height: h_ts_thumbnails + 'px',
top: t_ts_thumbnails + 'px',
left: l_ts_thumbnails + 'px'
});
/*
计算出提示箭头的上方和左边的位置
top-> thumb height + border(2*5)
left-> (thumb width + border)/2 -width/2
*/
var t_arrow= o.thumb_height + 2*5,
l_arrow= (o.thumb_width + 2*5) / 2 - $arrow.width() / 2;
$arrow.css({
left: l_arrow + 'px',
top: t_arrow + 'px'
});
/*
计算出$ts_preview的宽度->缩略图的宽度乘以所有缩略图的数量
*/
$ts_preview.css('width' , total_elems*o.thumb_width + 'px');
/*
设定 $ts_preview_wrapper 的宽度和高度 -> thumb width / thumb height
*/
$ts_preview_wrapper.css({
width: o.thumb_width + 'px',
height: o.thumb_height + 'px'
});
//鼠标经过导航的元素
$nav_elems.bind('mouseenter',function(){
var $nav_elem= $(this),
idx= $nav_elem.index();
/*
计算出 $ts_thumbnails 最新的左侧距离
*/
var new_left= $nav_elem.position().left - 0.5*w_ts_thumbnails + 0.5*$nav_elem.width();
$ts_thumbnails.stop(true)
.show()
.animate({
left: new_left + 'px'
},o.speed,o.easing); 
/*
动画从 $ts_preview 的左侧过渡到右边的缩略图
*/
$ts_preview.stop(true)
.animate({
left: -idx*o.thumb_width + 'px'
},o.speed,o.easing);
//当鼠标停留的时候图片进行放大
if(o.zoom && o.zoomratio > 1){
var new_width= o.zoomratio * o.thumb_width,
new_height= o.zoomratio * o.thumb_height;
//增加 $ts_preview 的宽度为了能够让图片放大
var ts_preview_w= $ts_preview.width();
$ts_preview.css('width' , (ts_preview_w - o.thumb_width + new_width) + 'px');
$ts_preview.children().eq(idx).find('img').stop().animate({
width: new_width + 'px',
height: new_height + 'px'
},o.zoomspeed);
}
}).bind('mouseleave',function(){
//如果放大了设置它的宽度和高度为默认值
if(o.zoom && o.zoomratio > 1){
var $nav_elem= $(this),
idx= $nav_elem.index();
$ts_preview.children().eq(idx).find('img').stop().css({
width: o.thumb_width + 'px',
height: o.thumb_height + 'px'
});
}
$ts_thumbnails.stop(true)
.hide();
}).bind('click',function(){
var $nav_elem= $(this),
idx= $nav_elem.index();
o.onClick(idx);
});
});
};
$.fn.thumbnailSlider.defaults = {
speed: 100,// 幻灯片过渡的动画速度
easing: 'jswing',// easing动画效果
thumb_width: 75,//您的图片宽度
thumb_height: 75,//您的图片高度
zoom: false,//缩略图是否放大
zoomratio: 1.3,// 放大比率(数值必须大于1)
zoomspeed: 15000,//放大动画的速度
onClick: function(){return false;}//点击回发
};
})(jQuery);

完整实例代码点击此处本站下载。

希望本文所述对大家的jQuery程序设计有所帮助。

Javascript 相关文章推荐
js截取函数(indexOf,join等)
Sep 01 Javascript
JavaScript访问样式表代码
Oct 15 Javascript
$.ajax返回的JSON无法执行success的解决方法
Sep 09 Javascript
JavaScript 基础篇之运算符、语句(二)
Apr 07 Javascript
jQuery实现获取绑定自定义事件元素的方法
Dec 02 Javascript
Easyui笔记2:实现datagrid多行删除的示例代码
Jan 14 Javascript
Jquery+Ajax+xml实现中国地区选择三级联动菜单效果(推荐)
Jun 09 jQuery
基于JavaScript实现飘落星星特效
Aug 10 Javascript
js禁止Backspace键使浏览器后退的实现方法
Sep 01 Javascript
AjaxUpLoad.js实现文件上传功能
Mar 02 Javascript
Vue中的v-for循环key属性注意事项小结
Aug 12 Javascript
JS中一些高效的魔法运算符总结
May 06 Javascript
使用javascript提交form表单方法汇总
Jun 25 #Javascript
Jquery结合HTML5实现文件上传
Jun 25 #Javascript
浅谈jQuery.easyui的datebox格式化时间
Jun 25 #Javascript
javascript学习笔记之函数定义
Jun 25 #Javascript
把Node.js程序加入服务实现随机启动
Jun 25 #Javascript
javascript控制台详解
Jun 25 #Javascript
jquery实现浮动的侧栏实例
Jun 25 #Javascript
You might like
php checkbox 取值详细说明
2010/08/19 PHP
完美解决PHP中的Cannot modify header information 问题
2013/08/12 PHP
php实现异步将远程链接上内容(图片或内容)写到本地的方法
2016/11/30 PHP
PHP中OpenSSL加密问题整理
2017/12/14 PHP
页面元素绑定jquery toggle后元素隐藏的解决方法
2014/03/27 Javascript
jQuery on()绑定动态元素出现的问题小结
2016/02/19 Javascript
json的使用小结
2016/06/08 Javascript
javascript实现的图片预览功能
2017/03/25 Javascript
详谈js遍历集合(Array,Map,Set)
2017/04/06 Javascript
JS正则表达式验证中文字符
2017/05/08 Javascript
解决vue-cli项目打包出现空白页和路径错误的问题
2018/09/04 Javascript
详解Vue webapp项目通过HBulider打包原生APP(vue+webpack+HBulider)
2019/02/02 Javascript
解决layui 三级联动下拉框更新时回显的问题
2019/09/03 Javascript
详解node.js 事件循环
2020/07/22 Javascript
vue 二维码长按保存和复制内容操作
2020/09/22 Javascript
[01:05:12]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS CIS-GAME
2014/05/21 DOTA
Python基于scipy实现信号滤波功能
2019/05/08 Python
python 实现识别图片上的数字
2019/07/30 Python
Python argparse模块应用实例解析
2019/11/15 Python
Python:slice与indices的用法
2019/11/25 Python
在 Pycharm 安装使用black的方法详解
2020/04/02 Python
Python搭建Keras CNN模型破解网站验证码的实现
2020/04/07 Python
在Matplotlib图中插入LaTex公式实例
2020/04/17 Python
计算Python Numpy向量之间的欧氏距离实例
2020/05/22 Python
Html5移动端适配IphoneX等机型的方法
2019/06/25 HTML / CSS
香港家用健身器材、运动器材及健康美容仪器专门店:FitBoxx
2019/12/05 全球购物
世界上最大的艺术社区:SAA
2020/12/30 全球购物
介绍一下Transact-SQL中SPACE函数的用法
2015/09/01 面试题
公司中层干部的自我评价分享
2014/03/01 职场文书
超市创业计划书
2014/04/24 职场文书
小学家长学校培训材料
2014/08/24 职场文书
活动总结新闻稿
2014/08/30 职场文书
电影开国大典观后感
2015/06/04 职场文书
2015年秋季开学典礼校长致辞
2015/07/16 职场文书
简单总结SpringMVC拦截器的使用方法
2021/06/28 Java/Android
Go获取两个时区的时间差
2022/04/20 Golang