本文实例针对jQuery实现Tab选项卡切换效果进行了简单演示,完全是自己的思考实现过程,分享给大家供大家参考。具体如下:
起初我Html代码架子是这样的:
<div class="tabs"> <ul> <li class="acss" data-box="#panel-1">标签1</li> <li class="bcss" data-box="#panel-2">标签2</li> <li class="bcss" data-box="#panel-3">标签3</li> </ul> <div id="panel-1">内容111111</div> <div id="panel-2" style="display:none;">内容222222</div> <div id="panel-3" style="display:none;">内容333333</div> </div>
后来换成了下面这个:
<dl class="tabs"> <dt> <a class="acss" href="#panel-1">标签1</a> <a class="bcss" href="#panel-2">标签2</a> <a class="bcss" href="#panel-3">标签3</a> </dt> <dd id="panel-1">内容1</dd> <dd id="panel-2" style="display:none;">内容2</dd> <dd id="panel-3" style="display:none;">内容3</dd> </dl>
之所以换成这个,是因为我觉得 dl dt dd 在页面布局中用的比 div ul li 要少,这样可以做到更好的隔离性。我们用js操作dl dt dd 对象,就会更少的影响到页面内其它元素,还有就是不用在li标签中自定义data-box属性,更符合页面书写标准。而且这个结构的整体感觉也比上面那个好。
插件的实现代码如下:
(function ($) { $.fn.Tabs = function (options) { //默认参数设置 var settings = { beforeCss: "bcss", //激活前样式名 afterCss: "acss", //激活后样式名 model: "mouseover" //切换方式("mouseover"或者"click") }; //不为空,则合并参数 if (options) $.extend(settings, options); //获取a标签集合 var arr_a = $("> dt > a", this); //给a标签分别绑定事件 arr_a.each(function () { $(this).bind(settings.model, function (event) { //去除a标签的锚点跳转 event.preventDefault(); //样式控制 $(this).removeClass().addClass(settings.afterCss) .siblings("a").removeClass().addClass(settings.beforeCss); //隐藏与显示控制 var dd_id = $(this).attr("href"); $(dd_id).show().siblings("dd").hide(); }); }); //遵循链式原则 return this.each(function () { }); }; })(jQuery);
之所以说是轻量级,是因为代码量真的很少,也很简单。加了注释相信大家都可以看懂。
其中settings中的model是用来控制切换方式的:
- 当为"click"时,点击实现切换;
- 当为"mouseover"时,鼠标滑入实现切换。
开始时是想用hover来实现鼠标滑入切换的,结果发现,hover不支持bind绑定。因为hover是jquery通过封装 mouseover事件 的产物,它并不是一个正宗的事件,因此无法绑定。
下面给出个DEMO:
<!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> <title></title> <style type="text/css"> * { margin: 0; padding: 0; } .tabs { width: 504px; margin: 50px auto; } .acss,.bcss { text-decoration:none; line-height: 35px; font-size: 14px; padding:8px 15px; } .bcss { background-color: #D4D4D4; border-bottom:1px solid white; } .acss { background-color: orange; border-bottom:1px solid orange; } .tabs dd { width: 500px; height: 300px; border: 1px solid orange; text-align: center; line-height: 300px; } </style> </head> <body> <dl class="tabs" id="tabs1"> <dt> <a class="acss" href="#panel-1">标签1</a> <a class="bcss" href="#panel-2">标签2</a> <a class="bcss" href="#panel-3">标签3</a> </dt> <dd id="panel-1"><h1>鼠标滑入切换</h1></dd> <dd id="panel-2" style="display:none;">内容2</dd> <dd id="panel-3" style="display:none;">内容3</dd> </dl> <dl class="tabs" id="tabs2"> <dt> <a class="acss" href="#panel-4">标签1</a><!--默认第一个激活--> <a class="bcss" href="#panel-5">标签2</a> <a class="bcss" href="#panel-6">标签3</a> </dt> <dd id="panel-4"><h1>鼠标点击切换</h1></dd><!--默认第一个显示--> <dd id="panel-5" style="display:none;">内容2</dd> <dd id="panel-6" style="display:none;">内容3</dd> </dl> <script src="/UploadFiles/2021-04-02/jquery-1.4.1.min.js">效果图如下:
希望本文所述对大家学习jquery程序设计有所帮助。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。