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 数值型和字符串型之间的转换
Jul 25 Javascript
javascript 面向对象,实现namespace,class,继承,重载
Oct 29 Javascript
如何让div span等元素能响应键盘事件操作指南
Nov 13 Javascript
jquery动态改变onclick属性导致失效的问题解决方法
Dec 04 Javascript
js函数定时器实现定时读取系统实时连接数
Apr 30 Javascript
快速实现jQuery多级菜单效果
Feb 01 Javascript
AngularJS路由删除#符号解决的办法
Sep 28 Javascript
Vue props用法详解(小结)
Jul 03 Javascript
JavaScript数组方法的错误使用例子
Sep 13 Javascript
Vue 理解之白话 getter/setter详解
Apr 16 Javascript
vue+element-ui JYAdmin后台管理系统模板解析
Jul 28 Javascript
详解JavaScript 的执行机制
Sep 18 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
Laravel5中contracts详解
2015/03/02 PHP
PHP实现的贪婪算法实例
2017/10/17 PHP
PHP扩展安装方法步骤解析
2020/11/24 PHP
基于jquery的一个简单的脚本验证插件
2010/04/05 Javascript
javascript中interval与setTimeOut的区别示例介绍
2014/03/14 Javascript
如何根据百度地图计算出两地之间的驾驶距离(两种语言js和C#)
2015/10/29 Javascript
浅析jQuery移动开发中内联按钮和分组按钮的编写
2015/12/04 Javascript
JavaScript实现广告弹窗效果
2016/08/09 Javascript
bootstrap datepicker限定可选时间范围实现方法
2016/09/28 Javascript
Angularjs通过指令监听ng-repeat渲染完成后执行脚本的方法
2016/12/31 Javascript
JQuery ZTree使用方法详解
2017/01/07 Javascript
JS中使用gulp实现压缩文件及浏览器热加载功能
2017/07/12 Javascript
Vue-router结合transition实现app前进后退动画切换效果的实例
2017/10/11 Javascript
JS实现的找零张数最小问题示例
2017/11/28 Javascript
javaScript手机号码校验工具类PhoneUtils详解
2017/12/08 Javascript
超出JavaScript安全整数限制的数字计算BigInt详解
2018/06/24 Javascript
ES6知识点整理之函数对象参数默认值及其解构应用示例
2019/04/17 Javascript
vue实现简单的日历效果
2020/09/24 Javascript
微信小程序实现传递多个参数与事件处理
2019/08/12 Javascript
Angular 中使用 FineReport不显示报表直接打印预览
2019/08/21 Javascript
python 中文字符串的处理实现代码
2009/10/25 Python
Python获取好友地区分布及好友性别分布情况代码详解
2019/07/10 Python
django+tornado实现实时查看远程日志的方法
2019/08/12 Python
Python列表操作方法详解
2020/02/09 Python
python pprint模块中print()和pprint()两者的区别
2020/02/10 Python
Python3.9又更新了:dict内置新功能
2020/02/28 Python
CSS3 @media的基本用法总结
2019/09/10 HTML / CSS
英国高档百货连锁店:John Lewis
2017/11/20 全球购物
印度最好的在线药品订购网站:PharmEasy
2018/11/30 全球购物
DataList 能否分页,请问如何实现?
2015/05/03 面试题
计算机专业应届毕业生自荐信
2013/09/26 职场文书
《太阳》教学反思
2014/02/21 职场文书
党员群众路线对照检查材料思想汇报
2014/09/17 职场文书
会计专业求职信范文
2015/03/19 职场文书
python批量更改目录名/文件名的方法
2021/04/18 Python
python b站视频下载的五种版本
2021/05/27 Python