js面向对象的选项卡
前言:
选项卡在项目中经常用到,也经常写,今天在github突然看到一个面向对象的写法,值得收藏和学习。
本文内容摘自github上的 helloforrestworld/javascriptLab ,稍作删减和整理,仅作记录和自学用途。在此感谢原作者。
html代码如下:
<div class="tab_wrap">
<div class="tab_item" id="tab1">
<div class="btns">
<span class="active">菜单1</span>
<span>菜单2</span>
<span>菜单3</span>
</div>
<div class="container">
<p class="active">11111</p>
<p>22222</p>
<p>33333</p>
</div>
</div>
<div class="tab_item" id="tab2">
<div class="btns">
<span class="active">栏目一</span>
<span>栏目二</span>
<span>栏目三</span>
<span>栏目四</span>
</div>
<div class="container">
<p class="active">内容一</p>
<p>内容二</p>
<p>内容三</p>
<p>内容四</p>
</div>
</div>
</div>
css代码如下:
.tab_wrap {
/*width: 60%;*/
margin: 0 auto;
background-color: #f0f0f0;
display: flex;
}
.tab_item {
width: 300px;
box-shadow: 2px 0px 4px rgba(0, 0, 0, 2);
margin: 0 40px;
}
.btns {
display: flex;
align-items: center;
justify-content: center;
}
.btns span {
flex:;
display: block;
text-align: center;
border-bottom: 2px solid #000;
padding: 5px 0;
transition: 200ms;
cursor: default;
}
.btns span:hover {
border-bottom: 2px solid rgb(46, 131, 242);
}
.btns span.active {
border-bottom: 2px solid rgb(46, 131, 242);
background-color: rgba(46, 131, 242, .2);
}
.container {
height: 260px;
}
.container p {
display: none;
padding:;
margin:;
width: 100%;
height: 100%;
text-align: center;
line-height: 260px;
}
.container p.active {
display: block;
}
重点来了,js代码如下:
<script>
// 构造函数
function Tab(item){
var tab = document.getElementById(item); this.btns = tab.querySelectorAll('span');
this.texts = tab.querySelectorAll('p');
this.prev = 0;
this.len = this.btns.length; this.current = 0; return this;
} Tab.prototype.toTap = function(){
var _this = this;
for (var i = 0; i < this.len; i++) {
this.btns[i].index = i;
this.btns[i].onclick = function(){
_this.play(this.index)
}
}
} Tab.prototype.play = function (index) { this.btns[this.prev].classList.remove('active');
this.texts[this.prev].classList.remove('active'); this.btns[index].classList.add('active');
this.texts[index].classList.add('active'); this.prev = index;
} var tab1 = new Tab('tab1');
tab1.toTap();
var tab2 = new Tab('tab2');
tab2.toTap();
</script>
总结:
该方法代码简洁语义明了。定义一个构造函数,在该函数原型上添加方法。在需要的地方new一个实例即可,可重用性非常高。
js面向对象的选项卡的更多相关文章
- 原生js面向对象编程-选项卡(自动轮播)
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- 原生js面向对象编程-选项卡(点击)
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- [Js]面向对象的选项卡实例
中间过渡环节:把面向过程的程序,改写成面向对象的形式 <html xmlns="http://www.w3.org/1999/xhtml"><head>&l ...
- js面向对象+一般方法的选项卡
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- js - 面向对象 - 小案例:轮播图、随机点名、选项卡、鼠标拖拽
面向对象 对象 : (黑盒子)不了解内部结构, 知道表面的各种操作. 面向对象 : 不了解原理的情况下 会使用功能 . 面向对象是一种通用思想,并非编程中能用,任何事情都能用. 编程语言的面向对象的特 ...
- 第十五节 JS面向对象实例及高级
实例:面向对象的选项卡 把面向过程的程序,改写成面向对象的形式 原则:不能有函数套函数,但可以有全局变量 过程: onload —— 改写成 构造函数,其中window.onload的功能是在页面加载 ...
- js面向对象高级编程
面向对象的组成 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...
- js面向对象、创建对象的工厂模式、构造函数模式、原型链模式
JS面向对象编程(转载) 什么是面向对象编程(OOP)?用对象的思想去写代码,就是面向对象编程. 面向对象编程的特点 抽象:抓住核心问题 封装:只能通过对象来访问方法 继承:从已有对象上继承出新的对象 ...
- ES6学习笔记(三):教你用js面向对象思维来实现 tab栏增删改查功能
前两篇文章主要介绍了类和对象.类的继承,如果想了解更多理论请查阅<ES6学习笔记(一):轻松搞懂面向对象编程.类和对象>.<ES6学习笔记(二):教你玩转类的继承和类的对象>, ...
随机推荐
- android framework 01
.(由下向上启动),Uboot引导内核(linux Kernel)启动,把内核从flash放到内存中,引导内核启动.内核是系统的核心,负责进程的管理内存的管理网络的管理.内核(Linux Kenel) ...
- C_深入(内存模型)
01 数据类型: 为什么有数据类型? 现实生活中的数据太多而且大小形态不一. 数据类型与内存的关系: 数据类型的本质:创建变量的模具,是固定大小的别名. #include "stdio.h& ...
- Python day3 知识总结
if salary.isdigit(): salary = int(salary)判断输入的salary是否是一个整数是否成立 for index,item in enumerate(product_ ...
- 手机浏览器,微信浏览器对background-color不显示的问题
PC上的浏览器可以正常显示,但是到了手机上就不显示了,古怪的问题花了我一晚上都没解决. 今天突然想到会不会是某些特立独行的了浏览器为了彰显个性,采用不同别人的解析方式呢? 我的原来CSS是这么写的: ...
- GridView-属性大全
这是个网格控件 他的实现也是通过adapter来实现的,感觉跟listview在使用上并没有多大的区别 常见属性如下 1.android:numColumns=”auto_fit” //GridVie ...
- 21. Node.Js Buffer类(缓冲区)-(一)
转自:https://blog.csdn.net/u011127019/article/details/52512242
- 洛谷 P1626 象棋比赛
P1626 象棋比赛 题目描述 有N个人要参加国际象棋比赛,该比赛要进行K场对弈.每个人最多参加两场对弈,最少参加零场对弈.每个人都有一个与其他人不相同的等级(用一个正整数来表示). 在对弈中,等级高 ...
- uva 1456(dp)
题意:有n个数字u1,u2,u3-un,每一个数字出现的概率pi = ui/(u1 + u2 + - + un),分成w组.计算期望值. 第一组例子的五个数字例如以下 30 5 10 30 25 分成 ...
- enq: TX - row lock contention故障处理一则
一个非常easy的问题,之所以让我对这个问题进行总结.一是由于没我想象的简单,在处理的过程中遇到了一些磕磕碰碰,甚至绕了一些弯路.二是引发了我对故障处理时的一些思考. 6月19日,下午5点左右.数据库 ...
- 鸟哥的Linux私房菜-----16、程序与资源管理
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/ ...