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学习笔记(二):教你玩转类的继承和类的对象>, ...
随机推荐
- 设置select组件中的默认值
会员卡类型 <select id="name2" style="width:140px"> <option value="Ak& ...
- iOS8 对开发人员来说意味着什么?
今天凌晨.Apple WWDC2014 iOS8 正式推出. 或许,对于广大iOS用户来说,iOS8的创新并非特别多. 但对于开发人员来说,影响却将会是无比巨大的! 正如Apple官网上的广告:Hug ...
- 用AOP改善javascript代码
Aop又叫面向切面编程,用过spring的同学肯定对它非常熟悉,而在js中,AOP是一个被严重忽视的技术点,这篇就通过下面这几个小例子,来说说AOP在js中的妙用. 1, 防止window.onloa ...
- FFT之大数乘法
#include <iostream> #include <stdio.h> #include <cmath> #include <algorithm> ...
- log大全
http://www.iconfont.cn/search/index?q=%E6%88%91%E7%9A%84&page=3
- Flex 转载
- ArcGIS Engine中空间参照(地理坐标)相关方法总结
转自原文 ArcGIS Engine中空间参照(地理坐标)相关方法总结 1.创建空间参考 /// <summary> /// 根据prj文件创建空间参考 /// </summary& ...
- Tomcat之——配置项目有虚拟路径
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47024863 非常easy,在Tomcat的Server.xml文件里的Host节 ...
- iOS开发--漫谈内存管理(一)
1.MRC与ARC 苹果提供两种内存管理机制:一种是MRC(manual reference count),即手动引用计数:还有一种是ARC(auto reference count).即自己主动引用 ...
- 怎样在nat方式的虚拟机下做ssh连接
很多人在本机做測试都是用桥接的方式让虚拟机上网. 假设ip地址紧张或者根本就不同意我们拥有一个局域网的ip.这时候便能够使用NAT方式+putty来远程操作. 第一步,打开设备-Network-更改网 ...