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 相关文章推荐
javascript 事件处理、鼠标拖动效果实现方法详解
May 11 Javascript
js特效,页面下雪的小例子
Jun 17 Javascript
js中settimeout方法加参数的使用实例
Feb 27 Javascript
文本域中换行符的替换示例
Mar 04 Javascript
javascript中实现兼容JAVA的hashCode算法代码分享
Aug 11 Javascript
jQuery自定义滚动条完整实例
Jan 08 Javascript
浅谈javascript中的Function和Arguments
Aug 30 Javascript
JS遍历对象属性的方法示例
Jan 10 Javascript
javascript实现下雨效果
Mar 27 Javascript
jQuery回调方法使用示例
Jun 26 jQuery
layui从数据库中获取复选框的值并默认选中方法
Aug 15 Javascript
菊花转动的jquery加载动画效果
Aug 19 jQuery
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中创建图像并绘制文字的例子
2014/11/19 PHP
php获取远程图片并下载保存到本地的方法分析
2016/10/08 PHP
CI框架实现优化文件上传及多文件上传的方法
2017/01/04 PHP
js调用后台servlet方法实例
2013/06/09 Javascript
js常用数组操作方法简明总结
2014/06/20 Javascript
浅析Node.js中使用依赖注入的相关问题及解决方法
2015/06/24 Javascript
JS实现选择TextArea内文本的方法
2015/08/03 Javascript
详解WordPress开发中get_current_screen()函数的使用
2016/01/11 Javascript
node.js中实现kindEditor图片上传功能的方法教程
2017/04/26 Javascript
ES6 javascript中class静态方法、属性与实例属性用法示例
2017/10/30 Javascript
百度地图去掉marker覆盖物或者去掉maker的label文字方法
2018/01/26 Javascript
JS实现百度网盘任意文件强制下载功能
2018/08/31 Javascript
vue+Vue Router多级侧导航切换路由(页面)的实现代码
2018/12/20 Javascript
python3实现ftp服务功能(服务端 For Linux)
2017/03/24 Python
Python面向对象特殊成员
2017/04/24 Python
Python实现的矩阵类实例
2017/08/22 Python
Python编程实现从字典中提取子集的方法分析
2018/02/09 Python
查看django版本的方法分享
2018/05/14 Python
python3+selenium实现126邮箱登陆并发送邮件功能
2019/01/23 Python
Python实现Restful API的例子
2019/08/31 Python
postman传递当前时间戳实例详解
2019/09/14 Python
django从后台返回html代码的实例
2020/03/11 Python
Python如何脚本过滤文件中的注释
2020/05/27 Python
pytorch 计算ConvTranspose1d输出特征大小方式
2020/06/23 Python
Python创建临时文件和文件夹
2020/08/05 Python
博朗(Braun)俄罗斯官方商店:德国小家电品牌
2019/09/24 全球购物
护理专业毕业生自我鉴定
2013/10/08 职场文书
自考生毕业自我鉴定
2013/10/10 职场文书
心碎乌托邦的创业计划书范文
2013/12/26 职场文书
写自荐信要注意什么
2013/12/26 职场文书
工程招投标邀请书
2014/01/26 职场文书
2014年向国旗敬礼活动方案
2014/09/27 职场文书
明星邀请函
2015/02/02 职场文书
教师个人年终总结
2015/02/11 职场文书
计划生育目标责任书
2015/05/09 职场文书
python数据库批量插入数据的实现(executemany的使用)
2021/04/30 Python