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 delete 属性的使用
Oct 08 Javascript
JS保存、读取、换行、转Json报错处理方法
Jun 14 Javascript
JavaScript验证图片类型(扩展名)的函数分享
May 05 Javascript
使用原生js实现页面蒙灰(mask)效果示例代码
Jun 20 Javascript
JavaScript常用的弹出广告及背投广告实现方法
Feb 06 Javascript
JQuery实现带排序功能的权限选择实例
May 18 Javascript
Javascript 动态改变imput type属性
Nov 01 Javascript
vue2 自定义动态组件所遇到的问题
Jun 08 Javascript
JS中touchstart事件与click事件冲突的解决方法
Mar 12 Javascript
使用webpack搭建vue项目及注意事项
Jun 10 Javascript
JS JQuery获取data-*属性值方法解析
Sep 01 jQuery
让Vue响应Map或Set的变化操作
Nov 11 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 cli 方式 在crotab中运行解决
2010/02/08 PHP
php 各种应用乱码问题的解决方法
2010/05/09 PHP
合并ThinkPHP配置文件以消除代码冗余的实现方法
2014/07/22 PHP
PHP中使用Imagick读取pdf并生成png缩略图实例
2015/01/21 PHP
在Mac OS上搭建PHP的Yii框架及相关测试环境
2016/02/14 PHP
window.navigate 与 window.location.href 的使用区别介绍
2013/09/21 Javascript
屏蔽script注入小例子
2013/11/12 Javascript
jQuery中hover方法和toggle方法使用指南
2015/02/27 Javascript
jquery 插件实现多行文本框[textarea]自动高度
2015/03/04 Javascript
AngularJS中实现显示或隐藏动画效果的方式总结
2015/12/31 Javascript
js计算时间差代码【包括计算,天,时,分,秒】
2016/04/26 Javascript
BootStrap入门教程(二)之固定的内置样式
2016/09/19 Javascript
jQuery实现base64前台加密解密功能详解
2017/08/29 jQuery
JavaScript数据结构之双向链表定义与使用方法示例
2017/10/27 Javascript
vue计算属性computed、事件、监听器watch的使用讲解
2019/01/21 Javascript
bootstrap tooltips在 angularJS中的使用方法
2019/04/10 Javascript
前端Electron新手入门教程详解
2019/06/21 Javascript
js get和post请求实现代码解析
2020/02/06 Javascript
webpack+vue-cil 中proxyTable配置接口地址代理操作
2020/07/18 Javascript
Python def函数的定义、使用及参数传递实现代码
2014/08/10 Python
Python操作MongoDB数据库PyMongo库使用方法
2015/04/27 Python
Python的爬虫包Beautiful Soup中用正则表达式来搜索
2016/01/20 Python
Python使用flask框架操作sqlite3的两种方式
2018/01/31 Python
详解Django中类视图使用装饰器的方式
2018/08/12 Python
详解Python 字符串相似性的几种度量方法
2019/08/29 Python
解决django-xadmin列表页filter关联对象搜索问题
2019/11/15 Python
pd.DataFrame统计各列数值多少的实例
2019/12/05 Python
TensorFlow-gpu和opencv安装详细教程
2020/06/30 Python
基于python模拟bfs和dfs代码实例
2020/11/19 Python
python 装饰器重要在哪
2021/02/14 Python
HTML5 与 XHTML2
2008/10/17 HTML / CSS
小学美术教学反思
2014/02/01 职场文书
法制宣传标语集锦
2014/06/25 职场文书
职工年度考核评语
2014/12/31 职场文书
2015年学校安全管理工作总结
2015/05/11 职场文书
Python中json.load()和json.loads()有哪些区别
2021/06/07 Python