jQuery实现带滚动导航效果的全屏滚动相册实例

 更新时间:2015年06月19日 15:37:58   作者:任意球  
这篇文章主要介绍了jQuery实现带滚动导航效果的全屏滚动相册,涉及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程序设计有所帮助。

相关文章

  • jquery给元素设置属性的简单方法

    jquery给元素设置属性的简单方法

    jquery是一个js插件库,现在很多前端开发人员都是使用它来操作dom的,对于dom操作,jquery提供了很多方法,这篇文章主要给大家介绍了关于jquery给元素设置属性的简单方法,需要的朋友可以参考下
    2023-06-06
  • jquery cookie的用法总结

    jquery cookie的用法总结

    本篇文章主要是对jquery cookie的用法进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2013-11-11
  • jQuery+ajax实现无刷新级联菜单示例

    jQuery+ajax实现无刷新级联菜单示例

    这篇文章主要介绍了jQuery+ajax实现无刷新级联菜单示例,代码很完整,也非常实用,有需要的小伙伴可以参考下。
    2015-05-05
  • jquery拖动层效果插件用法实例分析(附demo源码)

    jquery拖动层效果插件用法实例分析(附demo源码)

    这篇文章主要介绍了jquery拖动层效果插件用法,结合实例形式分析了jquery-ui-1.7.2.custom.min.js插件的具体使用技巧,并附带完整demo源码供读者下载参考,需要的朋友可以参考下
    2016-04-04
  • jQuery使用ajax_动力节点Java学院整理

    jQuery使用ajax_动力节点Java学院整理

    这篇文章主要为大家详细介绍了jQuery使用ajax的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • jquery选择器的选择使用及性能介绍

    jquery选择器的选择使用及性能介绍

    从这一讲开始,我们将直正接触一个JQ类库,学习一下JQ的写法,JQ的一些常用的命令等等,今天主要讲的是JQ里的选择器,这也是JQ的一大特点,这从它的名称jQuery中可以看到,主要功力体现在查询上
    2013-01-01
  • JQuery异步加载无限下拉框级联功能实现示例

    JQuery异步加载无限下拉框级联功能实现示例

    这篇文章主要介绍了JQuery异步加载无限下拉框级联功能的实现,需要的朋友可以参考下
    2014-02-02
  • jQuery解决iframe高度自适应代码

    jQuery解决iframe高度自适应代码

    网上查了好多用着都不行,自己搞定了:在包含iframe的页面中加入以下脚本,基本思想是在iframe加载内容后重新设置高度,下面代码尽在IE6中用过,没在其他浏览器中测试。
    2009-12-12
  • 『jQuery』名称冲突使用noConflict方法解决

    『jQuery』名称冲突使用noConflict方法解决

    jQuery 使用 $ 符号作为 jQuery 的简介方式。某些其他 JavaScript 库中的函数(比如 Prototype)同样使用 $ 符号,这样就会发生名称冲突,使用名为 noConflict() 的方法来解决该问题
    2013-04-04
  • JQuery的attr 与 val区别

    JQuery的attr 与 val区别

    这篇文章主要介绍了JQuery的attr 与 val区别的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下
    2016-06-06

最新评论