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 相关文章推荐
SpringMVC返回json数据的三种方式
Dec 10 Javascript
第二章之Bootstrap 页面排版样式
Apr 25 Javascript
前端程序员必须知道的高性能Javascript知识
Aug 24 Javascript
jQuery实现底部浮动窗口效果
Sep 07 Javascript
vue实现可增删查改的成绩单
Oct 27 Javascript
Bootstrap基本插件学习笔记之折叠(22)
Dec 08 Javascript
JavaScript中的toString()和toLocaleString()方法的区别
Feb 15 Javascript
vue2+el-menu实现路由跳转及当前项的设置方法实例
Nov 07 Javascript
webpack@v4升级踩坑(小结)
Oct 08 Javascript
Vue+Element实现动态生成新表单并添加验证功能
May 23 Javascript
JS实现移动端双指缩放和旋转方法
Dec 13 Javascript
vue使用openlayers实现移动点动画
Sep 24 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内核探索:变量概述
2014/01/30 PHP
php生成短网址示例
2014/05/05 PHP
PHP Session机制简介及用法
2014/08/19 PHP
PHP控制前台弹出对话框的实现方法
2016/08/21 PHP
php基于协程实现异步的方法分析
2019/07/17 PHP
js cookies实现简单统计访问次数
2009/11/24 Javascript
JavaScript 5 新增 Array 方法实现介绍
2012/02/06 Javascript
JS常用表单验证方法总结
2014/05/22 Javascript
jquery操作select方法汇总
2015/02/05 Javascript
跟我学习javascript的异步脚本加载
2015/11/20 Javascript
浅析jQuery 3.0中的Data
2016/06/14 Javascript
JS遍历ul下的li点击弹出li的索引的实现方法
2016/09/19 Javascript
setTimeout函数的神奇使用
2017/02/26 Javascript
基于vue2.0+vuex的日期选择组件功能实现
2017/03/13 Javascript
基于vue实现分页效果
2017/11/06 Javascript
vue 插值 v-once,v-text, v-html详解
2018/01/19 Javascript
微信小程序-form表单提交代码实例
2019/04/29 Javascript
vue双向绑定数据限制长度的方法
2019/11/04 Javascript
Python实现的摇骰子猜大小功能小游戏示例
2017/12/18 Python
python中找出numpy array数组的最值及其索引方法
2018/04/17 Python
使用 Python 处理 JSON 格式的数据
2019/07/22 Python
python实现简单银行管理系统
2019/10/25 Python
python except异常处理之后不退出,解决异常继续执行的实现
2020/04/25 Python
Python定时任务框架APScheduler原理及常用代码
2020/10/05 Python
Python如何实现感知器的逻辑电路
2020/12/25 Python
以设计师精品品质提供快速时尚:Mostata
2019/05/10 全球购物
NFL官方在线商店:NFLShop
2020/07/29 全球购物
出纳岗位职责
2013/11/09 职场文书
公务员培训自我鉴定
2014/02/01 职场文书
个性与发展自我评价
2014/02/11 职场文书
园林技术个人的自我评价
2014/02/15 职场文书
幼儿园教师自我鉴定
2014/03/20 职场文书
医药公司采购员岗位职责
2014/09/12 职场文书
《亲亲我的妈妈》观后感(3篇)
2019/09/26 职场文书
导游词之上海豫园
2019/10/24 职场文书
Java循环队列与非循环队列的区别总结
2021/06/22 Java/Android