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 图像裁剪插件Jcrop的简单使用
May 22 Javascript
javascript 定义新对象方法
Feb 20 Javascript
自己动手开发jQuery插件教程
Aug 25 Javascript
jquery实现省市select下拉框的替换(示例代码)
Feb 22 Javascript
jquery attr方法获取input的checked属性问题
May 26 Javascript
jquery动态加载js/css文件方法(自写小函数)
Oct 11 Javascript
Angularjs中的ui-bootstrap的使用教程
Feb 19 Javascript
jQuery设计思想
Mar 07 Javascript
Javascript循环删除数组中元素的几种方法示例
May 18 Javascript
JS设计模式之单例模式(一)
Sep 29 Javascript
原生js添加一个或多个类名的方法分析
Jul 30 Javascript
Vue之封装公用变量以及实现方式
Jul 31 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
dede3.1分页文字采集过滤规则详说(图文教程)续二
2007/04/03 PHP
PHP 工厂模式使用方法
2010/05/18 PHP
在php和MySql中计算时间差的方法详解
2015/03/27 PHP
php实现可逆加密的方法
2015/08/11 PHP
PHP接入微信H5支付的方法示例
2019/10/28 PHP
二级域名转向类
2006/11/09 Javascript
encode脚本和normal脚本混用的问题与解决方法
2007/03/08 Javascript
Convert Seconds To Hours
2007/06/16 Javascript
js 新浪的一个图片播放图片轮换效果代码
2008/07/15 Javascript
javascript dom代码应用 简单的相册[firefox only]
2010/06/12 Javascript
详谈 Jquery Ajax异步处理Json数据.
2011/09/09 Javascript
js改变img标签的src属性在IE下没反应的解决方法
2013/07/23 Javascript
js使用正则实现ReplaceAll全部替换的方法
2014/08/22 Javascript
babel基本使用详解
2017/02/17 Javascript
原生JS实现隐藏显示图片 JS实现点击切换图片效果
2021/01/27 Javascript
layer插件select选中默认值的方法
2018/08/14 Javascript
基于vue-upload-component封装一个图片上传组件的示例
2018/10/16 Javascript
JavaScript实现新年倒计时效果
2018/11/17 Javascript
Javascript和jquery在selenium的使用过程
2019/10/31 jQuery
js利用iframe实现选项卡效果
2020/08/09 Javascript
Python time模块详解(常用函数实例讲解,非常好)
2014/04/24 Python
Python基于Socket实现的简单聊天程序示例
2017/08/05 Python
Python Selenium截图功能实现代码
2020/04/26 Python
使用Python项目生成所有依赖包的清单方式
2020/07/13 Python
python实现发送QQ邮件(可加附件)
2020/12/23 Python
CSS3利用text-shadow属性实现多种效果的文字样式展现方法
2016/08/25 HTML / CSS
canvas里面如何基于随机点绘制一个多边形的方法
2018/06/13 HTML / CSS
加拿大票务网站:Ticketmaster加拿大
2017/07/17 全球购物
英国在线潜水商店:Simply Scuba
2019/03/25 全球购物
硕士研究生自我鉴定
2013/11/08 职场文书
大学生职业生涯规划书范文
2014/01/14 职场文书
小学生家长寄语
2014/04/02 职场文书
项目采购员岗位职责
2014/04/15 职场文书
单方离婚协议书范本2014
2014/10/28 职场文书
干货!开幕词的写作方法
2019/04/02 职场文书
MySQL库表名大小写的选择
2021/06/05 MySQL