jQuery实现带滚动导航效果的全屏滚动相册实例


Posted in Javascript onJune 19, 2015

本文实例讲述了jQuery实现带滚动导航效果的全屏滚动相册。分享给大家供大家参考。具体如下:

运行效果图如下:

jQuery实现带滚动导航效果的全屏滚动相册实例

主要代码如下:

$(function() {
//加载时的图片
var $loader= $('#st_loading');
//获取的ul元素
var $list= $('#st_nav');
//当前显示的图片
var $currImage = $('#st_main').children('img:first');
//加载当前的图片
//同时显示导航的项
$('<img>').load(function(){
$loader.hide();
$currImage.fadeIn(3000);
//滑出导航
setTimeout(function(){
$list.animate({'left':'0px'},500);
},
1000);
}).attr('src',$currImage.attr('src'));
//计算出将被显示的略缩图所在的div元素的宽度
buildThumbs();
function buildThumbs(){
$list.children('li.album').each(function(){
var $elem = $(this);
var $thumbs_wrapper = $elem.find('.st_thumbs_wrapper');
var $thumbs = $thumbs_wrapper.children(':first');
//每张略缩图占有180像素的宽度和3像素的间距(margin)
var finalW = $thumbs.find('img').length * 183;
$thumbs.css('width',finalW + 'px');
//是这元素具有滚动性
makeScrollable($thumbs_wrapper,$thumbs);
});
}
//点击菜单项目的时候(向上向下箭头切换)
//使略缩图的div层显示和隐藏当前的
//打开菜单(如果有的话)
$list.find('.st_arrow_down').live('click',function(){
var $this = $(this);
hideThumbs();
$this.addClass('st_arrow_up').removeClass('st_arrow_down');
var $elem = $this.closest('li');
$elem.addClass('current').animate({'height':'170px'},200);
var $thumbs_wrapper = $this.parent().next();
$thumbs_wrapper.show(200);
});
$list.find('.st_arrow_up').live('click',function(){
var $this = $(this);
$this.addClass('st_arrow_down').removeClass('st_arrow_up');
hideThumbs();
});
//点击略缩图,改变大的图片
$list.find('.st_thumbs img').bind('click',function(){
var $this = $(this);
$loader.show();
$('<img class="st_preview"/>').load(function(){
var $this = $(this);
var $currImage = $('#st_main').children('img:first');
$this.insertBefore($currImage);
$loader.hide();
$currImage.fadeOut(2000,function(){
$(this).remove();
});
}).attr('src',$this.attr('alt'));
}).bind('mouseenter',function(){
$(this).stop().animate({'opacity':'1'});
}).bind('mouseleave',function(){
$(this).stop().animate({'opacity':'0.7'});
});
//隐藏当前已经打开了的菜单的函数
function hideThumbs(){
$list.find('li.current')
 .animate({'height':'50px'},400,function(){
$(this).removeClass('current');
 })
 .find('.st_thumbs_wrapper')
 .hide(200)
 .andSelf()
 .find('.st_link span')
 .addClass('st_arrow_down')
 .removeClass('st_arrow_up');
}
//是当前的略缩图div层滚动
//当鼠标移至菜单层的时候会自动地进行滚动
function makeScrollable($outer, $inner){
var extra = 800;
//获取菜单的宽度
var divWidth = $outer.width();
//移除滚动条
$outer.css({
overflow: 'hidden'
});
//查找容器上的最后一张图片
var lastElem = $inner.find('img:last');
$outer.scrollLeft(0);
//当用户鼠标离开菜单的时候
$outer.unbind('mousemove').bind('mousemove',function(e){
var containerWidth = lastElem[0].offsetLeft + lastElem.outerWidth() + 2*extra;
var left = (e.pageX - $outer.offset().left) * (containerWidth-divWidth) / divWidth - extra;
$outer.scrollLeft(left);
});
}
});

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

