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 相关文章推荐
找到了一篇jQuery与Prototype并存的冲突的解决方法
Aug 29 Javascript
用js实现下载远程文件并保存在本地的脚本
May 06 Javascript
用JQUERY增删元素的代码
Feb 14 Javascript
jquery 获取dom固定元素 添加样式的简单实例
Feb 04 Javascript
禁用页面部分JavaScript不是全部而是部分
Sep 03 Javascript
js实现同一页面多个不同运动效果的方法
Apr 10 Javascript
js实现的Easy Tabs选项卡用法实例
Sep 06 Javascript
jquery采用oop模式class类的使用示例
Jan 22 Javascript
Base64(二进制)图片编码解析及在各种浏览器的兼容性处理
Feb 09 Javascript
Bootstrap table使用方法总结
May 10 Javascript
VUE中v-model和v-for指令详解
Jun 23 Javascript
详解vue.js下引入百度地图jsApi的两种方法
Jul 27 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 var_dump遍历对象属性的函数与应用代码
2010/06/04 PHP
PHP中将字符串转化为整数(int) intval() printf() 性能测试
2020/03/20 PHP
PHP+MySQL投票系统的设计和实现分享
2012/09/23 PHP
php5.3 注意事项说明
2013/07/01 PHP
PHP中each与list用法分析
2016/01/08 PHP
Laravel中使用FormRequest进行表单验证方法及问题汇总
2016/06/19 PHP
ThinkPHP 3使用OSS的方法
2018/07/19 PHP
用JS实现一个页面多个css样式实现
2008/05/29 Javascript
javascript 动态修改样式和层叠样式表代码
2010/04/27 Javascript
Jquery 改变radio/checkbox选中状态,获取选中的值(示例代码)
2013/12/12 Javascript
基于jquery实现图片相关操作(重绘、获取尺寸、调整大小、缩放)
2015/12/25 Javascript
基于bootstrap插件实现autocomplete自动完成表单
2016/05/07 Javascript
BootStrap下的弹出框加载select2框架失败的解决方法
2017/08/31 Javascript
详解在vue-cli中使用graphql即vue-apollo的用法
2018/09/08 Javascript
jQuery点击页面其他部分隐藏下拉菜单功能
2018/11/27 jQuery
vue项目首屏打开速度慢的解决方法
2019/03/31 Javascript
小程序接口的promise化的实现方法
2019/12/11 Javascript
vue 微信扫码登录(自定义样式)
2020/01/06 Javascript
python和bash统计CPU利用率的方法
2015/07/10 Python
一个基于flask的web应用诞生 用户注册功能开发(5)
2017/04/11 Python
Python多线程中阻塞(join)与锁(Lock)使用误区解析
2018/04/27 Python
详解django中使用定时任务的方法
2018/09/27 Python
在Python中增加和插入元素的示例
2018/11/01 Python
python3 爬取图片的实例代码
2018/11/06 Python
如何利用Python模拟GitHub登录详解
2019/07/15 Python
django foreignkey外键使用的例子 相当于left join
2019/08/06 Python
pygame实现俄罗斯方块游戏(对战篇1)
2019/10/29 Python
flask 实现token机制的示例代码
2019/11/07 Python
python3注册全局热键的实现
2020/03/22 Python
python2和python3哪个使用率高
2020/06/23 Python
数学专业推荐信范文
2013/11/21 职场文书
校园安全检查制度
2014/02/03 职场文书
结婚保证书范文
2014/04/29 职场文书
2015新年联欢晚会开场白
2014/12/14 职场文书
先进班集体申报材料
2014/12/26 职场文书
2016年学校党支部公开承诺书
2016/03/25 职场文书