结构/表现/行为完全分离的选项卡(jquery版和原生JS版)

关于思路,和常规选项卡思路一样.点击选项菜单,突出显示,并显示对应的选项.本文实例中主要是通过判断点击菜单在菜单列表中的索引位置来显示或隐藏选项区.原生js还有很多种实现方法(蓝色理想中搜索),为了与jQ版思路保持一致,本文实例用的是循环判断. 详见注释.
另有几点说明:
1. 通过本文DEMO演示,可以很明显的看到原生JS的window.onload=function(){…}与jQuery的$(document).ready(function(){…});的区别,这也是我为什么不用样式定义初始状态下隐藏第二三个显示区的原因;
2. 本文只是选项卡一个原型实现,若要用于同一页面多个选项卡,变量已集中到函数头部,可自行封装成函数;
3. 请不要问如何实现更酷很炫的效果,请自已思考添加效果;
4. 不希望大家用这个效果时只是机械的复制粘贴,思考加实践,然后消化成自己的.
查看演示:

结构/表现/行为完全分离的选项卡(jQ版和原生JS版)@Mr.Think

/*reset css*/
body{font-size:0.8em;letter-spacing:1px;font-family:"Microsoft YaHei"; line-height:1.8em}
div,h2,p,ul,li{margin:0;padding:0}
h1{font-size:1em; font-weight:normal;}
h1 a{background:#047; padding:2px 3px; color:#fff; text-decoration:none;}
h1 a:hover{background:#a40000; color:#fff; text-decoration:underline}
h3{color:#888; font-weight:bold;font-size:1em; margin:1em auto; position:relative}
/*demo css*/
h2{width:120px; height:25px;background:#a40000;font-size:12px; color:#fff;text-align:center; ;line-height:25px;margin:30px 0 10px}
/*jQ版本*/
ul.tabnav{width:500px;height:25px;margin-left:100px}
ul.tabnav li{background:#baf;color:#fff;line-height:25px;display:block;float:left;margin:0 10px;padding:0 5px;cursor:pointer}
ul.tabnav li.hover{background:#047}
.tabbox{width:500px;height:100%;border:2px solid #047}
.tabbox div{margin:10px;line-height:20px}
/*原生js版本(样式与jQ版本一样,只是命名不同)*/
ul#tabnav{width:500px;height:25px;margin-left:100px}
ul#tabnav li{background:#baf;color:#fff;line-height:25px;display:block;float:left;margin:0 10px;padding:0 5px;cursor:pointer}
ul#tabnav li.hover{background:#047}
#tabbox{width:500px;height:100%;border:2px solid #047}
#tabbox div{margin:10px;line-height:20px}

/*******************************
* @author Mr.Think
* @author blog http://mrthink.net/
* @2010.08.10
* @可自由转载及使用,但请注明版权归属
*******************************/
//jQ版本
$(function(){
var _tab=$('ul.tabnav>li');//获取选项卡导航
var _box=$('.tabbox div');//获取内容切换区
var _hover='hover';//当前点击显示的样式
var _index;//索引值
_tab.eq(0).addClass(_hover);//第一个导航高亮显示
_tab.click(function(){
_index=_tab.index(this);//获取当前点击的索引值
$(this).addClass(_hover).siblings().removeClass(_hover);//当前点击高亮显示
_box.eq(_index).show().siblings().hide();//通过索引值让对应的选项内容区显示
}).eq(0).click();
});
//原生JS版本
window.onload=function(){
var tabnav=document.getElementById('tabnav');
var list=tabnav.getElementsByTagName('li');
var tabbox=document.getElementById('tabbox');
var divs=tabbox.getElementsByTagName('div');
var hover='hover';//当前点击显示的样式
var indexValue=function(self,obj){//获取索引值的函数,通过它获取当前点击在导航中的索引位置
for(var i=0;i

Mr.Think的个人博客
@专注前端技术,热爱PHP,崇尚简单生活.

返回文章页:结构/表现/行为完全分离的选项卡(jQ版和原生JS版)@Mr.Think

基于jQ版本

  • jQuery技术
  • CSS技术
  • xhtml技术

jQuery技术在这里显示!@Mr.Think.

CSS技术在这里显示!@Mr.Think.

xhtml技术在这里显示!@Mr.Think.

原生JS版本

  • jQuery技术
  • CSS技术
  • xhtml技术

jQuery技术在这里显示!@Mr.Think.

CSS技术在这里显示!@Mr.Think.

xhtml技术在这里显示!@Mr.Think.

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

核心代码:


代码如下:

//jQ版本
$(function(){
var _tab=$('ul.tabnav>li');//获取选项卡导航
var _box=$('.tabbox div');//获取内容切换区
var _hover='hover';//当前点击显示的样式
var _index;//索引值
_tab.eq(0).addClass(_hover);//第一个导航高亮显示
_tab.click(function(){
_index=_tab.index(this);//获取当前点击的索引值
$(this).addClass(_hover).siblings().removeClass(_hover);//当前点击高亮显示
_box.eq(_index).show().siblings().hide();//通过索引值让对应的选项内容区显示
}).eq(0).click();
});

//原生JS版本


代码如下:

window.onload=function(){
var tabnav=document.getElementById('tabnav');
var list=tabnav.getElementsByTagName('li');
var tabbox=document.getElementById('tabbox');
var divs=tabbox.getElementsByTagName('div');
var hover='hover';//当前点击显示的样式
var indexValue=function(self,obj){//获取索引值的函数,通过它获取当前点击在导航中的索引位置
for(var i=0;i<obj.length;i++){
if(obj[i]==self) return i;
}
};
var index;
list[0].className=hover;//第一个默认高亮,建议在页面中直接定义
for(var k=1;k<divs.length;k++){//我为了省事,用一个for循环定义默认显示第一个切换区块,其他隐藏.这个最好用CSS定义,能避免页面加载时它全部显示出来.
divs[k].style.display='none';
}
for(var l=0;l<list.length;l++){//点击事件
list[l].onclick=function(){
index=indexValue(this,list);//利用前面定义的indexValue函数取当前点击在选项导航中的索引值,
for(var m=0;m<list.length;m++){
list[m].className= (m==index) ? hover : '';//高亮显示点击项并移除其他项高亮
}
for(var n=0;n<divs.length;n++){
divs[n].style.display= (n==index) ? 'block' : 'none';//显示点击对应的选项区,隐藏其他
}
}
}
}

您可能感兴趣的文章:

  • jQuery实例—选项卡的简单实现(js源码和jQuery)
  • jquery插件tytabs.jquery.min.js实现渐变TAB选项卡效果
  • 原生js和jQuery写的网页选项卡特效对比
  • 简单选项卡 js和jquery制作方法分享
  • js/jQuery简单实现选项卡功能
  • JQuery 选项卡效果(JS与HTML的分离)
  • 原生JS与jQuery编写简单选项卡

Tags:分离 选项卡

相关文章

  • 2015-03-03jQuery模拟新浪微博首页滚动效果的方法
  • 2017-09-09解决jquery appaend元素中id绑定事件失效的问题
  • 2013-12-12jquery对ajax的支持介绍
  • 2017-07-07easyui简介_动力节点Java学院整理
  • 2012-09-09jQuery学习笔记 获取jQuery对象
  • 2014-06-06jQuery绑定事件不执行但alert后可以正常执行
  • 2008-08-08jquery复选框CHECKBOX全选、反选
  • 2013-01-01jquery获取div宽度的实现思路与代码
  • 2014-03-03jquery mobile动态添加元素之后不能正确渲染解决方法说明
  • 2014-08-08jquery实现的下拉和收缩效果示例

最新评论

(0)

相关推荐

  • JQuery 选项卡效果(JS与HTML的分离)

    在实际应用过程中,只要保证选项卡模块结构代码的完整性,就可以任意添加N个同类选项卡,不需要手动在HTML里绑定事件处理程序以及给要隐藏显示的内容层添加ID. Javascript(jquery)代码如下: 复制代码 代码如下: <script language="javascript" type="text/javascript"> $(document).ready(function(){ $("ul.menu li:first-child&

  • 原生js和jQuery写的网页选项卡特效对比

    总的来说思路比较简单,就是先获取节点,然后对节点进行相应的处理,下面是完整的页面代码: 原生js: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <title>原生js tab</tit

  • jQuery实例—选项卡的简单实现(js源码和jQuery)

    分别利用javascript的源码和jQuery来实现一个简单的选项卡,对比各自的步骤. <!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"> &l

  • jquery插件tytabs.jquery.min.js实现渐变TAB选项卡效果

    本文实例讲述了jquery插件tytabs.jquery.min.js实现渐变TAB选项卡效果.分享给大家供大家参考.具体如下: 这款网页特效主要是tytabs.jquery.min.js插件的实例演示,一个带有漂亮渐变效果的TAB选项卡,演示了一个网页上设置两个选项卡,都是带有淡入淡出的渐变效果,为了演示效果,里面我随便弄了些文字,用时候自己删除吧. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/jquery-tytabs-tab-cha-m

  • 简单选项卡 js和jquery制作方法分享

    复制代码 代码如下: <!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="

  • 原生JS与jQuery编写简单选项卡

    本文实例为大家分享了JS编写简单选项卡的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>jquery选项卡</title> <style type="text/css"> #div1 div{width: 200px;height: 20

  • js/jQuery简单实现选项卡功能

    第一种方法是用原生的js代码如下: 复制代码 代码如下: <!DOCTYPE html><html><head>    <meta charset="utf-8">    <title>简单选项卡</title>    <style type="text/css">    body,ul,li{margin:0;padding:0;}    body{font:12px/1.5 Ta

  • 结构/表现/行为完全分离的选项卡(jquery版和原生JS版)

    关于思路,和常规选项卡思路一样.点击选项菜单,突出显示,并显示对应的选项.本文实例中主要是通过判断点击菜单在菜单列表中的索引位置来显示或隐藏选项区.原生js还有很多种实现方法(蓝色理想中搜索),为了与jQ版思路保持一致,本文实例用的是循环判断. 详见注释. 另有几点说明: 1. 通过本文DEMO演示,可以很明显的看到原生JS的window.onload=function(){-}与jQuery的$(document).ready(function(){-});的区别,这也是我为什么不用样式定义初

  • 限制字符输入数功能(jquery版和原生JS版)

    已知BUG: Ubuntu系统下, onkeyup事件失效,详见: Ubuntu系统下onkeyup/onkeydown对中文输入失效bug. 查看演示: 点此查看DEMO 核心代码: 复制代码 代码如下: //原生JavaScript版本 window.onload=function(){ var js=document.getElementById('js');//获取文本域 var info=document.getElementsByTagName('p')[0];//获取要插入提示信息

  • 环形加载进度条封装(Vue插件版和原生js版)

    本文实例为大家分享了环形加载进度条封装代码,供大家参考,具体内容如下 1.效果预览 2.用到的知识 主要利用SVG的stroke-dasharray和stroke-dashoffset这两个属性. 在看下面文章之前,你需要了解 <!DOCTYPE html> <html> <head> <title>svg demo</title> <style type="text/css"> #line{ transition

  • 原生JS版和jquery版实现checkbox的全选/全不选/点选/行内点选(Mr.Think)

    日常项目中, 对于列表类文章或数据, 大概都会用到checkbox的全选或全不选的功能, 以前的项目中也写过checkbox的选择js, 但都没有整理过. 正好前几天一个兄弟遇到了这个问题, 索性, 我花了点时间, 用原生JS与jQuery分别写了一个版本, 考虑到使用时灵活性问题, 未封装, 需要的童鞋使用时自行改下相关参数. 功能介绍点此查看DEMO演示 1. 全选/全不选 选框一体实现, 即列表中选框的状态与全选/全不选框前的选框状态一致; 2. 自动更改 全选/全不选 选框的状态, 即列

  • 原生JS和jQuery版实现文件上传功能

    本文实例分享了原生JS版和jQuery 版实现文件上传功能的例子,供大家参考,具体内容如下 <!doctype html> <html lang="zh"> <head> <meta charset="utf-8"> <title>HTML5 Ajax Uploader</title> <script src="jquery-2.1.1.min.js"></

  • 利用原生JS与jQuery实现数字线性变化的动画

    前言 大家应该都有所体会,在一些数据展示的专题页里,有时候希望数字能动态从某一个数变化到另一个数,以此来吸引用户眼球,突出数据.于是有了下文. 在这里,我用了两种方式:一种是原生的JavaScript,另一种是jQuery插件. 数字线性变化的原理很简单,就是让数字增量变化,并循环动画. 原生JS版 首先获取DOM元素.为了兼容到IE6,兼容性方法如下: var domUtil = { // 获取DOM元素 get: function(query) { var _this = this; if(

  • 原生js仿jquery一些常用方法(必看篇)

    最近迷上了原生js,能不用jquery等框架的情况都会手写一些js方法,记得刚接触前端的时候为了选择器而使用jquery...现在利用扩展原型的方法实现一些jquery函数: 1.显示/隐藏 //hide() Object.prototype.hide = function(){ this.style.display="none"; return this; } //show() Object.prototype.show = function(){ this.style.displa

  • 表现、结构、行为分离的选项卡效果

    从大学开始就一直对JS很感兴趣,可是却很少实际操作,今天练练,试写一个tab,调试过程中才发现光看不练问题不少! 其特点是扩展方便,只要自己添加标题和内容即可,自动初始化. www.jb51.net表现.结构.行为分离的选项卡效果 我们 window.onload=resetTab; function getTabTitle(tab) { var childNodesList=tab.childNodes; var titleNodes=new Array(); var j=0; var i;

  • jQuery下实现等待指定元素加载完毕(可改成纯js版)

    先声明下这个方法的使用场合,以免误导大家. 比如在博客园,我们没法修改他的源代码, 那么只能想办法监视元素的出现了. 所以下面方法是在修改不了源码的情况下使用,而非写自己的项目. 今天在改博客几个样式的时候,以为很自然的加上js就可以实现了, 没想到那个是ajax加载的数据,而非页面首次加载的, 比如下面的 "提交评论" 按钮,右侧的 搜索按钮 等. 我很自然的写了 复制代码 代码如下: 1 $("#btn_comment_submit").removeClass(

随机推荐