发一个比较漂亮的选项卡动态增删的效果

先放个图片,我改下代码。

163邮箱选项卡效果

ul,li
{
margin:0;
padding:0;
list-style:none;
/*for close location*/
position:relative;
}
li
{
display:block;
width:130px;
height:25px;
float:left;
cursor:pointer;
overflow:hidden;
}
span
{
font-size:10pt;
color:#22b5d9;
font-weight:bold;
display:block;
}
#asgardCard li
{
font-size:10pt;
font-weight:bold;
color:#22b5d9;
border:1px solid #22b5d9;
margin:10px;
text-align:center;
line-height:1.5;
}

/*Asgard CardProgram Css Start*/
#itemsPanel,#itemsPanel li
{
margin:0;
padding:0;
list-style:none;
/*for close location*/
position:relative;
}
/*Clear Float:Referrence-->http://www.blueidea.com/tech/web/2005/3065.asp*/
/*There is defect:the attribute-content hold one line place.*/
ul:after
{
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
#cardContent
{
height:auto;
min-height:300px;
border:2px solid #cccccc;
clear:both;
}
#itemsPanel li
{
display:block;
width:130px;
height:25px;
float:left;
cursor:pointer;
overflow:hidden;
}
#cardFrame
{
width:100%;height:100%;border:1px solid #ffffff;margin:0;
}
.active
{
background:url('http://www.jb51.net//upload/20070928200415937.jpg') 0 0 no-repeat;
}
.default
{
background:url('http://www.jb51.net//upload/20070928200415937.jpg') 0 -25px no-repeat;
}
.title
{
font-size:10pt;
font-weight:bold;
line-height:2;
padding-left:10px;
display:block;
width:105px;
height:25px;
}
li .close
{
position:absolute;
top:9px;
left:115px;
display:block;
width:10px;
height:10px;
overflow:hidden;
}
.active .close
{
background:url('http://bbs.blueidea.com/attachments/2007/8/20/20070820_b3321ab700a7e293b3ceJODnkLUsGEhy.jpg') 0 -50px no-repeat;
}
.default .title
{
color:#999999;
}
.active .title
{
color:#000000;
}
.active .close:hover
{
background:url('http://bbs.blueidea.com/attachments/2007/8/20/20070820_b3321ab700a7e293b3ceJODnkLUsGEhy.jpg') -10px -50px no-repeat;
}
.default .close
{
background:url('http://bbs.blueidea.com/attachments/2007/8/20/20070820_b3321ab700a7e293b3ceJODnkLUsGEhy.jpg') -20px -50px no-repeat;
}
.default .close:hover
{
background:url('http://bbs.blueidea.com/attachments/2007/8/20/20070820_b3321ab700a7e293b3ceJODnkLUsGEhy.jpg') -30px -50px no-repeat;
}
/*Asgard CardProgram Css End*/

1.代码效果示例:

  • Kiss
  • Andy

注:以上代码为DOM动态组织的代码参考

2.点击下表,更换内容

  • 蓝色理想
  • Google中国
  • Email-126
  • 艾泽拉斯

3.以下为动态创建:

/*
* Field Declare ^-^
*/
var Asgard;
if(!Asgard)
Asgard={};
if(!Asgard.CardProgram)
Asgard.CardProgram={};
/*
*function:define Object ItemsPanel
*/
Asgard.CardProgram.ItemsPanel=function(id,frameId)
{
this.element=$(id);
this.register=new Array();
this.currentItem=null;
this.cardFrame=$(frameId);
this.element.className='itemsPanel';
}
/*
*function:add item from panel
*/
Asgard.CardProgram.ItemsPanel.prototype.addItem=function(item)
{
if(this.validateExist(item.element.getAttribute('id')))
return;
item.panel=this;
this.visitedRegister(item,"add");
this.element.appendChild(item.element);
}
/*
*function:delete item from panel
*/
Asgard.CardProgram.ItemsPanel.prototype.deleteItem=function(item)
{
this.visitedRegister(item,"delete");
this.element.removeChild(item.element);
}
/*
*Ajax or other
*/
Asgard.CardProgram.ItemsPanel.prototype.changeSubPage=function()
{
if(this.register.length==0)
{
this.cardFrame.src="";
return;
}

this.cardFrame.src=this.currentItem.url;
/*
*这里用户可以自己定义想要的页面,如果你想内嵌IFrame。
*/
}
Asgard.CardProgram.ItemsPanel.prototype.validateExist=function(id)
{
for(var i=0;i0)
{
this.currentItem=this.register[i-1];
this.currentItem.element.className="active";
}
else
this.currentItem=null;
}

this.changeSubPage();
}
else if(type=="active")
{
if(this.currentItem==item)
return;
else
{
for(k=0;k"+this.title+""+"";
this.addEventListener(this.$ES(this.element,'nobr')[0],'click',function(){mirror.activeItem();});
this.addEventListener(this.$ES(this.element,'a')[0],'click',function(){mirror.destroyItem();});
}
else
{
this.element.innerHTML=""+this.title+"";
this.addEventListener(this.$ES(this.element,'nobr')[0],'click',function(){mirror.activeItem();});
}

}
/*
*active item
*/
Asgard.CardProgram.Item.prototype.activeItem=function()
{
this.panel.visitedRegister(this,"active");
this.element.className="active";
}
/*
*function:reset item
*/
Asgard.CardProgram.Item.prototype.resetItem=function()
{
this.element.className="default";
}
/*
*function:destroy item
*/
Asgard.CardProgram.Item.prototype.destroyItem=function()
{
this.panel.deleteItem(this);
}
/*
*function:addListener to item
*/
Asgard.CardProgram.Item.prototype.addEventListener=function(element,type,handler)
{
if(element.addEventListener)
element.addEventListener(type,handler,true);
else
element.attachEvent("on"+type,handler,true);
}
/*
*function:usefull functions
*/
Asgard.CardProgram.Item.prototype.$C=function(tag)
{
if(tag && typeof tag =="string")
return document.createElement(tag);
else
return document.createElement('li');
}
Asgard.CardProgram.Item.prototype.$ES=function(element,tag)
{
return element.getElementsByTagName(tag);
}
function $(id)
{
return document.getElementById(id);
}

function attachExampleEvent()
{
var lists=$('asgardCard').getElementsByTagName('li');
for(var i=0;i

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

代码说明
1.我的CSS分割为2段了,第一段为此演视用,可自己定制,第二段为此框架必须。
2.script我也分割为2段,第一段为必须,第二段为客户定制的,我这里的代码是给一个实现参考。
3.以下的HTML代码为参考实现的必须容器代码 


代码如下:

<ul id="itemsPanel">
</ul>
<div id="cardContent">
    <iframe id="cardFrame">
    </iframe>
</div>

使用介绍:
1.ItemsPanel对象
   构造方法:new Asgard.CardProgram.ItemsPanel("itemsPanel","cardFrame").
   接受的2个参数,第一个为ul容器ID,第二个为我们需要展现标签对应的内容的irame的ID 。
   ItemPanel对象使用addItem方法添加Item。
   如果你需要创建多个ItemsPanel,可以自己参考我的范例来进行。
2.Item对象
   构造方法:new Asgard.CardProgram.Item("index","时空创意","http://www.skst.com.cn",true)接受4个参数
   第一个为打算创建的选项卡的id,第二个为打算创建的选项卡的标题,第三个为此选项卡对应的URL,第四个为是否为首页,因为我们也许会打算创建一个默认页面不允许关闭。当然如果你全部设置为true,那么也就是正常的选项卡效果了。

(0)

相关推荐

  • 发一个比较漂亮的选项卡动态增删的效果

    先放个图片,我改下代码. 163邮箱选项卡效果 ul,li { margin:0; padding:0; list-style:none; /*for close location*/ position:relative; } li { display:block; width:130px; height:25px; float:left; cursor:pointer; overflow:hidden; } span { font-size:10pt; color:#22b5d9; font-

  • Android实现类似网易新闻选项卡动态滑动效果

    本文会实现一个类似网易新闻(不说网易新闻大家可能不知道大概是什么样子)点击超多选项卡,选项卡动态滑动的效果. 首先来看看布局,就是用HorizontalScrollView控件来实现滑动的效果,里面包含了一个布局. 接下来我们在onCreat方法中加载布局和构建我们需要显示的数据 <code class="hljs avrasm"> @Override protected void onCreate(Bundle savedInstanceState) { super.on

  • Android实现知乎选项卡动态隐藏效果实例

    前言 因为最近手上项目也是资讯阅读类,简书,掘金,知乎的效果都想往项目上加,没事就来仿写. 选项卡动态隐藏.gif 效果呢,和知乎首页一样,可以去知乎看看:点击back键可以返回顶部.下面话不多说了,来一起看看详细的介绍吧. 想法: 列表上拉,选项卡隐藏,下滑出现:recycleView滚动监听(OnScrollListener)中onScrolled方法的dy参数,dy>0表示上拉,dy<0表示下滑,刚好合适. 选项卡怎么隐藏呢,属性动画,移动选项卡的相对位置View.TRANSLATION

  • JS选项卡动态替换banner图片路径的方法

    本文实例讲述了JS选项卡动态替换banner图片路径的方法.分享给大家供大家参考.具体分析如下: 这里演示一个选项卡演示如何动态替换图片的方法,用一个JS函数实现的定义鼠标滑过替换图片的路径. 参数说明如下: obj 当前触发事件的对象 hc 当前选中元素的类名 content 选择需要替换路径的图片 url 为图片的路径 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http

  • springboot vue接口测试前端动态增删表单功能实现

    目录 基于 springboot+vue 的测试平台开发 页面实现 1. 基础信息部分 2. 请求参数部分 3. 响应内容部分 基于 springboot+vue 的测试平台开发 继续更新 目前已经进入到接口定义功能的开发阶段,首先我还是直接在前段画了个大概的页面,先预览下: 不过目前只是画了这个页面都主要功能,细节未尽事宜待具体开发的时候再进一步完善. 从上面动态图上已经显示了大概情况,主要是创建接口的功能,其中还支持发送调试.发送请求的功能就直接参考 postman,用起来习惯. 页面实现

  • JS前端并发多个相同的请求控制为只发一个请求方式

    目录 描述如下 老版本cachedAsync 进阶版本 测试cacheAsync 快速搭建一个服务器 客户端 提示 描述如下 同时发多个相同的请求,如果第一个请求成功,那么剩余的请求都不会发出,成功的结果作为剩余请求返回 如果第一个请求失败了,那么接着发编号为2的请求,如果请求成功,那么剩余的请求都不会发出,成功的结果作为剩余请求返回 如果第二个请求失败了,那么接着发编号为3的请求,如果请求成功,那么剩余的请求都不会发出,成功的结果作为剩余请求返回 ...以此递推,直到遇到最坏的情况需要发送最后

  • vue中echarts关系图动态增删节点以及连线方式

    目录 echarts关系图动态增删节点及连线 echarts关系图vue完整代码 echarts关系图动态增删节点及连线 首先,echarts的关系图有个非常坑的地方,就是节点的id必须连续,否则增删之后节点无法连接! 下面是简单的演示实现,实际要用动态增删的话,要复杂的多得多. 我是用的关系图是力引导图 更新后不会重新渲染,只是动态增加的效果 //假设你已经渲染了关系图 test() { let option = this.chart.getOption() //获取option配置项 //S

  • JavaScript实现动态增删表格的方法

    在上方文本框填入"姓名/Email/ 年龄",实现在下方表格中动态添加或删除单元格 效果: 1. Html代码: <body> <p align="center" id="info"> 姓名 : <input type="text" id = "username"> Email : <input type="text" id = "em

  • PHP判断一个gif图片是否为动态图片的方法

    本文实例讲述了PHP判断一个gif图片是否为动态图片的方法.分享给大家供大家参考.具体方法如下: 如何使用PHP来判断一个gif图片是否为动态图片(动画)?首先想到的是使用getimagesize()函数来看type值,发现都是gif,所以这个办法是不可行的.下面是作者在网上看到的一个函数,用来判断gif是否为动图的.贴出来和大家分享 例子如下: 复制代码 代码如下: /*  * 判断图片是否为动态图片(动画)  */ function isAnimatedGif($filename) {  $

  • JS动态增删表格行的方法

    本文实例讲述了JS动态增删表格行的方法.分享给大家供大家参考,具体如下: function insertRow(tableName,className,bgcolor, cellContentArray){ var t = document.getElementByIdx(tableName); //取得table表 var tr = t.insertRow(); //插入一行 tr.className=className; //设置行的css tr.bgcolor=bgcolor; //设置行

随机推荐