`
ydzhony1
  • 浏览: 4498 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

相册原创动画 jquery + gallery photo animation(原创教程)

阅读更多
Srctipt:
主要功能是让图片在相册容器内完整地处理图片间的交递过程;
要求:
1.兼容IE7,8,FF chrome(IE6.抛弃!!!!!别怪我),原创;
2.图片在容器内随着图片大小的变化, 能够自适应, 让图片左右上下居中;
3.当图片还未读取到缓存时, 需要loading过程;
4.用jQuery写gallery插件模块,方便日后扩展,维护;

原码:
Demo : http://www.6yang.net/myjavascriptlib/galleryAnimate/#~



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>gallery photo animation</title>
<link rel="stylesheet" href="css/gallery.css" type="text/css" media="screen" />
<script src="../js/jquery-1.4.2.min.js" type="text/javascript"></script>
<script src="js/gallery.js" type="text/javascript"></script>
</head>

<body>
<div class="gralleryWrap">
    <h2>Gallery animation jQuery Created by jackyang</h2>
    <div class="photoView" id="js_photoView">                              
        <div class="boxNext">
            <a href="#~" class="btnNext"></a>
        </div>
        <div class="boxPrev">
            <a href="#~" class="btnPrev"></a>
        </div>
        <h2 class="title">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. </h2>
        <div class="pic">
            <img src="images/tempGalleryLarge01.jpg" alt="" />
        </div>
    </div>
    <div class="photoThumbsList"  id="js_photoThumbsList">
        <ul>
            <li><a href="#~" class="itemThumb"><div class="active"></div><img src="images/tempGallery01.jpg" alt=""  /></a></li>
            <li><a href="#~" class="itemThumb"><div></div><img src="images/tempGallery02.jpg" alt=""   /></a></li>
            <li><a href="#~" class="itemThumb"><div></div><img src="images/tempGallery03.jpg" alt=""  /></a></li>
            <li><a href="#~" class="itemThumb"><div></div><img src="images/tempGallery04.jpg" alt=""  /></a></li>
            <li><a href="#~" class="itemThumb"><div></div><img src="images/tempGallery05.jpg" alt=""  /></a></li>
            <li><a href="#~" class="itemThumb"><div></div><img src="images/tempGallery06.jpg" alt=""  /></a></li>
            <li><a href="#~" class="itemThumb"><div></div><img src="images/tempGallery07.jpg" alt=""  /></a></li>
            <li><a href="#~" class="itemThumb"><div></div><img src="images/tempGallery08.jpg" alt=""  /></a></li>
            <li><a href="#~" class="itemThumb"><div></div><img src="images/tempGallery09.jpg" alt=""  /></a></li>
        </ul>
    </div>

                      
</div>
</body>
</html>

For javascript

// JavaScript Document
  
(function($){
     //show photo in center
    $.fn.showPhotoCenter = function(){
        return this.each(function(){
            var self = $(this),
                parentDom = self.parent();
            var coorX = (parentDom.width() - self.width())/2;
            var coorY = (parentDom.height() - self.height())/2;
            self.showPanelPosition(coorX, coorY);
        });
    };
    //show panels in position
    $.fn.showPanelPosition = function(x, y){
        return this.each(function(){
            $(this)
                .css({
                    "left": x,
                    "top": y
                })
                .show();
        });
    };
    //loading photo
    jQuery.fn.LoadImage=function(fn){      
        return this.each(function(){
            var self = $(this);
            var src = self.attr("src")
            var img = new Image();
            img.src = src;
            if(img.complete){
                img.width > 0 ? fn.call(img) : '';              
                return;
            }
            self.attr("src","");
            $(img).load(function(){
                self.attr("src",this.src);
                fn.call(img);
            });
          
        });
    }
  
    /**
     * define gallery Photo function
     * @param arrGallery
     * @return void
     */
    $.fn.galleryPhoto = function(arrGallery){
        return this.each(function(){
            var self = $(this),
                iCurrent = 0,
                lenSlide = 0,
                arrTab = $('.itemThumb', self),
                jQ_photoView = $('#js_photoView'),
                jQ_currPic = jQ_photoView.find('.pic'),  
                jQ_currImg = jQ_currPic.find('img'),              
                jQ_currTitle = jQ_photoView.find('.title'),
                jQ_photoViewWrap = $('#js_photoViewWrap');
                
            if(arrTab.length == 0 || jQ_currImg.length == 0){
                return;
            }
          
            init();  
          
          
            $('.btnNext', jQ_photoView).bind('click', function(){
                slideNext();
            });
          
            $('.btnPrev', jQ_photoView).bind('click', function(){  
                slidePrev();
            });
          
            function slideTo(i){
              
            if(i == iCurrent) return;  
                //loading image                                      
                $('.itemThumb div', self).removeClass('active');
                $('.itemThumb div:eq(' + i + ')', self).addClass('active');  
              
                jQ_currImg.attr('src', arrGallery[iCurrent].pic).hide();
                jQ_currTitle.html(arrGallery[iCurrent].title).hide();  
              
                jQ_photoView.hasClass('loading') ? '': jQ_photoView.addClass('loading');
                jQ_currPic.hide();
                jQ_currImg.attr('src', arrGallery[i].pic).LoadImage(function(){
                    self.queue(function(){  
                        jQ_photoView.hasClass('loading') ? jQ_photoView.removeClass('loading') : '';
                        jQ_currPic.show();          
                        setTimeout(function(){
                            jQ_currImg.fadeIn(200);
                            jQ_currTitle.fadeIn(200);
                            jQ_currImg.parent().showPhotoCenter();
                        }, 300);
                              
                        $(this).dequeue();
                    });                      
                });
              
                self.queue(function(){
                    iCurrent = i;
                    $(this).dequeue();                                            
                });  
            }          
      
          
            function slidePrev(){
                var i = iCurrent - 1;
                if(i == -1){
                    i = 0;
                }
                slideTo(i);
            }
      
            function slideNext(){
                var i = iCurrent + 1;
                if(i==lenSlide){
                    i = lenSlide - 1;
                }              
                slideTo(i);
            }
      
            function init(){
                iCurrent = 0;
                lenSlide = arrGallery.length;      
                jQ_currImg.eq(0).show();
              
                $('.itemThumb', self).bind('click', function(){
                    var j = arrTab.index(this);
                  
                    if(jQ_photoViewWrap.length > 0){
                        $('.overlay01').show();
                        jQ_photoViewWrap.showPanelCenter();
                    }                  
                    slideTo(j);
                });
            }
        });
                              
    };
  
})(jQuery);



$(function(){
  
    // defining the garller photo var
    var arrGallery = [
        {'pic': 'images/tempGalleryLarge01.jpg', 'url': '#', 'title': 'Lorem ipsum dolor sit amet1'},
        {'pic': 'images/tempGalleryLarge02.jpg', 'url': '#', 'title': 'Lorem ipsum dolor sit amet2'},
        {'pic': 'images/tempGalleryLarge03.jpg', 'url': '#', 'title': 'Lorem ipsum dolor sit amet3'},
        {'pic': 'images/tempGalleryLarge04.jpg', 'url': '#', 'title': 'Lorem ipsum dolor sit amet4'},
        {'pic': 'images/tempGalleryLarge05.jpg', 'url': '#', 'title': 'Lorem ipsum dolor sit amet5'},
        {'pic': 'images/tempGalleryLarge06.jpg', 'url': '#', 'title': 'Lorem ipsum dolor sit amet6'},
        {'pic': 'images/tempGalleryLarge07.jpg', 'url': '#', 'title': 'Lorem ipsum dolor sit amet7'},
        {'pic': 'images/tempGalleryLarge08.jpg', 'url': '#', 'title': 'Lorem ipsum dolor sit amet8'},
        {'pic': 'images/tempGalleryLarge09.jpg', 'url': '#', 'title': 'Lorem ipsum dolor sit amet9'}
    ],
         jQ_photoThumbsList = $('#js_photoThumbsList'),
        jQ_photoView = $('#js_photoView'),
        jQ_itemThumb = jQ_photoThumbsList.find('.itemThumb');  
  
    if(jQ_photoThumbsList.length > 0){
        // load and fixed the gellary and thumbs
        $(window).load(function(){          
            // display thumbs
            jQ_itemThumb.showPhotoCenter();
            // display photoView
            $('.pic', jQ_photoView).showPhotoCenter();
        });
      
        // return animate gallery-Photo
        jQ_photoThumbsList.galleryPhoto(arrGallery);
    }
  
});



Demo : http://www.6yang.net/myjavascriptlib/galleryAnimate/#~
Created by 6yang.net




Demo : http://www.6yang.net/myjavascriptlib/galleryAnimate/#~
Created by 6yang.net

本文由 站酷网 - 6yang 原创,转载请保留此信息,多谢合作。

访问6yang的个人主页
  • 大小: 126 KB
分享到:
评论

相关推荐

    jQuery+CSS3实现动画相册代码.rar

    jQuery+CSS3实现动画相册代码.rar jQuery+CSS3实现动画相册代码.rar jQuery+CSS3实现动画相册代码.rar jQuery+CSS3实现动画相册代码.rar jQuery+CSS3实现动画相册代码.rar jQuery+CSS3实现动画相册代码.rar jQuery+...

    《jQuery+BootstrapWeb开发案例教程(在线实训版)》案例源码.zip

    《jQuery+Bootstrap Web开发案例教程(在线实训版)》是一本深入浅出的教程,旨在帮助读者掌握使用jQuery和Bootstrap进行高效Web开发的技能。jQuery是JavaScript库中的翘楚,它简化了DOM操作、事件处理、动画效果...

    jQuery+Background+Animation背景过渡插件

    jQuery Background Animation是一款基于jQuery库的背景过渡效果插件,它为网页设计师提供了丰富的动态背景效果,使得网页在用户交互或页面加载时能展现出引人入胜的视觉体验。这款插件通过简单的API调用和自定义选项...

    jQuery+css3水平悬停动画 jQuery+css3水平悬停动画网页特效.zip

    "jQuery+css3水平悬停动画"是一个结合了这两种技术来实现动态效果的实例,主要用于提升用户体验和增强视觉吸引力。下面将详细介绍这个主题涉及的知识点。 首先,jQuery是一个流行的JavaScript库,它简化了...

    数据可视化大屏展示特效实例(jquery+bootstrap+echarts)

    jquery+bootstrap+echarts数据可视化大屏展示特效实例 项目描述: 数据可视化大屏展示用的越来越多,自己也捣鼓做一个。 运行环境: Chrome 项目技术(必填): jquery+bootstrap+echarts

    jQuery+CSS3镜像文字动画垂直导航菜单特效

    本示例中,我们将深入探讨一个结合了jQuery和CSS3技术的创新设计——"jQuery+CSS3镜像文字动画垂直导航菜单特效"。这个特效在用户将鼠标悬停在菜单项上时,会呈现出独特的文字镜像动画效果,为网站增添了一抹现代感...

    JQuery+UI+API 中文 CHM

    JQuery+UI+API 中文 CHM

    基于jquery+css3来实现的超酷相册效果的代码.rar

    这个压缩包文件名为"基于jquery+css3来实现的超酷相册效果的代码.rar",表明它包含了一组编程代码,用于创建具有视觉吸引力的相册展示效果。这种效果通常会涉及动态过渡、滑动、缩放和旋转等动画,以提升用户在浏览...

    Springmvc+maven+ajax+jquery+json+mybatis登录增删改查详细注释

    Springmvc+maven+ajax+jquery+json+mybatis做的登录,注册,增删改查详细注释,大家可以来一下,看看对自己有没有帮助哈,这是我自己一点点的打的,采用MyEclipse 10运行出来.并且付有sql脚本.可直接导入运行.并且经本人...

    jQuery+CSS3个性相片动画电子相册代码

    《jQuery+CSS3个性相片动画电子相册代码解析与应用》 在现代网页设计中,动态效果的应用已经成为提升用户体验的重要手段。其中,利用jQuery和CSS3技术制作的个性化相片动画电子相册,不仅能够展示照片,还能通过...

    jquery绑定 css3 animation-keyframes关键帧动画

    ### 使用jQuery绑定CSS3 Animation-Keyframes关键帧动画 #### 前言 本文将详细介绍如何通过jQuery来控制CSS3中的`animation-keyframes`关键帧动画的启动与停止。这种技术非常实用,尤其当动画需要根据用户的操作...

    Jquery+css3实现弹出层注册特效

    在网页设计和开发中,创建吸引用户的交互效果是至关重要的,而"Jquery+css3实现弹出层注册特效"就是一个实现这种效果的例子。这个项目结合了jQuery库的灵活性和CSS3的新特性,以创建一个动态且用户友好的注册表单。 ...

    10个漂亮登录页面,jquery+css3

    10个漂亮登录页面,jquery+css310个漂亮登录页面,jquery+css310个漂亮登录页面,jquery+css310个漂亮登录页面,jquery+css310个漂亮登录页面,jquery+css310个漂亮登录页面,jquery+css3

    jQuery+CSS3鼠标点击按钮加载动画特效

    "jQuery+CSS3鼠标点击按钮加载动画特效"是一个很好的示例,它结合了JavaScript库jQuery的强大功能与CSS3的新特性,实现了多种动态且美观的按钮加载效果。下面将详细解释这个主题涉及的知识点。 首先,jQuery是一个...

    jQuery+H5结婚倒计时邀请函电子请帖模板.rar

    《jQuery+H5 结婚倒计时邀请函电子请帖模板》 在现代网页设计中,JavaScript、HTML和CSS这三者是构建交互式用户体验的关键技术。本资源“jQuery+H5 结婚倒计时邀请函电子请帖模板”正是一个结合了这些技术的实例,...

    jQuery+css3输入框焦点事件动画特效

    几款简单又好看的jQuery+css3输入框焦点事件动画特效,鼠标点击输入框获取焦点,里面的图标动画展示效果。 调用方法:1、在输入框中加上data-animation="slide"(动画效果,slide可以是其他的,具体参照textbox的css...

    jQuery+CSS3的动画展开收缩搜索框特效.zip

    不错的前端JS特效、页面功能的代码,很适合练习前端的各种特效和功能,也可直接拿来适当调整后使用,用于练手、学习,也是很不错的

    jQuery+CSS3实现类似表单相册无刷新批量删除特效

    "jQuery+CSS3实现类似表单相册无刷新批量删除特效"这个主题,就是针对这一需求,通过结合jQuery JavaScript库和CSS3的强大功能,来创建一个高效、流畅且用户友好的交互式功能。下面将详细介绍这个主题涉及的关键知识...

    jQuery+CSS图片浮动层效果.zip_jQuery+CSS图片浮动层效果

    这个“jQuery+CSS图片浮动层效果”压缩包包含了一个利用jQuery库和CSS样式实现的此类功能的实例。以下是关于这个主题的详细解释。 首先,jQuery是一个广泛使用的JavaScript库,它简化了JavaScript的DOM操作、事件...

    修正多个Bug优美的jquery+xml城市3级联动效果(放在IIS下)

    "修正多个Bug优美的jquery+xml城市3级联动效果(放在IIS下)"这个项目正聚焦于实现这样的功能,它是一个基于jQuery和XML的省市区三级联动选择器,优化了用户体验并解决了已知的问题。 jQuery是一个广泛使用的...

Global site tag (gtag.js) - Google Analytics