Javascript 相关文章推荐
encode脚本和normal脚本混用的问题与解决方法
Mar 08 Javascript
js有序数组的连接问题
Oct 01 Javascript
运用JQuery的toggle实现网页加载完成自动弹窗
Mar 18 Javascript
javascript event在FF和IE的兼容传参心得(绝对好用)
Jul 10 Javascript
jQuery中:has选择器用法实例
Dec 30 Javascript
Javascript中arguments用法实例分析
Jun 13 Javascript
Bootstrap多级导航栏(级联导航)的实现代码
Mar 08 Javascript
node.js cookie-parser之parser.js
Jun 06 Javascript
js实现交通灯效果
Jan 13 Javascript
Vue.js项目实战之多语种网站的功能实现(租车)
Aug 07 Javascript
Vue 自定义标签的src属性不能使用相对路径的解决
Sep 17 Javascript
JS实现简单九宫格抽奖
Jun 28 Javascript
jquery实现的代替传统checkbox样式插件
Jun 19 #Javascript
JQuery实现的图文自动轮播效果插件
Jun 19 #Javascript
移除AngularJS下URL中的#字符的方法
Jun 19 #Javascript
使用AngularJS创建单页应用的编程指引
Jun 19 #Javascript
使用AngularJS实现可伸缩的页面切换的方法
Jun 19 #Javascript
使用AngularJS实现表单向导的方法
Jun 19 #Javascript
举例详解AngularJS中ngShow和ngHide的使用方法
Jun 19 #Javascript
You might like
php实现的在线人员函数库
2008/04/09 PHP
php在项目中寻找代码的坏味道(综艺命名)
2012/07/19 PHP
新手菜鸟必读:session与cookie的区别
2013/08/22 PHP
提高PHP性能的编码技巧以及性能优化详细解析
2013/08/24 PHP
YII视图整合kindeditor扩展的方法
2016/07/13 PHP
用JavaScript获取网页中的js、css、Flash等文件
2006/12/20 Javascript
基于SVG的web页面图形绘制API介绍及编程演示
2013/06/28 Javascript
JavaScript动态改变HTML页面元素例如添加或删除
2014/08/10 Javascript
用简洁的jQuery方法toggleClass实现隔行换色
2014/10/22 Javascript
浅谈Javascript变量作用域问题
2014/12/16 Javascript
javascript设计模式之中介者模式Mediator
2014/12/30 Javascript
js验证身份证号有效性并提示对应信息
2015/10/19 Javascript
JavaScript简单实现弹出拖拽窗口(二)
2016/06/17 Javascript
jQuery的三种bind/One/Live/On事件绑定使用方法
2017/02/23 Javascript
详解nodejs微信公众号开发——4.自动回复各种消息
2017/04/11 NodeJs
js实现弹出框的拖拽效果实例代码详解
2019/04/16 Javascript
ES6使用新特性Proxy实现的数据绑定功能实例
2020/05/11 Javascript
JS简易计算器实例讲解
2020/06/30 Javascript
在vue-cli3中使用axios获取本地json操作
2020/07/30 Javascript
python 切片和range()用法说明
2013/03/24 Python
python 平衡二叉树实现代码示例
2018/07/07 Python
PyQt4实时显示文本内容GUI的示例
2019/06/14 Python
python中 * 的用法详解
2019/07/10 Python
Python Collatz序列实现过程解析
2019/10/12 Python
Python中使用filter过滤列表的一个小技巧分享
2020/05/02 Python
python中类与对象之间的关系详解
2020/12/16 Python
MVMT手表官方网站:时尚又实惠的高品质手表
2016/12/04 全球购物
运行时异常与一般异常有何异同?
2014/01/05 面试题
什么是抽象
2015/12/13 面试题
机电专业毕业生求职信
2013/10/27 职场文书
市场营销专科应届生求职信
2013/11/24 职场文书
《雾凇》教学反思
2014/02/17 职场文书
岗位廉洁从政承诺书
2014/03/27 职场文书
事业单位竞聘上岗实施方案
2014/03/28 职场文书
2014村党支部书记党建工作汇报材料
2014/11/02 职场文书
经理岗位职责范本
2015/04/15 职场文书