• 看了一些Tab标签的效果,正好在学习前端,自己动手也写个把~


    发现总有个问题, 用淡入淡出效果 和 下拉效果 切换内容的时候  鼠标移动到另一个标签过快 就会出现一个层还没来得及小时另一个层出现了,现在贴出源码,学习中请大家指教了

    (function($){   
    $.fn.extend({
            TabUi:function(options){
                var _default={
                    CurrentLi:0,//默认第0个显示
                    tabTime:2000,//每隔两秒自动移动
                    CurTabLiCss:"Tab_CurLi",//当前选中的标签样式
                    TabContentCss:"Tab_Content",//内容样式
                    TabType:"hover",//"hover" 鼠标划过   "click" 鼠标点击
                    ShowType:"normal",//"nomal"--正常显示   "fade"--淡入淡出效果  "slide"--下拉效果
                    TabAuto:true//"是否自动移动"
                }
                var _this=this;//获取当前对象
                var _opt=$.extend({},_default, options);//的到默认配置参数
                var timer=null;//自动移动的时间参数
                
                
                //初始化对象
                var $tabLi=$(_this).find("ul").eq(0).find("li");//获取tab标签
                var $tabContent=$(_this).find("."+_opt.TabContentCss);//获取内容标签
                var tabNum=$tabLi.length;//获取tab个数
            
                //初始化标签 防止超出个数
                var getNum=function(num){
                    if(num>tabNum-1 || num<0)
                    {
                        num=0
                    }
                    return num
                }
                
                //内容效果
                var ShowTypeFunction=function(ShowType,MoveToIndex){
                    
                    //普通类型
                    if(ShowType=="normal")
                    {
                        
                        $tabContent.eq(_opt.CurrentLi).stop().hide(0,function(){
                            $tabContent.eq(MoveToIndex).show();     
                        })
                    }
                    
                    //淡入淡出效果
                    if(ShowType=="fade")
                    {
                        $tabContent.eq(_opt.CurrentLi).stop().fadeOut("fast",function(){
                            $tabContent.eq(MoveToIndex).fadeIn("fast");
                        })
                    }
                    
                    //下拉效果
                    if(ShowType=="slide")
                    {
                        $tabContent.eq(_opt.CurrentLi).stop().slideUp("fast",function(){                            
                            $tabContent.eq(MoveToIndex).slideDown("fast");
                        })
                    }    
                }
                
                //标签移动至指定标签
                var TabMoveTo=function(MoveToIndex)
                {
                    //初始化数字
                    MoveToIndex=getNum(MoveToIndex);
                    
                    //标签移动至目标的标签
                    $tabLi.removeClass(_opt.CurTabLiCss).eq(MoveToIndex).addClass(_opt.CurTabLiCss);
                    
                    //内容显示类型
                    ShowTypeFunction(_opt.ShowType,MoveToIndex)
                    
                    _opt.CurrentLi=MoveToIndex;
                }
                
                //自动移动
                var AutoMove=function(){
                    moveToIndex=getNum(_opt.CurrentLi+1)                
                    TabMoveTo(moveToIndex)
                }
                
                //选中类型
                var TypeFunction=function(TabType){
                    //鼠标划过效果
                    if(TabType=="hover")
                    {
                        $tabLi.hover(function(){
                            //停止自己滚动                  
                            StopMove();
                            //获取当前的位置
                            MoveToIndexID=$tabLi.index(this);
                            //移动到当前的位置
                            TabMoveTo(MoveToIndexID);
                        },function(){
                            //开始自己滚动
                            StartMove();
                        })
                    }
                    
                    //鼠标点击
                    if(TabType=="click")
                    {
                        $tabLi.bind("click",function(){
                            StopMove();    
                            MoveToIndexID=$tabLi.index(this);
                            
                            TabMoveTo(MoveToIndexID);
                            StartMove();
                        })
                    }
                }
                
                //开始移动
                var StartMove=function(){
                    if(_opt.TabAuto==true)
                    {
                        timer=setInterval(AutoMove,_opt.tabTime);
                    }
                }
                
                //停止
                var StopMove=function(){
                    if(_opt.TabAuto==true)
                    {
                        clearInterval(timer);
                    }    
                }
                
                
                _opt.CurrentLi=getNum(_opt.CurrentLi)//初始化默认标签
                
                //选中类型
                TypeFunction(_opt.TabType);
                
                //初始化移动至默认标签
                TabMoveTo(_opt.CurrentLi);
                
                //自动移动开始
                StartMove();
            }
    })   
    })(jQuery);   

    HTML代码:

    View Code
    <div class="ChangeMenu">
        <ul>
            <li></li>
            <li></li>
            <li></li>
        </ul>
        <div class="Tab_Content"></div>
        <div class="Tab_Content"></div>
        <div class="Tab_Content"></div>
    </div>

     一些调用参数:

    $(".ChangeMenu").TabUi({
      TabType: "hover", //触发效果参数
      ShowType: "normal", //内容显示效果参数
      tabTime: 2000, //间隔时间参数
      TabAuto: 1, //自动滚动参数
      CurrentLi: 0 //默认选中参数
    })

    DEMO下载

  • 相关阅读:
    Windows API 第六篇 GetLocalTime
    _itoa _itow _itot atoi atof atol
    Window API 第五篇 WTSEnumerateProcesses
    获取计算机以及本机信息API
    Windows API 第四篇 文件操作
    [软工顶级理解组] 团队介绍和采访!
    2019 SDN上机第1次作业
    第01组 团队项目-需求分析报告
    团队项目-选题报告
    第二次结对编程作业
  • 原文地址:https://www.cnblogs.com/BiakeChou/p/2518126.html
Copyright © 2020-2023  润新知