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 相关文章推荐
理解Javascript_09_Function与Object
Oct 16 Javascript
javascript判断css3动画结束 css3动画结束的回调函数
Mar 10 Javascript
分享9点个人认为比较重要的javascript 编程技巧
Apr 27 Javascript
JavaScript获取并更改input标签name属性的方法
Jul 02 Javascript
jquery实现文本框textarea自适应高度
Mar 09 Javascript
js前端解决跨域问题的8种方案(最新最全)
Nov 18 Javascript
基于jQuery实现Accordion手风琴自定义插件
Oct 13 Javascript
H5图片压缩与上传实例
Apr 21 Javascript
JS中把函数作为另一函数的参数传递方法(总结)
Jun 28 Javascript
微信小程序自定义底部导航带跳转功能
Nov 27 Javascript
vue中使用rem布局代码详解
Oct 30 Javascript
vue导航栏部分的动态渲染实例
Nov 01 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简单系统查询模块代码打包下载
2008/06/07 PHP
PHP数组内存耗用太多问题的解决方法
2010/04/05 PHP
Laravel中使用阿里云OSS Composer包分享
2015/02/10 PHP
CI框架(ajax分页,全选,反选,不选,批量删除)完整代码详解
2016/11/01 PHP
PHP实现的各类hash算法长度及性能测试实例
2017/08/27 PHP
Laravel框架实现利用监听器进行sql语句记录功能
2018/06/06 PHP
PHP中PCRE正则解析代码详解
2019/04/26 PHP
php生成短网址/短链接原理和用法实例分析
2020/05/29 PHP
Cookie 小记
2010/04/01 Javascript
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
2010/05/31 Javascript
jquery使用slideDown实现模块缓慢拉出效果的方法
2015/03/27 Javascript
深入理解JS中的substr和substring
2016/04/26 Javascript
vue.js通过自定义指令实现数据拉取更新的实现方法
2016/10/18 Javascript
微信小程序 摇一摇抽奖简单实例实现代码
2017/01/09 Javascript
原生JS实现网页手机音乐播放器 歌词同步播放的示例
2018/02/02 Javascript
微信小程序form表单组件示例代码
2018/07/15 Javascript
从局部变量和全局变量开始全面解析Python中变量的作用域
2016/06/16 Python
python字符串,数值计算
2016/10/05 Python
基于Django的ModelForm组件(详解)
2017/12/07 Python
Python向Excel中插入图片的简单实现方法
2018/04/24 Python
python爬取网页内容转换为PDF文件
2020/07/28 Python
对Python中列表和数组的赋值,浅拷贝和深拷贝的实例讲解
2018/06/28 Python
Python数据处理篇之Sympy系列(五)---解方程
2019/10/12 Python
python Canny边缘检测算法的实现
2020/04/24 Python
解决在keras中使用model.save()函数保存模型失败的问题
2020/05/21 Python
python 两种方法删除空文件夹
2020/09/29 Python
Html5 localStorage入门教程
2018/04/26 HTML / CSS
数以千计的折扣工业产品:ESE Direct
2018/05/20 全球购物
屈臣氏马来西亚官网:Watsons马来西亚
2019/06/15 全球购物
咖啡书吧创业计划书
2014/01/13 职场文书
新闻专业毕业生英文求职信
2014/03/19 职场文书
出国英文推荐信
2014/05/10 职场文书
初中学校对照检查材料
2014/08/19 职场文书
学校党风廉政建设调研报告
2015/01/01 职场文书
2015年五一劳动节活动总结
2015/02/09 职场文书
幼儿园园长六一致辞
2015/07/31 职场文书