说明:附件aa.rar是源代码。
1 效果图
说明:
(1) 当点上面的标签,或鼠标移动到标签上面,下面的灰色框将显示对应的内容。
dddd-----对应着 xxxx; eeee对应着yyyy
(2) 各个标签可以动态添加
(3)该组件名为 FSimpleTab
2 组件应用代码
<!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="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<link href="ss.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="FSimpleTab.js"></script>
</head>
<body>
<!--组件将在id为xxx的div下显示-->
<div id="xxx" style="position: absolute;border: 1px solid #ccc;top:80px;left:10px"></div>
<script language=Javascript>
var pa="{'width':200,'height':100,'headHeight':20,'targDiv':'xxx'}";
//定义一个FSimpleTab组件,其参数是json格式-->
var s=new FSimpleTab(pa);
s.init();//初始化
//加入标签内容
s.addItem("{'title':'dddd','content':'xxxx'}")
s.addItem("{'title':'eeee','content':'yyyy'}");
</script>
</body>
</html>
3 ss.css代码
@charset "utf-8";
.FSimpleTabBox{/*组件所占区域的外观,许多会被覆盖*/
width: 746px;
border: 1px solid #ccc;
background: #fff;
position: absolute;
height:80px;
left: 272px;
top: 36px;
}
.FSimpleTabClient {/* 标签显示区域外观*/
width:auto;
left:0px;
background:#ddd;
color:#f00;
}
.FSimpleTab{/*标签所在的整体区域外观
设定项目列表Ul元素的属性,其中background
用来设定连贯于各个列表项目下的横线,否则它们会彼此分离,
用了一张事先准备好的图片,让它放置在底部,水平重复*/
height: 20px;
margin: 0;
padding-left: 0px;
padding-right: 0px;
width:100%;
background:
url('http://tech.tom.com/images/computer/2004/02/12/bottom.gif')
repeat-x bottom;
}
.FSimpleTab li{/*各个标签背后的外观,设这一层目的是为了方便以后均分
标签所在的整体区域。
设定各个列表项目的属性,display属性设
定取消项目间的分行,list-style-type设定取消列表项目前的符号*/
margin: 0 auto;
display: inline;
list-style-type: none;
position: relative;
display:inline;
float:left;
}
.FSimpleTab a:link, .FSimpleTab a:visited{/* 这是是展现出来的标签外观。
设定标签卡中超链接的文字的属性*/
float: left;
background: #f3f3f3;
font-size: 12px;
line-height: 14px;
font-weight: bold;
padding:2px 20px 2px 20px;
margin-right: 4px;
border: 1px solid #ccc;
text-decoration: none;
color: #666;
}
.FSimpleTab a:link.selectedtab, .FSimpleTab a:visited.selectedtab{
/*设定当前被选中的标签卡中超链接的属性*/
border-bottom: 1px solid #fff;
background: #fff;
color:#00F;
}
.FSimpleTab a:hover{/*设定超链接鼠标浮动效果*/
background: #fff;
}
4 FSimpleTab.js代码
function FSimpleTab(paraJson ){ //构造方法,也定义了一个类
//定义属性,
var dd=eval("("+paraJson+")");
this.width= dd.width;
this.height=dd.height;
this.targDiv=document.getElementById(dd.targDiv);
this.targName=this.targDiv.getAttribute("id");
this.tabHead=null;
this.tabClient=null;
this.headHeight=20;
if (dd.headHeight !=null ){
this.headHeight=dd.headHeight;
}
this.tID=0;
this.count=0;//保存tabItem个数
this.targDiv.style.width=this.width+"px";
this.targDiv.style.height=this.height+"px";
//方法定义
//初始方法
this.init=function(){
//创建TabHeand
var div0=document.createElement("ul");
div0.setAttribute("id",this.targName+"FSimpleTab");
div0.className="FSimpleTab";
div0.style.height=this.headHeight+"px";
this.tabHead=div0;
this.targDiv.appendChild(div0);
//创建Tab显示区域
var div1=document.createElement("div");
div1.setAttribute("id",this.targName+"FSimpleTabClient");
div1.className="FSimpleTabClient";
var h=this.targDiv.clientHeight-this.headHeight;
if (h>0 ) div1.style.height=h+"px";
else div1.style.height="20px";
div1.style.top=this.headHeight+"px"
this.tabClient=div1;
this.targDiv.appendChild(div1);
}
//添加一个tab项目
this.addItem=function(paraJson){
//向表头添加标题信息之li
var dd=eval("("+paraJson+")");
var li=document.createElement("li");
//向表头添加标题信息之a
lia=document.createElement("a");
this.targDiv.getAttribute("ID");
lia.setAttribute("id",this.targName+"FSimpleTabTitle"+this.count);
lia.setAttribute("idno",this.count);
lia.setAttribute("href","#");
lia.onclick=(function(v) {
return function() {
//调用FSimpleTab对象的ShowTabs方法
v.ShowTabs(v,this); //这里的this是事件源对象,是dom树中的一个节点
};
}) (this);
lia.onmousemove= (function(v) {
return function() {
//调用FSimpleTab对象的ShowTabs方法
v.ShowTabs(v,this); //这里的this是事件源对象,是dom树中的一个节点
};
}) (this);
lia.innerHTML=dd.title;
li.appendChild(lia);
this.tabHead.appendChild(li);
//向显示区添加显示项目
var div0=document.createElement("div");
div0.setAttribute("id",this.targName+"FSimpleTabs"+this.count);
div0.setAttribute("idno",""+this.count);
div0.style.display="none";
div0.innerHTML=dd.content;
this.tabClient.appendChild(div0);
this.count=this.count+1;
}
//内部方法,显示选中的项目
this.ShowTabs=function(thisObj,e){
var ID=e.getAttribute("idno");
if(ID!=thisObj.tID){
eval ("document.getElementById(this.targName+'FSimpleTabTitle"+[thisObj.tID]+"').className='';");
eval ("document.getElementById(this.targName+'FSimpleTabTitle"+[ID]+"').className='selectedtab';");
eval("document.getElementById(this.targName+'FSimpleTabs"+[thisObj.tID]+"').style.display='none';");
eval("document.getElementById(this.targName+'FSimpleTabs"+[ID]+"').style.display='';");
thisObj.tID=ID;
}
}
}
- 大小: 3.8 KB
分享到:
相关推荐
在使用Jquery easyui框架开发Web界面时,tab组件是经常用到的一个界面元素。Tab组件可以实现页面内内容的分块展示,提高页面的使用效率,用户可以通过切换不同的tab来查看不同的内容区块。在实际应用中,经常需要在...
1. **React基础**:React Native基于React,这是一个用于构建用户界面的JavaScript库。React采用组件化思维,允许开发者将UI拆分为可复用的组件,每个组件都有自己的状态和生命周期方法。在这个食谱应用中,我们可能...
- uni-app使用类Vue开发,一个Vue文件编译为四个微信页面文件(wxml,wxss,json,js)。因此可以尝试直接写一个custom-tab-bar.vue文件,但实际上只能在uni-app下创建一个custom-tab-bar目录并编写微信小程序要求的...
jQuery.switchPage.js 知识点 通过css使div全屏 实现jQuery插件开发 重写鼠标滚动事件 切屏动画实现 开发过程 在sublime text 下开发,安装emmet插件,快速书写html代码 ! + tab : 快速生成html5文档结构 #container...
- **标记缩进规范**:最高级别的标记采用左对齐方式书写,下一级标记相对于父标记向右缩进一个Tab的距离。 ##### 2. 客户端JavaScript规范 - **变量命名规范**:变量名首字母必须小写,并使用类型缩写开头;常量及...
【标题】"YT-REACT-TABS"是一个基于React技术实现的YouTube视频播放器的源码项目,专门用于展示如何在React应用中构建一个类似YouTube的Tab切换功能。这个项目可能包括了创建、切换和管理多个视频播放Tab的组件化...
在具体的代码风格方面,JavaScript编码规范规定了代码的布局和格式,例如二元运算符两侧必须有一个空格,而一元运算符与操作对象之间不允许有空格。左花括号“{”前必须有一个空格,以保持代码块的清晰性。这些规则...
1. **缩进**:强制要求使用4个空格作为缩进层级,禁止使用2个空格或tab字符。这样做可以确保代码格式的一致性,避免因为缩进不一致带来的混乱。 2. **单行长度**:每行代码不应超过120个字符。这一规定有助于保持...
1. 换行缩进约束(四个空格或一个 tab),以确保代码的可读性和维护性。 2. 标点或分号补齐,以确保代码的正确性和可维护性。 3. 参照 demo 中其他格式,以确保代码的一致性和可维护性。 组件模版示例 1. 计量单位...
-修正了使用IFrameUrl的Tab在切换过程中会重复加载的问题,这是一个在v2.1.6引入的问题(feedback:eroach)。 -修正了启用AutoPostBack的Grid,其RowClick会覆盖LinkButtonField, HyperLinkField, CheckBoxField的...
React-Native-Front-End 是一个专为开发跨平台移动应用而设计的前端框架,它允许开发者使用JavaScript和React库来构建原生的iOS和Android应用程序。React Native结合了Web开发的灵活性和移动开发的强大功能,让...
-修正了使用IFrameUrl的Tab在切换过程中会重复加载的问题,这是一个在v2.1.6引入的问题(feedback:eroach)。 -修正了启用AutoPostBack的Grid,其RowClick会覆盖LinkButtonField, HyperLinkField, CheckBoxField的...
- 媒体查询应靠近相关规则,而非集中在一个文件。 - 带前缀的属性应保持垂直对齐,如`.div{-webkit-box-shadow:10px 10px 5px #888;box-shadow:10px 10px 5px #888;}`。 - 单条声明语句建议写在同一行。 - 使用...
TypeScript是JavaScript的一个超集,它为JavaScript增加了静态类型检查和许多现代语言特性,如接口、泛型和装饰器等。这些特性有助于提高代码质量,减少运行时错误,同时为大型项目提供更好的可维护性和可扩展性。 ...
Vue.js 是一个流行的前端JavaScript框架,用于构建用户界面。它以其简单易学、灵活和组件化的特点深受开发者喜爱。在给定的标题和描述中提到的 "vue-atom-snippets" 是一个专门为Atom编辑器定制的Vue开发工具,它...
2. **文本缩进**:推荐使用4个空格进行代码缩进,避免使用制表符,以确保不同编辑器下的显示一致性。 3. **注释**:注释应简洁明了,描述代码功能和逻辑,方便他人理解。注释应使用英文,遵循多行注释和单行注释的...
- 【强制】使用4个空格作为一个缩进层级,禁止使用2个空格或Tab字符进行缩进。这样可以保证代码的一致性和可读性。 ##### 2. 属性 - **2.1 属性引号** - 【强制】对于属性的定义使用双引号,禁止使用单引号或者不...