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的ajax功能实现web service的json转化
Aug 29 Javascript
JavaScript定义类或函数的几种方式小结
Jan 09 Javascript
JQUERY对单选框(radio)操作的小例子
Apr 25 Javascript
jquery教程限制文本框只能输入数字和小数点示例分享
Jan 13 Javascript
javascript实现图片循环渐显播放的方法
Feb 24 Javascript
Bootstrap每天必学之工具提示(Tooltip)插件
Apr 26 Javascript
解决前端跨域问题方案汇总
Nov 20 Javascript
JavaScript数组_动力节点Java学院整理
Jun 26 Javascript
Vue中div contenteditable 的光标定位方法
Aug 25 Javascript
Node.js事件的正确使用方法
Apr 05 Javascript
vue 解决computed修改data数据的问题
Nov 06 Javascript
JSON stringify方法原理及实例解析
Oct 23 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
Classes and Objects in PHP5-面向对象编程 [1]
2006/10/09 PHP
zf框架db类的分页示例分享
2014/03/14 PHP
PHPstorm启用自动换行的方法详解(IDE)
2020/09/17 PHP
通用于ie和firefox的函数 GetCurrentStyle (obj, prop)
2006/12/27 Javascript
Extjs中DisplayField的日期或者数字格式化扩展
2010/09/03 Javascript
javascript 获取网页标题代码实例
2014/01/22 Javascript
排序算法的javascript实现与讲解(99js手记)
2014/09/28 Javascript
nodejs简单实现中英文翻译
2015/05/04 NodeJs
Node.js项目中调用JavaScript的EJS模板库的方法
2016/03/11 Javascript
移动端jQuery修正Web页面滑动时div问题的两则实例
2016/05/30 Javascript
浅谈Angular中ngModel的$render
2016/10/24 Javascript
基于javascript的Form表单验证
2016/12/29 Javascript
bootstrap+jQuery实现的动态进度条功能示例
2017/05/25 jQuery
基于Vue开发数字输入框组件
2017/12/19 Javascript
vue项目中jsonp跨域获取qq音乐首页推荐问题
2018/05/30 Javascript
JavaScript设计模式之装饰者模式定义与应用示例
2018/07/25 Javascript
LayUI表格批量删除方法
2018/08/15 Javascript
使用vue.js在页面内组件监听scroll事件的方法
2018/09/11 Javascript
Vue element-ui父组件控制子组件的表单校验操作
2020/07/17 Javascript
vue axios封装httpjs,接口公用配置拦截操作
2020/08/11 Javascript
利用PyInstaller将python程序.py转为.exe的方法详解
2017/05/03 Python
python dataframe astype 字段类型转换方法
2018/04/11 Python
tensorflow 加载部分变量的实例讲解
2018/07/27 Python
Python 中list ,set,dict的大规模查找效率对比详解
2019/10/11 Python
关于Python Tkinter Button控件command传参问题的解决方式
2020/03/04 Python
python3读取autocad图形文件.py实例
2020/06/05 Python
html5指南-6.如何创建离线web应用程序实现离线访问
2013/01/07 HTML / CSS
HTML table 表格边框的实现思路
2019/10/12 HTML / CSS
小女主人连衣裙:Little Mistress
2017/07/10 全球购物
解除劳动合同协议书
2014/04/14 职场文书
《孔繁森》教学反思
2014/04/17 职场文书
建国大业电影观后感
2015/06/01 职场文书
选调生挂职锻炼工作总结
2015/10/23 职场文书
React 并发功能体验(前端的并发模式)
2021/07/01 Javascript
CDPR谈《巫师》新作用虚幻5原因 称不会为Epic独占
2022/04/06 其他游戏
Mysql表数据比较大情况下修改添加字段的方法实例
2022/06/28 MySQL