作者:吉光片羽 主页:www.jgpy.cn Email:kandytang[at]msn.com QQ:121885959 腾讯微博:t.qq.com/kandyt
前端交流群:204694749 承接JQuery特效/插件定制、博客主题设计定制、企业建站
通常情况下,Tab选项卡的默认结构都类似如下:
<div class="tab">
<div class="tabtitle">
<span>Tab 1</span>
<span>Tab 2</span>
</div>
<div class="tabboy">
<div class="tabcont">
Tab 1 的内容
</div>
<div class="tabcont">
Tab 2 的内容
</div>
</div>
</div>
表现出来就类似这样:
一旦内容过多,标题和内容就会相距甚远,表意也就不准确了,谁知道那一段开始是另一部分内容呢?当然,这是在JS失效的前提下。但是蜘蛛并不知道你用了选项卡,对于它来说,这就是一片不连贯,读不通的“伪原创”(夸张了点…)。再者,考虑下手机用户吧,他们可能只看纯文本的内容。有没有恍然大悟呢?
OK,既然你恍然大悟的意识到了这一点,那么就一起加入我们吧。为了更佳的用户体验,你有理由选择 KandyTabs 。还没弄明白?那就看看代码结构吧。
P.S. 各个效果的具体使用方法请参看下方的演示,详细的教程会陆续推出,请关注吉光片羽的博客。
展望的意思就是还没有实现的,所以别乱激动。
很简单,使用 .KandyTabs() 到你的对象即可。如 $("div").KandyTabs() 。
从来没用过JQuery插件?那好吧……
因为是JQuery插件,所以我们要在插件之前导入JQuery(必须为1.4以上版本)库,并一同放在<header></header>之间,如下:
<script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="kandytabs.js"></script>
接下来,就让KandyTabs发威吧。
你可以在这两行之后,或者是<body/>之内使用如下代码让KandyTabs发威:
<script type="text/javascript">
$(function(){
$("dl").KandyTabs();
})
</script>
通常情况下,我们会使用 <dl/> 来制作标准的Tab选项卡原型,所以你的KandyTabs对象就是 dl 。这个也看不懂?那先学学 JQuery 吧……
更高级的应用请查看 配置说明
推荐使用dl元素(不是说必须得用dl元素)
<dl> <dt>Tab 1</dt> <dd>Tab 1 的内容。</dd> <dt>Tab 2</dt> <dd>Tab 2 的内容。</dd> </dl>
或者你想考虑SEO
<div> <h1>Tab 1 关键词</h1> <div>Tab 1 的内容。</div> <h2>Tab 2 关键词</h2> <div>Tab 2 的内容。</div> </div>
是的,不用担心,只要你能保持这样的结构,选项卡,折叠效果都可以使用。如果不具备这样的结构条件,那就用DOM创建。
注意:如果你要使用默认数字导航的幻灯片,你可以不必考虑dt/hn等标题元素,KandyTabs会自动创建数字标题。
构建一个幻灯片,你只需如下代码结构即可
<div> <img src="1.jpg" /> <img src="2.jpg" /> <img src="3.jpg" /> <a href="#" title="也可以是一个包含有链接的图片"><img src="4.jpg" /></a> </div>
你可以在.KandyTabs({})的“{}”中使用以下配置来自定效果:(以下显示的是默认配置)
id : "", // Tab生成后的id,将覆盖之前的id,注意样式修改。
classes : "kandyTabs", // Tab的自定义class,默认为kandyTabs,幻灯片可以使用 kandySlide 来获得基本样式。
type : "", // Tab的衍生用法,支持“slide(幻灯片),fold(折叠)”。
trigger : "mouseover", // Tab触发的方式,普通的事件都可以接受,如单击,双击,进入,退出……
action : "toggle", // Tab切换的方式,只包括“toggle(直接显示/关闭),fade(渐隐渐现),slide(滑动),roll(滚动),
// slifade(fade后调整高度)”。
custom : function(btn,cont,index,tab){},
// 自定义效果,即切换后自定义的动画效果,效果见Slide效果演示三;
// btn=选项卡按钮、cont=选项卡内容、index=当前索引、tab=当前选项卡;请按顺序匹配。
delay : 200, // 仅在mouseover事件中有用,即事件响应延时。
last : 400, // 动画(切换效果持续)时间,默认为400。
current : 1, // 默认激活的第N个Tab,可通过URL配置,格式为“元素ID:数值”,支持多个,如:xxx.com/?mytab:2&myslide:5&myfold:10。
direct : "top", // roll的方向,默认为向上(即垂直方向),仅可选择 left 即向左(水平方向)。
except : "", // 不作为Tab的元素,如你本Tab在右上角看到的提示,请使用JQuery对象,支持N个,如 ".tip .more"。
child : [], // Tab中的子Tab和配置,请使用JQuery对象,如 ['#child .son',{}],{}中直接写配置内容,不填则沿用父配置效果。
ready : null, // Tab运行前回调函数。
done : function(btn,cont,tab){},
// Tab完成后回调函数;
// btn=选项卡按钮、cont=选项卡内容、tab=当前选项卡;请按顺序匹配。
auto : false, // 是否自动切换(播放)。
stall : 5000, // 切换停顿时间,默认为5000毫秒(即5秒)。
play : true, // 自动切换(播放)时默认是否切换(播放)。
process : false, // 是否显示进度条,默认高度为5px,宽度自动。
ctrl : false, // 是否显示 暂停/自动 控制按钮。
nav : false, // 是否显示前一个/后一个导航,默认包含当前索引值和总数,可以通过css控制显示与否。
loop : false, // 导航操作是否循环,默认为否。
column : 0, // 默认为0,即不启用旋转木马效果,填写相应数值则自动执行旋转木马效果,请配合 type:"slide" 使用。
resize : true, // 切换动作完成后是否重新调整高宽,如果高宽确定请写false以提高效率。
lang : { // 目前显示的是默认语言和符号;请按照["提示文字","显示文字"]的格式填写,如需修改请全部修改一遍。
first:["已是首个","<"],
prev:["前一个","<"],
next:["后一个",">"],
last:["已是末个",">"],
empty:"暂无内容",
play:["播放",">>"],
pause:["暂停",""]
}
如果不自定义class,则会使用以下默认样式。如果你需要自定义样式,可以不必导入该样式表。
文件 kandytabs.css
/*2011年7月15日更新,必要的css reset,根据实际情况使用*/
.tabtitle,.tabcont,
.tabbody dd,.tabbody ul,.tabbody ol,
.tabnav,.tabctrl,.tabprocess
{list-style:none;padding:0;margin:0}
/*以上样式表非3.0.0715版无需考虑*/
/*最常见(Tab选项卡效果演示第一个)效果的CSS样式表,可根据实际需要美化*/
.kandyTabs{
margin:0;padding:2px;border:1px solid #DDD;background:#f5f5f5;overflow:hidden;zoom:1
}
.kandyTabs .tabtitle{
margin:0;padding:0;line-height:22px;border-bottom:1px solid #DDD
}
.kandyTabs .tabtitle .tabbtn{
margin:0 4px 0 0;padding:0 5px;display:inline-block;background:#e5e5e5;border:1px solid #DDD;border-width:1px 1px 0
}
.kandyTabs .tabtitle .tabcur{
line-height:23px;background:#FFF;border-bottom:1px solid #FFF;font-weight:bold;color:#F00;margin-bottom:-2px
}
.kandyTabs .tabbody{
padding:5px;background:#FFF;border:1px solid #DDD;border-width:0 1px 1px;overflow:hidden;zoom:1;margin:0
}
.kandyTabs .tabbody .tabcont{
background:#FFF
}
.kandyTabs .tabbody .tabroll .tabcont{
margin:5px 0 0
}
............
.........
......
...
特别声明: 没有什么东西是拿来就能用的,如果你只是希望复制粘贴的用上KandyTabs,请绕道百度谷歌搜索其他能让你直接复制粘贴使用的JS特效或JQuery插件吧,谢谢合作!
不好意思,完整的DEMO演示还没有做好,如果你急着用,就请先下载最新 kandytabs.pack.js 和 kandytabs.css 吧!别忘了 jquery.js !
注意: 如果您要下载本演示页面请使用IE浏览器。
请前往本插件博客发布页面提交反馈或BUG。http://www.jgpy.cn/blog/front-end/KandyTabs.htm
以下为已知BUG及(解决办法):
想增加外链么?那就快点使用并告诉我吧!或者观摩一下实际应用效果:
<dl id="simple">
<dt>简介</dt>
<dd>......</dd>
<dt>Xhtml</dt>
<dd>......</dd>
<dt>CSS</dt>
<dd>......</dd>
<dt>参数</dt>
<dd>......</dd>
</dl>
$("#simple").KandyTabs();
<dl id="fade">
<dt>简介</dt>
<dd>......</dd>
<dt>Xhtml</dt>
<dd>......</dd>
<dt>CSS</dt>
<dd>......</dd>
<dt>参数</dt>
<dd>......</dd>
</dl>
#fade .tabtitle{
text-align:center;
}
$("#fade").KandyTabs(
{
action:"fade",
delay:1000
}
);
<dl id="fade">
<dt>简介</dt>
<dd>......</dd>
<dt>Xhtml</dt>
<dd>......</dd>
<dt>CSS</dt>
<dd>......</dd>
<dt>参数</dt>
<dd>......</dd>
</dl>
#fade .tabtitle{
text-align:center;
}
$("#slifade").KandyTabs(
{
action:"slifade",
delay:500
}
);
<dl id="slide">
<dt>简介</dt>
<dd>......</dd>
<dt>Xhtml</dt>
<dd>......</dd>
<dt>CSS</dt>
<dd>......</dd>
<dt>参数</dt>
<dd>......</dd>
</dl>
$("#slide").KandyTabs(
{
action:"slide",
trigger:"click"
}
);
<dl id="roll">
<dt>简介</dt>
<dd>......</dd>
<dt>Xhtml</dt>
<dd>......</dd>
<dt>CSS</dt>
<dd>......</dd>
<dt>参数</dt>
<dd>......</dd>
</dl>
$("#roll").KandyTabs(
{
action:"roll",
trigger:"mousedown"
}
);
<dl id="rollleft">
<dt>简介</dt>
<dd>......</dd>
<dt>Xhtml</dt>
<dd>......</dd>
<dt>CSS</dt>
<dd>......</dd>
<dt>参数</dt>
<dd>......</dd>
</dl>
#rollleft .tabtitle{
float:left;
margin:0 2px -2px 0;
_margin-right:-1px;
border:none;
}
#rollleft .tabtitle .tabbtn{
display:block;
width:50px;
margin:0 0 2px;
background:none;
border:1px solid #DDD;
cursor:pointer
}
#rollleft .tabtitle .tabcur{
border:1px solid #ddd;
background:#DDD;
margin:0 -2px 2px 0;
width:52px;
cursor:default;
_position:relative
}
#rollleft .tabbody{
border-width:1px 1px 1px 2px;
float:right
}
#rollleft .tabcont{
margin:0 5px;
width:237px
}
$("#rollleft").KandyTabs(
{
action:"roll",
trigger:"mouseup",
direct:"left"
}
);
<dl id="fold-simple">
<dt>Intro</dt>
<dd>......</dd>
<dt>Xhtml</dt>
<dd>......</dd>
<dt>CSS</dt>
<dd>......</dd>
<dt>JS</dt>
<dd>......</dd>
</dl>
$("#fold-simple").KandyTabs(
{
classes:"kandyFold",
type:"fold"
}
);
<dl id="fold-slide">
<dt>Intro</dt>
<dd>......</dd>
<dt>Xhtml</dt>
<dd>......</dd>
<dt>CSS</dt>
<dd>......</dd>
<dt>JS</dt>
<dd>......</dd>
</dl>
$("#fold-slide").KandyTabs(
{
classes:"kandyFold",
action:"slide",
type:"fold"
}
);
<dl id="fold-fade">
<dt>Intro</dt>
<dd>......</dd>
<dt>Xhtml</dt>
<dd>......</dd>
<dt>CSS</dt>
<dd>......</dd>
<dt>JS</dt>
<dd>......</dd>
</dl>
#fold-fade .tabbtn{
cursor:pointer
}
#fold-fade .tabcur{
display:none
}
$("#fold-fade").KandyTabs(
{
classes:"kandyFold",
action:"fade",
type:"fold",
trigger:"click"
}
);
<dl id="fold-left">
<dt>Intro</dt>
<dd>......</dd>
<dt>Xhtml</dt>
<dd>......</dd>
<dt>CSS</dt>
<dd>......</dd>
<dt>JS</dt>
<dd>......</dd>
</dl>
整理中...
$("#fold-left").KandyTabs({
classes:"kandyFold",
type:"fold",
action:"fade",
trigger:"click",
last:800
})
<dl id="fold-right">
<dt>Intro</dt>
<dd>......</dd>
<dt>Xhtml</dt>
<dd>......</dd>
<dt>CSS</dt>
<dd>......</dd>
<dt>JS</dt>
<dd>......</dd>
</dl>
整理中...
$("#fold-right").KandyTabs({
classes:"kandyFold",
type:"fold",
direct:"left",
action:"slide",
done:function(b,c,t){
b.each(function(i){
$(this).insertAfter(c[i])
})
c.wrapInner("<div style='padding:10px'/>")
}
})