`

jQuery的一个插件——d_imagechange

阅读更多
备注:由于不能转载,以下代码是从网站copy过来的
示例:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Demo-图片轮换-D.夏亦知非</title>
<script src="js/jquery-1.3.2.min.js"></script>
<script src="js/jquery.d.imagechange.min.js"></script>
<style>
body{margin:0;padding:0px;}
.title{height:25px;line-height:25px;background-color:#000;color:#FFF;margin:10px 0;padding-left:20px;font-family:"Verdana","宋体";font-size:12px;}
</style>
<script>

// 需要你写的数据
var data = [
        {title:'李彦宏',desc:'立刻加入我们,获取百度之星荣誉称号',src:'img/1.jpg',href:'http://www.baidu.com',target:'_blank'},
        {title:'马云',desc:'立刻加入我们,获取TOP大赛巨额奖项',src:'img/2.jpg'},
        {title:'路飞',desc:'立刻加入我们,寻找伟大航路的宝藏',src:'img/3.jpg'}
];
       
$(document).ready(function(){
        $('#pic1').d_imagechange({
                data:data,
                animateStyle:'o'//默认值'o',可以不写  
        });
       
        $('#pic2').d_imagechange({
                data:data,
                animateStyle:'x'
        });
       
        $('#pic3').d_imagechange({
                data:data,
                animateStyle:'y'
        });
       
        $('#pic4').d_imagechange({
                data:data,
                animateStyle:'show'
        });
       
        $('#pic5').d_imagechange({
                data:data,
                animateStyle:'show-x'
        });
        $('#pic6').d_imagechange({
                data:data,
                animateStyle:'show-y'
        });            
        $('#pic7').d_imagechange({
                data:data,
                animateStyle:'none'
        });    
});
</script>
</head>

<body>
<div class="title">Demo 1 默认效果:渐显 animateStyle:'o'</div>
<div id="pic1" style="width:300px;height:200px;margin-left:20px;">     
</div>
<div class="title">Demo 2 横向滚动效果 animateStyle:'x'</div>
<div id="pic2" style="width:300px;height:200px;margin-left:20px;">     
</div>
<div class="title">Demo 3 纵向滚动效果 animateStyle:'y'</div>
<div id="pic3" style="width:300px;height:200px;margin-left:20px;">     
</div>
<div class="title">Demo 4 原地收缩伸展 animateStyle:'show'</div>
<div id="pic4" style="width:300px;height:200px;margin-left:20px;">     
</div>
<div class="title">Demo 5 横向收缩伸展 animateStyle:'show-x'</div>
<div id="pic5" style="width:300px;height:200px;margin-left:20px;">     
</div>
<div class="title">Demo 6 纵向收缩伸展 animateStyle:'show-y'</div>
<div id="pic6" style="width:300px;height:200px;margin-left:20px;">     
</div>
<div class="title">Demo 7 无动画< animateStyle:'none'</div>
<div id="pic7" style="width:300px;height:200px;margin-left:20px;">     
</div>

</body>

</html>


插件:
/********************************************************************************************************
* D-ImageChange
*----------------------------------------------------------------------------------------------------
* @Desc 图片轮换插件
*----------------------------------------------------------------------------------------------------
* @Author D.夏亦知非
* @Email DeclanZhang@gmail.com
* @QQ 29540200
* @Blog http://onblur.iteye.com
* @Date 2009-10-19
* @Version 1.1
* @JQueryVersion 1.3.2
*
* @update v1.1 增加清空原始内容功能,以免页面加载完成之前显示大片空白
*                 v1.2 修正IE6每次从服务器读取背景图片的BUG
**/

(function($){

jQuery.fn.extend({
      
        d_imagechange:function(setting){
              
                // 修正IE6每次从服务器读取背景图片的BUG
                document.execCommand("BackgroundImageCache", false, true);

                var config = $.extend({
                        bg:true,                                                // 是否背景色
                        title:true,                                             // 是否有标题
                        desc:true,                                              // 是否有描述
                        btn:true,                                               // 是否显示按钮
                        repeat:'no-repeat',                             // 重复规则 'no-repeat' 'repeat-x' 'repeat-y' 'repeat'
                      
                        bgColor:'#000',                                 // 背景色
                        bgOpacity:.5,                                   // 背景透明度
                        bgHeight:40,                                    // 背景高
                      
                        titleSize:14,                                   // 标题文字大小
                        titleFont:'Verdana,宋体',         // 标题文本字体
                        titleColor:'#FFF',                              // 标题文本颜色
                        titleTop:4,                                             // 标题上边距
                        titleLeft:4,                                    // 标题左边距
                      
                        descSize:12,                                    // 描述文字大小
                        descFont:'Verdana,宋体',                  // 描述文本字体
                        descColor:'#FFF',                               // 描述文本颜色
                        descTop:2,                                              // 描述上边距
                        descLeft:4,                                             // 描述左边距
                      
                        btnColor:'#FFF',                                // 按钮颜色1
                        btnOpacity:.5,                                  // 未选中按钮透明度
                        btnFont:'Verdana',                              // 按钮文本字体
                        btnFontSize:12,                                 // 按钮文字大小(注意:Chrome有默认最小字号的限制)
                        btnFontColor:'#000',                    // 按钮文本颜色
                        btnText:true,                                   // 是否显示文本
                        btnWidth:15,                                    // 按钮宽
                        btnHeight:15,                                   // 按钮高
                        btnMargin:4,                                    // 按钮间距
                        btnTop:4,                                               // 按钮上边距
                      
                        playTime:2000,                                  // 轮换间隔时间,单位(毫秒)
                        animateTime:500,                                // 动画执行时间,单位(毫秒)
                        animateStyle:'o',                               // 动画效果:'o':渐显 'x':横向滚动 'y':纵向滚动 'show':原地收缩伸展 'show-x':横向收缩伸展 'show-y':纵向收缩伸展' none':无动画
                        width:300,                                              // 宽, 不设定则从DOM读取
                        height:200                                              // 高, 不设定则从DOM读取
                      
                },setting);
              
                return $(this).each(function(){
                        var _this = $(this);
                        var _w = config.width || _this.width();                 // 宽
                        var _h = config.height || _this.height();               // 高
                        var _n = config.data.length;                                    // 数目
                        var _i = 0;                                                                             // 当前显示的item序号
                      
                        _this.empty()
                                 .css('overflow','hidden')
                                 .width(_w)
                                 .height(_h);
                      
                        // 半透明背景
                        if(config.bg){
                        $('<div />').appendTo(_this)
                                                .width(_w)
                                                .height(config.bgHeight)
                                                .css('background-color',config.bgColor)
                                                .css('opacity',config.bgOpacity)
                                                .css('position','absolute')
                                                .css('marginTop',_h-config.bgHeight)
                                                .css('zIndex',3333);
                        }
                      
                        // 文字区
                        var _textArea =
                        $('<div />').appendTo(_this)
                                                .width(_w)
                                                .height(config.bgHeight)
                                                .css('position','absolute')
                                                .css('marginTop',_h-config.bgHeight)
                                                .css('zIndex',6666);
                        // 按钮区
                        var _btnArea =
                        $('<div />').appendTo(_this)
                                                .width(_w)
                                                .height(config.bgHeight)
                                                .css('position','absolute')
                                                .css('marginTop',_h-config.bgHeight)
                                                .css('marginLeft',_w-(config.btnWidth+config.btnMargin)*_n)
                                                .css('zIndex',9999)
                                                .css('display',config.btn?'block':'none');
                      
                        // 插入空div修正IE的绝对定位BUG
                        $('<div />').appendTo(_this);
                      
                        // 图片区
                        var _imgArea =
                        $('<div />').appendTo(_this)
                                                .width('x,show-x'.indexOf(config.animateStyle)!=-1?_w*_n:_w)
                                                .height('y,show-y'.indexOf(config.animateStyle)!=-1?_h*_n:_h);                 
      
                        // 初始化图片 文字 按钮
                        $.each(config.data,function(i,n){
                                $('<a />').appendTo(_imgArea)
                                                  .width(_w)
                                                  .height(_h)
                                                  .attr('href',n.href?n.href:'')
                                                  .attr('target',n.target?n.target:'')
                                                  .css('display','block')
                                                  .css('background-image','url('+n.src+')')
                                                  .css('background-repeat',config.repeat)
                                                  .css('display','block')
                                                  .css('float','x,show-x'.indexOf(config.animateStyle)!=-1?'left':'');
                                                
                                if(config.title){
                                $('<b />').appendTo(_textArea)
                                                  .html(n.title?n.title:'')
                                                  .css('display',i==0?'block':'none')
                                                  .css('fontSize',config.titleSize)
                                                  .css('fontFamily',config.titleFont)
                                                  .css('color',config.titleColor)
                                                  .css('marginTop',config.titleTop)
                                                  .css('marginLeft',config.titleLeft);
                                }
                              
                                if(config.desc){
                                $('<p />').appendTo(_textArea)
                                                  .html(n.desc?n.desc:'')
                                                  .css('display',i==0?'block':'none')
                                                  .css('fontSize',config.descSize)
                                                  .css('fontFamily',config.descFont)
                                                  .css('color',config.descColor)
                                                  .css('marginTop',config.descTop)
                                                  .css('marginLeft',config.descLeft);
                                }
                                
                                                
                                $('<a />').appendTo(_btnArea)
                                                  .width(config.btnWidth)
                                                  .height(config.btnHeight)
                                                  .html(config.btnText?i+1:'')
                                                  .css('fontSize',config.btnFontSize)
                                                  .css('fontFamily',config.btnFont)
                                                  .css('textAlign','center')
                                                  .css('display','block')
                                                  .css('float','left')
                                                  .css('overflow','hidden')
                                                  .css('marginTop',config.btnTop)
                                                  .css('marginRight',config.btnMargin)
                                                  .css('background-color',config.btnColor)
                                                  .css('opacity',i==0?1:config.btnOpacity)
                                                  .css('color',config.btnFontColor)
                                                  .css('cursor','pointer')

                        });
                      
                        // 保存所有元素集合的引用,方便在事件中使用
                        var _bs = _btnArea.children('a');
                        var _ts = _textArea.children('b');
                        var _ds = _textArea.children('p');
                        var _is = _imgArea.children('a');

                        // 针对不同的动画效果的附加设置, 主要是block的问题, 若在初始化时设置block:none会造成之后无block效果
                        if('o,show,none'.indexOf(config.animateStyle)!=-1){
                                _is.not(':first').hide();
                                _is.css('position','absolute');
                        }
                      
                        // 添加按钮事件
                        _bs.click(function(){
                                var ii = _bs.index(this);
                                if(ii==_i){return;}
                              
                                _ts.eq(_i).css('display','none');
                                _ts.eq(ii).css('display','block');
                                _ds.eq(_i).css('display','none');
                                _ds.eq(ii).css('display','block');
                                _bs.eq(_i).css('opacity',config.bgOpacity);
                                _bs.eq(ii).css('opacity',1)
                              
                                switch(config.animateStyle){
                                case 'o' :
                                        _is.eq(_i).fadeOut(config.animateTime);
                                        _is.eq(ii).fadeIn(config.animateTime);
                                        break;
                                case 'x' :
                                        _imgArea.animate({marginLeft:-ii*_w},config.animateTime);
                                        break;
                                case 'y' :
                                        _imgArea.animate({marginTop:-ii*_h},config.animateTime);
                                        break;
                                case 'show' :
                                case 'show-x' :
                                case 'show-y' :
                                        _is.eq(_i).hide(config.animateTime);
                                        _is.eq(ii).show(config.animateTime);
                                        break;                         
                                case 'none' :
                                        _is.eq(_i).hide();
                                        _is.eq(ii).show();
                                        break;                         
                                }
                                _i = ii;
                        });


                        // 添加轮换任务
                        var _play = setInterval(play,config.playTime);
                      
                        function play(){
                                _bs.eq((_i+1)%_n).click()
                        }             
                        // 鼠标进入事件
                        _this.mouseover(function(){
                                clearInterval(_play);
                        });
                                              
                        // 鼠标离开事件
                        _this.mouseout(function(){
                                _play = setInterval(play,config.playTime);
                        });
                });
        }
});

})(jQuery);

分享到:
评论

相关推荐

    jQuery插件——评分_ui_cookie_放大图

    在IT行业中,jQuery是一个广泛使用的JavaScript库,它极大地简化了DOM操作、事件处理、动画制作以及Ajax交互。这里我们关注的“jQuery插件——评分_ui_cookie_放大图”主题,涵盖了几个关键的知识点,包括jQuery插件...

    jQuery的一个插件——验证码插件

    这个插件是基于流行的JavaScript库jQuery构建的,它为开发者提供了一种简便的方式来实现动态、可自定义的验证码功能。 在网页设计中,验证码通常包含一组随机生成的字符,用户需要正确输入这些字符才能完成某个操作...

    jquery插件——多级菜单

    在本文中,我们将深入探讨如何使用jQuery来创建一个支持无限层级的多级菜单。这个话题对于Web开发人员,特别是初学者来说,是非常实用且有趣的,因为它可以帮助他们更好地理解和掌握前端交互设计。 首先,jQuery是...

    图片文件上传回显jQuery插件——插件四

    总的来说,"图片文件上传回显jQuery插件——插件四"是前端开发中提高用户体验的一个实用工具,它利用jQuery、JavaScript和Ajax技术实现了图片的预览和上传功能。通过研究和使用这个插件,开发者不仅可以快速实现所需...

    jQuery自动提示 jQuery_api_for_dw4插件

    jQuery自动提示插件jQuery_api_for_dw4是专为Dreamweaver 4(dw4)设计的一款增强工具,旨在提升开发者编写jQuery代码的效率和便利性。这款插件通过集成到Dreamweaver环境中,提供了实时代码提示功能,帮助用户在...

    安卓Android源码——jqmDemo_static.zip

    这个项目可能采用了jQuery Mobile(jqm)框架,它是一个轻量级的前端框架,专门设计用于移动设备上的Web应用程序,提供了丰富的UI组件和触控事件支持。 【描述】"安卓Android源码——jqmDemo_static.zip" 描述简单...

    jquery点击图片放大插件——即插即用.zip

    jQuery是一个快速、简洁的JavaScript库,它简化了HTML文档遍历、事件处理、动画和Ajax交互等任务。通过使用jQuery,开发者可以编写更少的代码实现更多的功能,提高了开发效率和代码可维护性。 二、jQuery插件机制 ...

    jquery-3.4.1_jquery_3.4.1.js_jquery-3.4.1_sangat1_jquery3.4.1_jq

    首先,我们来看看标题中的"jquery-3.4.1_jquery_3.4.1.js",这表明我们关注的是jQuery库的3.4.1版本,这是一个稳定且广泛使用的版本。"jquery-3.4.1.js"是jQuery的核心库文件,包含了所有jQuery的功能,开发者可以...

    jQuery_api_for_dwcs5为dw安装jquery插件

    在本教程中,我们将探讨如何使用jQuery_api_for_dwcs5这个插件将其集成到Dreamweaver(DWCS5)中,从而在DW环境下更方便地编写和调试jQuery代码。 首先,了解jQuery的核心概念至关重要。jQuery的核心功能包括选择器...

    jquery circliful圆形统计图插件_html5动画

    jquery circliful圆形统计图插件_html5动画 jquery circliful圆形统计图插件_html5动画 jquery circliful圆形统计图插件_html5动画

    jQuery 树控件--JQuery_zTree_v2.2_1215.zip

    这个压缩包包含的是一个基于jQuery的树形控件插件——jQuery zTree,版本为2.2.1215。zTree是一款高效、灵活且功能丰富的JavaScript树状菜单组件,它在网页中广泛用于构建目录结构、文件系统展示以及组织图表等应用...

    jquery触摸拖动选择图片插件.rar_jquery触摸拖动选择图片插件_nearervfy

    "nearervfy"是这个插件的一个特定版本,可能包含了优化或改进的功能。 jQuery作为一款强大的JavaScript库,提供了丰富的API和便利的DOM操作,使得开发者能够轻松实现复杂的交互效果。在实现触摸拖动选择图片的过程...

    第一个使用jQueryCycle插件作为全屏背景幻灯片的jQuery插件_JavaScript_CSS_下载.zip

    标题中的“第一个使用jQueryCycle插件作为全屏背景幻灯片的jQuery插件”涉及到的是一个使用jQuery和jQueryCycle插件来实现全屏背景轮播效果的JavaScript解决方案。这个插件能够帮助开发者创建吸引人的、视觉冲击力强...

    jQuery插件——imgbox(点击图片查看大图)

    **jQuery 插件 Imgbox 知识点详解** 在网页设计和开发中,展示图片时,经常需要提供一种方式让用户可以放大查看细节。jQuery 插件 Imgbox 正是为了解决这一需求而诞生的。它允许用户点击缩略图,以弹出窗口的形式...

    jquery插件——手风琴效果

    **jQuery 插件——手风琴效果** 在Web开发中,jQuery是一个广泛使用的JavaScript库,它简化了DOM操作、事件处理、动画制作等任务。手风琴效果是jQuery插件中常见的一种交互式UI设计,它允许用户通过点击展开或折叠...

    jQuery图片预览插件

    jQuery作为一个轻量级的JavaScript库,提供了丰富的插件来增强这一功能。本篇文章将深入探讨“jQuery图片预览插件”,包括其工作原理、使用方法以及常见应用场景。 首先,我们来看单张图片预览。在网页上,用户可能...

    jQuery1.11.0_20140330_jquery_

    jQuery是一个JavaScript函数库。jQuery是一个轻量级的&quot;写的少,做的多&quot;的JavaScript库。jQuery库包含以下功能: HTML 元素选取 HTML 元素操作 CSS 操作 HTML 事件函数 JavaScript 特效和动画 HTML DOM ...

    cropzoom_jQuery插件_上传头像裁剪_asp.net_php

    《cropzoom_jQuery插件:实现高效上传头像裁剪功能》 在现代网页开发中,用户界面的交互性越来越重要,特别是在涉及到个人形象展示的环节,如上传头像。`cropzoom`是一款专为jQuery设计的插件,它允许用户在上传...

    使用_jQuery(中级)_第_1_部分_使用插件创建和扩展_jQuery_函数.doc

    通常,一个插件会定义一个新的jQuery方法,这个方法内部包含了插件的主要逻辑。开发者可以通过$.fn.extend或者$.extend来扩展jQuery对象,创建新的方法。在插件中,还可以利用jQuery的$.each方法处理匹配的元素集合...

    jQuery图片拼图插件Image jigsaw.zip

    今天我们将深入探讨一个基于jQuery的轻量级插件——Image jigsaw,它使得在网页上实现图片拼图效果变得轻而易举。 Image jigsaw是一款只有3KB大小的插件,小巧却功能强大。它的主要特点是能够将任何指定的图片转化...

Global site tag (gtag.js) - Google Analytics