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实现仿微软首页感应鼠标变化滑动窗口效果
Oct 08 Javascript
jQuery实现HTML表格单元格的合并功能
Apr 06 Javascript
node.js中module.exports与exports用法上的区别
Sep 02 Javascript
常用js,css文件统一加载方法(推荐) 并在加载之后调用回调函数
Sep 23 Javascript
jQuery纵向导航菜单效果实现方法
Dec 19 Javascript
JS实现根据密码长度显示安全条功能
Mar 08 Javascript
Angular.JS内置服务$http对数据库的增删改使用教程
May 07 Javascript
微信小程序使用map组件实现解析经纬度功能示例
Jan 22 Javascript
JavaScript中的一些实用小技巧总结
Apr 07 Javascript
Vue 刷新当前路由的实现代码
Sep 26 Javascript
jquery轮播图插件使用方法详解
Jul 31 jQuery
微信小程序中data-key属性之数据传输(经验总结)
Aug 22 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
使用apache模块rewrite_module (转)
2007/02/14 PHP
基于PHP一些十分严重的缺陷详解
2013/06/03 PHP
浅析Yii2缓存的使用
2016/05/10 PHP
PHP简单遍历对象示例
2016/09/28 PHP
thinkphp实现附件上传功能
2017/05/26 PHP
PHP验证类的封装与使用方法详解
2019/01/10 PHP
nginx 设置多个站跨域
2021/03/09 Servers
JavaScript入门教程 Cookies
2009/01/31 Javascript
jquery遍历input取得input的name
2009/04/27 Javascript
鼠标移入移出事件改变图片的分辨率的两种方法
2013/12/17 Javascript
node.js [superAgent] 请求使用示例
2015/03/13 Javascript
如何用jQuery实现ASP.NET GridView折叠伸展效果
2015/09/26 Javascript
jQuery实现的点赞随机数字显示动画效果(附在线演示与demo源码下载)
2015/12/31 Javascript
完善的jquery处理机制
2016/02/21 Javascript
AngularJs基本特性解析(一)
2016/07/21 Javascript
常用Javascript函数与原型功能收藏(必看篇)
2016/10/09 Javascript
jQuery tip提示插件(实例分享)
2017/04/28 jQuery
JavaScript 异步调用
2017/10/25 Javascript
php中and 和 &amp;&amp;出坑指南
2018/07/13 Javascript
nodejs 使用nodejs-websocket模块实现点对点实时通讯
2018/11/28 NodeJs
自定义Vue组件打包、发布到npm及使用教程
2019/05/22 Javascript
编写更好的JavaScript条件式和匹配条件的技巧(小结)
2019/06/27 Javascript
Python 元类使用说明
2009/12/18 Python
在Python中操作日期和时间之gmtime()方法的使用
2015/05/22 Python
20招让你的Python飞起来!
2016/09/27 Python
详解Django之admin组件的使用和源码剖析
2018/05/04 Python
详解python中sort排序使用
2019/03/23 Python
Python学习笔记之lambda表达式用法详解
2019/08/08 Python
python实现的爬取电影下载链接功能示例
2019/08/26 Python
css3一款3D字体带阴影效果的实现步骤
2013/03/20 HTML / CSS
CSS3实现歌词进度文字颜色填充变化动态效果的思路详解
2020/06/02 HTML / CSS
农村党支部书记四风问题个人对照检查材料
2014/09/21 职场文书
车辆委托书范本
2014/10/05 职场文书
2015毕业生自我评价范文
2015/03/02 职场文书
综合办公室岗位职责
2015/04/11 职场文书
vue前端工程的搭建
2021/03/31 Vue.js