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 相关文章推荐
Jquery图形报表插件 jqplot简介及参数详解
Oct 10 Javascript
Js日期选择器并自动加入到输入框中示例代码
Aug 02 Javascript
JavaScript设置首页和收藏页面的小例子
Nov 11 Javascript
ExtJS中设置下拉列表框不可编辑的方法
May 07 Javascript
Javascript正则控制文本框只能输入整数或浮点数
Sep 02 Javascript
纯js实现重发验证码按钮倒数功能
Apr 21 Javascript
全面解析Bootstrap布局组件应用
Feb 22 Javascript
IE和Firefox之间在JavaScript语法上的差异
Apr 22 Javascript
微信小程序实现顶部普通选项卡效果(非swiper)
Jun 19 Javascript
React 项目迁移 Webpack Babel7的实现
Sep 12 Javascript
IE浏览器下JS脚本提交表单后,不能自动提示问题解决方法
Jun 04 Javascript
React配置子路由的实现
Jun 03 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合并数组array_merge函数运算符加号与的区别
2008/10/31 PHP
解析htaccess伪静态的规则
2013/06/18 PHP
php获取淘宝分类id示例
2014/01/16 PHP
解决Codeigniter不能上传rar和zip压缩包问题
2014/03/07 PHP
PHP之图片上传类实例代码(加了缩略图)
2016/06/30 PHP
PHP中include/require/include_once/require_once使用心得
2016/08/28 PHP
Laravel实现定时任务的示例代码
2017/08/10 PHP
PHP实现验证码校验功能
2017/11/16 PHP
PHP里的$_GET数组介绍
2019/03/22 PHP
jquery中dom操作和事件的实例学习-表单验证
2011/11/30 Javascript
Ext4.2的Ext.grid.plugin.RowExpander无法触发事件解决办法
2014/08/15 Javascript
浅谈Sizzle的“编译原理”
2015/04/14 Javascript
基于jQuery实现美观且实用的倒计时实例代码
2015/12/30 Javascript
基于Bootstrap使用jQuery实现输入框组input-group的添加与删除
2016/05/03 Javascript
JS基于正则截取替换特定字符之间字符串操作示例
2017/02/03 Javascript
JS三目运算(三元运算)方法详解
2017/03/01 Javascript
Vue.js 2.5新特性介绍(推荐)
2017/10/24 Javascript
vue路由插件之vue-route
2019/06/13 Javascript
js前端传json后台接收‘‘被转为quot的问题解决
2020/11/12 Javascript
rhythmbox中文名乱码问题解决方法
2008/09/06 Python
python判断windows隐藏文件的方法
2014/03/21 Python
Python random模块(获取随机数)常用方法和使用例子
2014/05/13 Python
python 协程 gevent原理与用法分析
2019/11/22 Python
python函数声明和调用定义及原理详解
2019/12/02 Python
土耳其时尚潮流在线购物网站:Trendyol
2017/10/10 全球购物
世界上第一个水枕头:Mediflow
2018/12/06 全球购物
ShellScript面试题一则-ShellScript编程
2014/03/05 面试题
怎么写有吸引力的自荐信
2013/11/17 职场文书
教师党员公开承诺事项
2014/05/28 职场文书
2014年幼儿园教师工作总结
2014/11/08 职场文书
食品安全责任书范本
2015/05/09 职场文书
小兵张嘎观后感300字
2015/06/03 职场文书
暖春观后感
2015/06/08 职场文书
小学运动会开幕词
2016/03/04 职场文书
css背景和边框标签实例详解
2021/05/21 HTML / CSS
SQL模糊查询报:ORA-00909:参数个数无效问题的解决
2021/06/21 Oracle