自定义Tab组件的实现

在上一篇博文中,我发表了自定义表格的实现,今天说下tab组件,Tab组件在MIS系统中很常用,而且实现逻辑较为简单。

不多说废话,

最终效果图如下:

以下为实现代码。

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JS Bin</title>
  <style type="text/css">
.ITab {

}

.ITab .TabContent {
    border:1px solid #CECECE;
    border-top: 0;
    padding: 10px;
}
.ITab > .TabBar {
    height:32px;
    border-bottom: 1px solid #CECECE;
}

.ITab > .TabBar  a {
    text-decoration: none;
    padding-left: 20px;
}

.ITab > .TabBar > ul{
    list-style-type: none;
    margin: 0 0 -1px 0;
    padding-left: 0px;
}

.ITab > .TabBar > ul > li {
    float: left;
    padding: 0 20px 0 10px;
    line-height: 30px;
    border-top:2px solid #34A637;
    border-radius: 5px 5px 0 0;
}

.ITab > .TabBar > ul > li:hover {
    background-color: #EEEEEE;
}

.ITab .borderBottom {
    border-bottom: 1px solid #CECECE;
}

.ITab .activeBorder {
    border-bottom: 1px solid #fff;
}

.ITab .borderRight {
    border-right: 1px solid #CECECE;
}

.ITab .borderLeft {
    border-left: 1px solid #CECECE;
}

