这两天学prototype框架,用它写了一个类似IE7.0跟firefox中tab功能类似的控件,以求可以达到重用的目的,由于css学的不大好,css还没有调试好,暂时还很丑陋。有css熟的劳烦帖上来交流。代码有些地方写的还感觉有些恶心,有待提高,在下也是初学js,大家多包含。
js 代码
-
-
- function createEle(tag)
- {
- return document.createElement(tag);
- }
-
- function createDiv(_id)
- {
- var bgDiv = createEle("DIV");
- bgDiv.id = _id;
- return bgDiv;
- }
-
- TabContainer = Class.create();
- TabContainer.id = "__container_id__";
- TabContainer.itemContainerDivId = "__item_container_Div_id__";
- TabContainer.itemContainerId = "__item_container_id__";
- TabContainer.contentContainerId = "__content_container_id__";
- TabContainer.prototype = {
-
- initialize : function(_initTab,_options)
- {
- this.Tabs = new Array();
- this.initTab = _initTab;
- this.options =
- {
- container : document.body,
- maxTabs : 3,
- tabContainerClass : "tab-container",
- itemContainerClass : "item-container",
- itemContainerOLClass : "item-container-ol",
- contentContainerClass : "content-container"
- };
- this.init(this._options);
- },
-
-
- init : function(_options)
- {
- this.setOptions(_options);
- this.createTabContainer();
- this.addTab(this.initTab);
- Event.observe($(TabContainer.itemContainerId), "click", this.clickHandler.bind(this), true);
- Event.observe($(TabContainer.itemContainerId), "dblclick", this.dblclickHandler.bind(this), true);
- },
-
- createTabContainer : function()
- {
- var tabContainer = createDiv(TabContainer.id);
- tabContainer.className = this.options.tabContainerClass;
- tabContainer.appendChild(this.createTabItemContainer());
- tabContainer.appendChild(this.createTabContentContainer());
- this.options.container.appendChild(tabContainer);
- },
-
- createTabItemContainer : function()
- {
- var itemContainer = createDiv(TabContainer.itemContainerDivId);
- itemContainer.className = this.options.itemContainerClass;
- var itemContainerOL = createEle("ul");
- itemContainerOL.id = TabContainer.itemContainerId;
- itemContainerOL.className = this.options.itemContainerOLClass;
- itemContainer.appendChild(itemContainerOL);
- return itemContainer;
- },
-
- createTabContentContainer : function()
- {
- var contentContainer = createDiv(TabContainer.contentContainerId);
- contentContainer.className = this.options.contentContainerClass;
- return contentContainer;
- },
-
- setOptions : function(_options)
- {
- this.options.extend(_options||{});
- this.options.container = $(this.options.container);
- },
-
- addTab : function(_tab)
- {
- if(this.Tabs.length {
- $(TabContainer.itemContainerId).appendChild(_tab.tabItem);;
- $(TabContainer.contentContainerId).appendChild(_tab.tabContent);
- this.Tabs[this.Tabs.length] = _tab;
- _tab.show();
- alert(_tab.options.addCallBack);
- if(_tab.options.addCallBack)
- _tab.options.addCallBack();
- }
- },
-
- removeTab : function(_tabId)
- {
- if(this.Tabs.length>1)
- {
- for(var i=0;i {
- if(this.Tabs[i].tabId==_tabId)
- {
- $(TabContainer.itemContainerId).removeChild(this.Tabs[i].tabItem);
- $(TabContainer.contentContainerId).removeChild(this.Tabs[i].tabContent);
- if(this.Tabs[i].options.removeCallBack)
- this.Tabs[i].options.removeCallBack();
- this.Tabs.splice(i,1);
- if(i=this.Tabs.length-1)
- {
- this.Tabs[i-1].show();
- }
- else
- {
- this.Tabs[i].show();
- }
- }
- }
- }
- },
-
- showTab: function(_tabId)
- {
- for(var i=0;i {
- if(this.Tabs[i].tabId==_tabId)
- {
- this.Tabs[i].show();
- this.Tabs[i].tabItem.style.backgroundColor = "EEEEEE";
- this.Tabs[i].tabItem.setColor = true;
- }
- else
- {
- this.Tabs[i].hide();
- this.Tabs[i].tabItem.setColor = false;
- }
- }
- },
-
- clickHandler : function(evnt)
- {
- var srcEle = Event.element(evnt);
- var regxValue = /^\w+_item$/;
- if(regxValue.test(srcEle.id))
- {
- this.showTab(srcEle.id.substr(0,srcEle.id.length-5))
- }
- },
-
- dblclickHandler : function(evnt)
- {
- var srcEle = Event.element(evnt);
- var regxValue = /^\w+_item$/;
- if(regxValue.test(srcEle.id))
- {
- this.removeTab(srcEle.id.substr(0,srcEle.id.length-5))
- }
- }
- }
-
- Tab = Class.create();
- Tab.prototype = {
-
- initialize : function(_tabId,_tabItemValue,_tabContentValue,_options)
- {
- this.tabId = _tabId;
- this.Tabs = new Array();
- this.tabItem = null;
- this.tabContent = null;
- this.tabItemValue = _tabItemValue;
- this.tabContentValue = _tabContentValue;
- this.options =
- {
- itemClass : "tab-item",
- itemContentClass : "tab-content",
- addCallBack : null,
- removeCallBack : null
- };
- this.init(this._options);
- },
-
-
- init : function(_options)
- {
- this.setOptions(_options);
- this.createTabItem();
- this.createTabContent();
- Event.observe(this.tabItem, "mouseover", this.mouseOverHandler, true);
- Event.observe(this.tabItem, "mouseout", this.mouseOutHandler, true);
- },
-
- setOptions : function(_options)
- {
- this.options.extend(_options||{});
- },
-
- createTabItem : function()
- {
- var _tabItem = createEle("li");
- _tabItem.id = this.tabId+"_item";
- _tabItem.className = this.options.itemClass;
- _tabItem.innerHTML = this.tabItemValue;
- this.tabItem = _tabItem;
- },
-
- createTabContent : function()
- {
- var _itemContent = createDiv(this.tabId+"_content");
- _itemContent.className = this.options.itemContentClass;
- _itemContent.innerHTML = this.tabContentValue;
- this.tabContent = _itemContent;
- },
-
- show : function()
- {
-
- this.tabContent.style.display = "block";
- },
-
- hide : function()
- {
- this.tabItem.style.backgroundColor = "FFFFFF";
- this.tabContent.style.display = "none";
- },
-
- mouseOverHandler : function(evnt)
- {
- var srcEle = Event.element(evnt);
- srcEle.style.backgroundColor = "EEEEEF";
- },
-
- mouseOutHandler : function(evnt)
- {
- var srcEle = Event.element(evnt);
- if(srcEle.setColor!=true)
- srcEle.style.backgroundColor = "FFFFFF";
- }
- }
-
分享到:
相关推荐
在本主题中,我们关注的是"javascript 经典tab控件",这是一种常见的网页组件,用于组织和展示多块内容,让用户能够通过点击不同的标签来切换显示的内容。这种控件在许多网站和应用程序中都有应用,如设置页面、产品...
在编程界,Tab控件是一种常见的用户界面元素,它允许用户在不同的视图或内容之间进行切换,而无需打开新的窗口或关闭当前视图。在本文中,我们将深入探讨Tab控件的使用,包括它的基本概念、实现方式、常见功能以及在...
在Windows编程或者Web开发中,Tab控件是一种常见的用户界面元素,它允许用户在不同的页面或选项卡之间切换,以展示不同的内容。本教程将详细讲解Tab控件的使用方法以及如何禁用其中的某一页。 一、Tab控件的基本...
**Tab控件详解** 在软件开发中,Tab控件是一种常见的用户界面元素,它允许用户在多个页面或视图之间切换,每个页面通常称为一个标签页。这种设计大大提升了用户体验,因为它有效地组织了大量信息,使得用户能够快速...
在AJAX(Asynchronous JavaScript and XML)技术出现后,Tab控件得到了进一步的发展,能够实现无刷新页面切换,提升用户体验。以下是对Tab控件及其与AJAX关联的详细解释。 一、Tab控件的基本原理 Tab控件通常由...
"Tab控件+窗口分割"是一种常见的界面设计模式,它在许多应用程序中被广泛使用,如IDE(集成开发环境)、文本编辑器、文件管理器等。这种设计能够高效地组织和展示大量信息,使得用户能够在有限的屏幕空间内进行多...
二、JS实现Tab控件 1. 原生JavaScript实现:通过事件监听(如`addEventListener`)来处理用户对标签的点击,根据点击的标签切换显示的内容面板。同时,可以通过CSS样式控制,例如设置`display:none`或`display:...
这个“类似网易的javascript+css做的Tab控件”是一个模仿网易网站Tab功能的实现,利用JavaScript动态交互性和CSS样式设计来创建一个高效的用户体验。 首先,CSS(层叠样式表)在这个过程中起着关键作用,它定义了...
"ACE_ADMIN tab控件"是一个专门针对 ace admin 框架优化的Tab控件,它旨在提升框架原有Tab组件的功能,特别是在右键支持方面。Ace Admin是一个流行的后台管理界面模板,它以其简洁、高效和强大的功能而受到开发者的...
而"bootstrap-closable-tab.js"则是在原生Bootstrap Tab组件的基础上进行的扩展,增加了标签页的关闭功能,使得用户可以根据需要关闭不需要的标签页,提高了交互性和用户体验。 在这个扩展中,`bootstrap-closable-...
1、使用javascript实现的tab 控件,能动态加载数据。 2、使用反射实现了 将从数据库查询出来的数据集转换成对象集合的...求大侠 能给出对tab控件修改的意见。多么希望这个控件的功能能在大家的修改下变的更加强大。
在IT领域,Tab控件是一种常见的用户界面元素,它允许用户在多个视图或页面间进行切换,而无需打开新的窗口或使用复杂的导航结构。在本篇中,我们将深入探讨Tab控件的基本概念、功能、使用场景以及如何实现一个Tab...
3. JavaScript 交互:JavaScript是实现Tab控件动态功能的关键。一般会监听Tab标签的点击事件,当用户点击某个Tab时,切换内容区域的显示状态。这可能涉及到DOM操作(如修改元素的class属性来控制可见性)和动画效果...
在不使用JavaScript或任何服务器端技术的情况下,仅依靠CSS(层叠样式表)实现的静态TAB控件是一种高效且灵活的方法。本文将深入探讨如何使用CSS来创建这样的控件,并分享一些优化和扩展策略。 1. **基础结构** ...
在网页设计和开发中,Tab控件是一种常见的用户界面元素,用于组织和展示大量信息,让用户可以方便地在不同部分之间切换。本示例主要涵盖了两个应用实例:访淘宝Tab和访博客园(新闻频道的Tab)。我们将深入探讨Tab控件...
- index.html:主HTML文件,包含Tab控件的HTML结构和JavaScript代码。 - style.css:CSS文件,定义Tab控件的样式。 - script.js:JavaScript文件,实现Ajax请求和事件处理。 - server.php:PHP文件,处理Ajax请求并...
本文将深入探讨如何使用Ajax来实现一个Tab控件,以提供更流畅的用户体验。 首先,Tab控件是网页界面设计中常见的一种组件,用于组织和展示多个相关的页面或内容区域。用户可以通过点击不同的Tab来切换显示的内容,...
Tab控件通常由一排可点击的标签和与之对应的面板组成,用户可以通过点击不同的标签来切换显示的内容。本文将深入探讨如何使用JavaScript实现一个功能完备的Tab Pane控件,以及相关的源码解析。 首先,我们需要理解...
使用javascript实现的tab 控件,能动态加载数据。 使用反射实现了将从数据库 查询出来的数据集 字段转换成 对象集合的功能, ...求大侠 能给出对tab控件修改的意见。多么希望这个控件的功能更加强大。
实现一个最简纯净的Tab控件Demo涉及到HTML、CSS和JavaScript的基本应用,通过合理的布局和交互设计,我们可以创建出符合用户需求的高效界面。在实际项目中,可以根据具体的技术栈和应用场景选择合适的实现方式,以...