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 Date对象使用总结
May 14 Javascript
JavaScript字符串String和Array操作的有趣方法
Dec 18 Javascript
js中如何把字符串转化为对象、数组示例代码
Jul 17 Javascript
document.documentElement和document.body区别介绍
Sep 16 Javascript
jquery序列化表单去除指定元素示例代码
Apr 10 Javascript
打造个性化的功能强大的Jquery虚拟键盘(VirtualKeyboard)
Oct 11 Javascript
js读取cookie方法总结
Oct 31 Javascript
JavaScript html5 canvas绘制时钟效果
Mar 01 Javascript
AngularJS 避繁就简的路由
Jul 01 Javascript
纯JS焦点图特效实例(可一个页面多用)
Dec 07 Javascript
解决layui checkbox 提交多个值的问题
Sep 02 Javascript
vue 路由守卫(导航守卫)及其具体使用
Feb 25 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
《超神学院》霸气归来, 天使彦上演维多利亚的秘密
2020/03/02 国漫
php压缩和解压缩字符串的方法
2015/03/14 PHP
php通过curl模拟登陆DZ论坛
2015/05/11 PHP
WordPress开发中短代码的实现及相关函数使用技巧
2016/01/05 PHP
jQuery的强大选择器小结
2009/12/27 Javascript
js 通用javascript函数库整理
2011/08/14 Javascript
关于jQuery新的事件绑定机制on()的使用技巧
2013/04/26 Javascript
jQuery函数map()和each()介绍及异同点分析
2014/11/08 Javascript
js实现键盘上下左右键选择文字并显示在文本框的方法
2015/05/07 Javascript
基于javascript简单实现对身份证校验
2021/01/25 Javascript
jQuery插件扩展实例【添加回调函数】
2016/11/26 Javascript
Vue + Webpack + Vue-loader学习教程之相关配置篇
2017/03/14 Javascript
vue cli构建的项目中请求代理与项目打包问题
2018/02/26 Javascript
Vue中的$set的使用实例代码
2018/10/08 Javascript
教你完全理解ReentrantLock重入锁
2019/06/03 Javascript
javascript实现自由编辑图片代码详解
2019/06/21 Javascript
通过js实现压缩图片上传功能
2020/02/25 Javascript
js实现的订阅发布者模式简单示例
2020/03/14 Javascript
在nodejs中创建child process的方法
2021/01/26 NodeJs
[00:50]深扒TI7聊天轮盘语音出处6
2017/05/11 DOTA
Python文档生成工具pydoc使用介绍
2015/06/02 Python
使用pyecharts无法import Bar的解决方案
2020/04/23 Python
python requests 使用快速入门
2017/08/31 Python
numpy中的高维数组转置实例
2018/04/17 Python
python 函数中的内置函数及用法详解
2019/07/02 Python
如何用Python来理一理红楼梦里的那些关系
2019/08/14 Python
python定位xpath 节点位置的方法
2019/08/27 Python
解决python虚拟环境切换无效的问题
2020/04/30 Python
4款Python 类型检查工具,你选择哪个呢?
2020/10/30 Python
基于python实现监听Rabbitmq系统日志代码示例
2020/11/28 Python
优秀家长事迹材料
2014/05/17 职场文书
爬山的活动方案
2014/08/16 职场文书
信息与工商管理职业规划范文:为梦想而搏击
2014/09/11 职场文书
“九一八事变纪念日”国旗下讲话稿
2014/09/14 职场文书
毕业实习单位意见
2015/06/04 职场文书
军训心得体会范文(2016最新篇)
2016/01/11 职场文书