.s-sicon {
background-image: url(http://s0.hao123img.com/res/skin/v4/lv.png);
background-position: -26px -357px;
background-repeat: no-repeat;

}
  </style>
<script src="https://code.jquery.com/jquery-1.9.1.min.js"></script>
<script type="text/javascript">
    function ITab(id) {
        this.id = id;

        this.init();
    }

    ITab.prototype.init = function() {
        var thisObj = this;
        $("#" + this.id + " .TabContent div").hide();
        $("#" + thisObj.id + " .TabContent div").eq(0).show();
        $("#" + this.id + " .TabBar ul li:eq(0)").addClass("activeBorder");

        $("#" + this.id + " .TabBar ul li a").on("click", function() {
            var index = $(this).parent().index();

            var oldTabItem = $("#" + thisObj.id + " .TabBar ul .activeBorder");
            var oldIndex = oldTabItem.index();
            oldTabItem.removeClass("activeBorder");
            $(this).parent().addClass("activeBorder");

            $("#" + thisObj.id + " .TabContent div").hide();
            $("#" + thisObj.id + " .TabContent div").eq(index).show();
        });
    }

$(function() {
    new ITab("itabtest");
});
</script>
</head>
<body>
<div class="ITab" id="itabtest">
<div class="TabBar">
<ul>
<li class="borderLeft borderRight borderBottom"><a class="s-sicon" href="#">Lorem</a></li>
<li class="borderRight borderBottom"><a href="#">Sed</a></li>
</ul>
</div>
<div class="TabContent">
    <div>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur venenatis mi vel nulla condimentum, accumsan fermentum quam varius. Mauris et semper tortor. Curabitur porta pretium lectus, vel eleifend dui maximus eu. Aliquam sit amet velit massa. Nullam eu pulvinar velit. Praesent vestibulum, ipsum ac molestie condimentum, neque ligula sagittis nisl, nec interdum dui nisi aliquet nulla. Quisque nec justo ipsum. Maecenas elit leo, finibus quis mattis nec, suscipit non nulla. Praesent ac tincidunt magna. Nullam vitae ipsum non nunc volutpat laoreet non a nisi. Donec tempor eu tortor id commodo. Etiam pretium, sapien sit amet commodo porttitor, diam ligula posuere justo, non pharetra quam tellus ut lectus. Mauris vel elit metus. Morbi ullamcorper aliquet purus, sit amet elementum est faucibus quis. Sed porttitor sodales quam, euismod ultricies odio.</div>
    <div>Sed quis accumsan dui. Donec scelerisque orci sit amet velit ornare sodales. Aenean fringilla viverra quam, in scelerisque diam lobortis sed. Curabitur vulputate dictum laoreet. In hac habitasse platea dictumst. Pellentesque vel orci vehicula, efficitur lacus sit amet, convallis quam. Quisque sit amet quam sed mauris vehicula eleifend. Etiam ac feugiat neque.</div>
</div>
</div>
</body>
</html>

转载注明在江湖,谢谢!
时间: 2024-08-06 21:32:24

自定义Tab组件的实现的相关文章

Vue可自定义tab组件

在工作中我们常常要用到tab组件,如果有用第三方组件库的话一般都会有这个组件,但如果没有使用第三方组件库,或者想要自定义tab,那么或许这个无依赖的tab组件将会极大地节约你的开发时间. 如何使用? 1. 首先先安装: npm i vue-cus-tabs -S 2. 在new vue之前引入样式并use一下VueCusTab: import 'vue-cus-tabs/style/index.css' import { installCusTabs } from 'vue-cus-tabs';

使用react context实现一个支持组件组合和嵌套的React Tab组件

纵观react的tab组件中,即使是github上star数多的tab组件,实现原理都非常冗余. 例如Github上star数超四百星的react-tab,其在render的时候都会动态计算哪个tab是被选中的,哪个该被隐藏: getChildren() { let index = 0; let count = 0; const children = this.props.children; const state = this.state; const tabIds = this.tabIds

Tab 滑动标签,综合ViewPager+Fragment+自定义Tab+ActionBar内容

1.效果图 第二个菜单TAB1,TAB2,TAB3是参照网上的例子,第一个菜单是在它的基础之上改变而来. 2.菜单 这里的菜单是通过两种方式来实现,一种是通过布局文件,一种是通过自定义组件LinearLayout.自定义只需要传入菜单的名字即可,切换时需要监听事件.下面是一个viewpager+fragment实现,在滑动时改变tab的选中项. 自定义tab底部线是采用TranslateAnimation动画来实现滚动,布局文件采用viewpager的方法onPageScrolled和onPag

自定义SlidingMenu组件

在网上学习了自定义slidingmenu组件,这里记录下其中的关键点. SlidingMenu其实是一个HorizontalScrollView,里面有两个布局,通过重写几个方法达到侧滑的效果. 首先原理是在LinearLayout外嵌套了HorizontalScrollView,SlidingMenu继承HorizontalScrollView. 重写onMeasure(int widthMeasureSpec, int heightMeasureSpec),onLayout(boolean

Ember.js 入门指南——自定义包裹组件的HTML标签

按照惯例,先做好准备工作,使用Ember CLI命令生成演示所需的文件: ember g route customizing-component-element ember g component customizing-component-element ember g route home ember g route about 默认情况下,组件会被包裹在div标签内.比如,组件渲染之后得到下面的代码: <div id="ember180">   <h1>M

【原创】android——Tabhost 自定义tab+底部实现+intent切换内容

1,实现tabhost自定义格式,再此仅仅显示背景和文字,效果图预览:(底边栏所示) (图片变形) 2,xml配置 activity_user的XML配置  1 <TabHost xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:id="@+id/tabhost&qu

java实现自定义同步组件的过程

实现同步组件twinsLock:可以允许两个线程同时获取到锁,多出的其它线程将被阻塞. 以下是自定义的同步组件类,一般我们将自定义同步器Sync定义为同步组件TwinsLock的静态内部类. 实现同步器需要继承AbstractQueuedSynchronizer并覆盖相应的方法. package com.lock; import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.AbstractQueuedSynchr

Flex 自定义 Zlert 组件!

说明: 原生的 Alert.show 参数,要显示的按钮你只能 Alert.OK | Alert.Cancel 这样; 自定义 Zlert 参数跟原生的 差不多,按钮写法是这样写的: {"btnId":"确定", "btnId2":"其他按钮名称"} ZlertWindow.mxml: com/components <?xml version="1.0" encoding="utf-8&qu

自定义JS组件——系列1(TableGrid | Toolbar | LinkButton | Pager)

2月份第一次JS组件,写了几个:TableGrid, Toolbar, LinkButton, Pager,现在发出来. TableGrid可以包含Toolbar, Pager. Toolbar可以包含LinkButton.这样就构成了具有工具栏.分页栏的数据表格控件.也就是说,这4个组件可以独立使用,也可以结合使用.通篇只采用一种结构来编写,若能看懂编写规则,往后就可以按照这种模式自定义JS控件了. 1 var fjn=fjn?fjn:{}; 2 (function($,global){ 3