Tab切换类Lix Tabs 0.1发布

近期正在做的这个网站中,有的页面同时会出现好几个tab切换效果。在没有写这个类之前,每碰到多一个TAB我就得复制一遍tab函数,关键是这函数其实功能与前几个没什么两样。但不复制又不行,因为那tab函数是没法重用的。每当做到这里,都让我苦不堪言。

在博客园上参观了几位牛人的javascript实例后,我就开始琢磨着写这么一个类。这是否能叫类呢,我也不确定,不过确定能用就行了。修修改改用了两周+的时间,发现好像没什么bug了,于是发布出来,斗胆加上个自己的代号吧。顺便放出源码供新人参考,高手看了也不要批我,我真的是新手。

功能与示例:

可以实现同一页面N个tab切换(n>0),效果可参考网易首页的那一整篇tab菜单,或点击查看示例页

Lix Tabs的源码:

Lix Tabs的说明:

1,基本说明:

有默认参数如下:

items:{
    hdtag:'DIV',//tab头的标签
    hdcn:'tabhd',//tab头的className
    hdtagcur:'cur',//tab头中当前标签的className
    hdtagno:'',//tab头中非当前标签的className
    bdtag:'DIV',//tab内容区的标签
    bdcn:'tabbd',//tab内容区的className
    bdtagcur:'cur',//tab内容区中当前标签的className
    bdtagno:''//tab内容区中非当前标签的className
}
绕晕了?实例对照:
<div class="inner" id="tabLite">
        <div class="tabhd"><a class="cur" title="" href="#">城市指数</a><a title="" href="#" class="">名牌指数</a><a title="" href="#" class="">网上百货</a></div>
        <div class="tabbd">
            <div class="cur">
            <ul>
                <li>·<a title="" href="#">0上海起火楼工程多萨斯附属卡</a></li>
                <li>·<a title="" href="#">损失达5亿 忠犬不吃了快速扩大解放</a></li>
            </ul>
            </div>
            <div class="">
            <ul>
                <li>·<a title="" href="#">1上海起火楼工程多</a></li>
                <li>·<a title="" href="#">损失达5亿 忠犬不吃</a></li>
            </ul>
            </div>
            <div class="">
            <ul>
                <li>·<a title="" href="#">2上海起火楼工程多</a></li>
                <li>·<a title="" href="#">损失达5亿 忠犬不吃</a></li>
            </ul>
            </div>
        </div>
    </div>

2,使用指南:

Lix Tabs有三个重要的外置函数,即$id=>getElementById,$$=>getElementsByTagName,$C=>getElementsByClassName...具体请看源码

有一个必需参数,就是到底是哪个HTML对象要切换(注:参数是html对象而不是字符串!)

调用

参数默认时:var t1 = new Tabs($id('t1'));(划线位置即是一个通过$id得到的HTML元素)

自传参数:

var t1=new Tabs($id('blog'),{hdcn:'tab-hd',hdtagcur:'tab-u current',hdtagno:'tab-u',bdcn:'tab-bd',bdtagcur:'current',bdtagno:'tab-con',auto:4000});

注:auto的值就是自动切换的间隔时间,如果不想自动切换,不传auto即可.

如果tab太多,那像上面那样一个一个new无疑太麻烦了。这时也可批量定义,给需要tab的地方都加上一个共同的class吧:

/* 批量定义 */<br>        var as = $C('as','DIV',document);
    for(var i=0,l=as.length;i<l;i++){
        as[i].tab = new Tabs(as[i],{hdtag:'UL',hdcn:'sn',hdtagcur:'now',bdcn:'imgs',bdtagcur:'cur',auto:2000});
    }

:批量定义适于类似网易首页的多tab结构甚至CSS都相同的情况.

容错能力:

只对最常见的错误--Tabs(elm)的elm拼错了而导致找不到HTML对象--有容错能力,Tabs会忽略这个错误,所以不会影响后续调用.

Lix Tabs的优缺点:

优点:代码少,纯代码大概2.3K;可批量应用;可设置是否自动切换;自动识别tab标签个数...貌似没了

缺点:切换无过渡特效,一点也不炫;也许有暂未发现的效率问题;也许源代码不够优化;参数也许有点多...

已知问题:在得到tab元素时使用的是children而非childNodes,所以不符合W3C标准。。。有w3c强迫症的人群慎用

完整实例下载:点击下载

lix tabs最新版:点击查看0.2

----------------------------------------------------------------------------------

结语:Lix Tabs是个功能非常简单的JS类,所以尽量精简.这次发布的是0.1版,如果以后我的JS水平提高了,肯定会改进+优化,但应该不会添加过渡特效...

以下内容可无视:

感叹几句,我的JS水平真差,不说别的,博客园上的JS文章我只有很少能看懂的;JS真的有点难;好想面对面向高手们学学;最后,活着真不容易,拿着3000不到的工资,还要养老婆,我擦

posted on   十年灯  阅读(2371)  评论(11编辑  收藏  举报

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
< 2011年3月 >
27 28 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 1 2
3 4 5 6 7 8 9

统计

点击右上角即可分享
微信分享提示