介绍下京东的(选项卡中的选项卡)是怎么实现的

我们都谁知道选项卡是通过数组实现的,那么选项卡中的选项卡无非就是一个二维数组。

道理逻辑很简单,下面是我实现的一个方法:

  1 <!DOCTYPE html>
  2 <html>
  3     <head>
  4         <meta charset="UTF-8">
  5         <title>选项卡嵌套选项卡</title>
  6         <style type="text/css">
  7             *{
  8                 padding: 0;
  9                 margin: 0;
 10                 /*border: 1px solid red;*/
 11             }
 12             li{
 13                 list-style: none;
 14             }
 15             .tab-wrap{
 16                 width: 1004px;
 17                 height: 500px;
 18                 border: none;
 19                 margin: 50px auto;
 20                 overflow: hidden;
 21             }
 22             .tab-title{
 23                 width: 200px;
 24                 height: 100%;
 25                 float: left;
 26             }
 27             .tab-content{
 28                 width: 800px;
 29                 height: 100%;
 30                 float: left;
 31                 position: relative;
 32             }
 33             .tab-title ul{
 34                 width: 100%;
 35                 height: 100%;
 36             }
 37             .tab-title ul li{
 38                 display: block;
 39                 width: 100%;
 40                 /*height: 125px;*/
 41                 font-size: 20px;
 42                 text-align: center;
 43                 cursor: pointer;
 44                 line-height: 125px;
 45                 border-bottom: 1px dashed #909090;
 46             }
 47             .tab-title ul li:last-child{
 48                 border-bottom: none;
 49             }
 50             .tab-title ul .active{
 51                 background: #F55A00;
 52             }
 53             .tab-content-showImage{
 54                 width: 100%;
 55                 height: 100%;
 56             }
 57             .tab-content-subtitle{
 58                 position: absolute;
 59                 left: 0px;
 60                 bottom: 0px;
 61                 background: white;
 62                 filter(alpha: 80);
 63                 opacity: 0.8;
 64             }
 65             .tab-content-subtitle li{
 66                 display: inline-block;
 67                 height: 50px;
 68                 border: 1px solid lightblue;
 69                 text-align: center;
 70                 line-height: 50px;
 71                 color: black;
 72                 cursor: pointer;
 73             }
 74             .tab-content-subtitle .active{
 75                 background: red;
 76             }
 77         </style>
 78     </head>
 79     <body>
 80         <!--创建容器-->
 81         <div class="tab-wrap" id="tab">
 82             <div class="tab-title">
 83                 <ul></ul>
 84             </div>
 85             <div class="tab-content">
 86                 <img class="tab-content-showImage" />
 87                 <ul class="tab-content-subtitle"></ul>
 88             </div>
 89         </div>
 90     </body>
 91     <script type="text/javascript">
 92         window.onload = function(){
 93             var tab = document.getElementById(‘tab‘);
 94             var tabTitle = document.getElementsByClassName(‘tab-title‘)[0];
 95             var tabTitlelist = tabTitle.getElementsByTagName(‘ul‘)[0];
 96             var tabContent = document.getElementsByClassName(‘tab-content‘)[0];
 97             var showImage = document.getElementsByClassName(‘tab-content-showImage‘)[0];
 98             var subtitle = document.getElementsByClassName(‘tab-content-subtitle‘)[0];
 99             var arr = [
100                 {
101                     "title":‘标题1‘,
102                     "subtitle":[‘小标题1‘,‘小标题2‘,‘小标题3‘],
103                     "pic":[‘../img/timg (1).jpg‘, ‘../img/timg (2).jpg‘, ‘../img/timg (3).jpg‘]
104                 },
105                 {
106                     "title":‘标题2‘,
107                     "subtitle":[‘小标题1‘,‘小标题2‘,‘小标题3‘,‘小标题4‘],
108                     "pic":[‘../img/timg (4).jpg‘, ‘../img/timg (5).jpg‘, ‘../img/timg (2).jpg‘, ‘../img/timg (1).jpg‘]
109                 },
110                 {
111                     "title":‘标题3‘,
112                     "subtitle":[‘小标题1‘,‘小标题2‘,‘小标题3‘,‘小标题4‘,‘小标题5‘],
113                     "pic":[‘../img/timg (2).jpg‘, ‘../img/timg (5).jpg‘, ‘../img/timg (3).jpg‘, ‘../img/timg (1).jpg‘,‘../img/timg (4).jpg‘]
114                 },
115                 {
116                     "title":‘标题4‘,
117                     "subtitle":[‘小标题1‘,‘小标题2‘,‘小标题3‘],
118                     "pic":[‘../img/timg (1).jpg‘, ‘../img/timg (2).jpg‘, ‘../img/timg (3).jpg‘]
119                 }
120             ];
121
122             for(var i = 0; i < arr.length; i++){
123                 var oLi = document.createElement(‘li‘);
124                 oLi.innerHTML = arr[i].title;
125                 oLi.style.height = Math.floor(parseInt(500/arr.length) - 1) + ‘px‘;
126                 oLi.index = i;
127                 if(i == 0){
128                     oLi.className = ‘active‘;
129                     changeTab(0);
130 //                    break;
131                 }
132                 oLi.onclick = function(){
133                     highLight(this);
134                     subtitle.innerHTML = ‘‘;
135                     changeTab(this.index);
136                 }
137                 tabTitlelist.appendChild(oLi);
138             }
139
140 //            changeTab(0);
141
142             function changeTab(num){
143
144                 showImage.src = arr[num].pic[0];
145
146
147                 for(var j = 0; j < arr[num].subtitle.length; j++){
148                     var aLi = document.createElement(‘li‘);
149                     aLi.innerHTML = arr[num].subtitle[j];
150                     aLi.style.width = Math.floor(parseInt(800/arr[num].subtitle.length) - 2) + ‘px‘;
151                     aLi.index = j;
152                     if(j == 0){
153                         aLi.className = ‘active‘;
154                     }
155                     aLi.onmouseover = function(){
156                         highLight(this);
157                         this.parentNode.previousElementSibling.src = arr[num].pic[this.index];
158                     }
159                     subtitle.appendChild(aLi);
160                 }
161             }
162
163             function highLight(ele) {
164                     var aLi = ele.parentNode.children;
165                     for(var i = 0; i < aLi.length; i++) {
166                         aLi[i].className = ‘‘;
167                     }
168                     ele.className = ‘active‘;
169                 }
170         }
171     </script>
172 </html>

最终效果是这样的:

时间: 2024-10-13 05:52:25

介绍下京东的(选项卡中的选项卡)是怎么实现的的相关文章

简单介绍下怎么在spring中使用RabbitMQ

这篇文章主要介绍了简单了解如何在spring中使用RabbitMQ,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 常见的消息中间件产品: (1)ActiveMQ ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现. (2)RabbitMQ AMQP协议的领导实现,支持多种场景.淘宝的MySQL集群内部有使用它进行通讯,Open

【windows】windows系统下,在任务管理器的进程选项卡中查看PID/任务管理器怎么查看PID

PID,就是windows上的进程ID,是一个进程的唯一标识值. 那今天启动JDK跑起来一个项目之后,想要在任务管理器中查看这个JDK所在进程的PID但是看不到. 怎么解决? 1.我在任务管理器的服务中查看上面PID 但是排序之后最大值才是7000多 2.进程选项卡中比较完整的进程,但是没有PID 3.点击上面的  查看  按钮,选择列 4.勾选PID 可显示 5.成功看到进程PID

怎么实现FineReader选项卡中的保存模式的修改

PDF 是我们平时广泛使用的文档格式,在ABBYY Finereader这款OCR文字识别软件中PDF文档的显示不会因电脑不同而有差异,可加密保护,非常适合在电子存档中进行保存,那么我们在ABBYY Finereader中该如何修改这保存模式呢?   该选项卡上的保存选项分为以下几类: 默认纸张大小 从下拉列表中选择保存为 PDF 格式所用纸张尺寸. 保存模式 根据计划使用电子文档的方式,从以下选项中选择一个选项: ● 仅适用于文本和图片 该选项仅保存已识别的文本和关联图片.可对页面进行全文搜索

leaflet地图在选项卡中不正常显示

可以在选项卡中加个click事件,调用下 <a href="#tab1" >tab1</a><a href="#tab2" onclick="$.expandMap();">tab2</a> var map = null;$(function(){ //加载gis地图 var southWest = L.latLng(*, *), northEast = L.latLng(*, *), bounds

选项卡中i的问题

在选项卡中,有一个最经典也是最让初学者难以理解的问题,就是i的问题,为什么onclick事件里边的i不能用呢,这里要介绍一下js的执行时机问题,在js的for循环中,只有第一层是可以用i的,在套一层的话里边的i就不能用了.为什么呢,因为js中for循环执行的很快,在这个选项卡中,for循环几次只是给按钮添加了几次点击事件,然后就循环完了,当开始执行click事件的时候,i已经是循环完的那个i.可是如果我们想用这个循环的i该怎么办呢?如上图,介绍了两种方法可以解决这个问题:1>自定义一个属性,把i

简单的介绍下WPF中的MVVM框架

最近在研究学习Swift,苹果希望它迅速取代复杂的Objective-C开发,引发了一大堆热潮去学它,放眼望去各个培训机构都已打着Swift开发0基础快速上手的招牌了.不过我觉得,等同于无C++基础上手学习C#一样,即使将来OC被淘汰,那也是N年之后的事情,如果真的要做IOS开发,趁现在Swift才刚开始,花那么几个月去了解一下OC绝对是一件有帮助的事情. 扯远了,我前几天刚接触到一个叫做mvvm的框架,发现很有意思,带着学习的态度来写点东西,不足之处一起研究.还有一个很重要的原因,我发现不少同

关于&ldquo;接收连接器&rdquo;中各选项卡答疑篇

初次接触Exchange Server 2010时都会有一些关于"接收连接器"中各个选项卡会有一些疑问,今天我们来一起聊聊这个问题. 首先我先以一个初学者的身份提出如下问题: 1. 安装好Exchange 2010后,"接收连接器"中的"Default"和"Internet"哪条真正在邮件接收时起到了作用?,如下图示 2.关于"接收连接器"属性页中的"身份验证"各项指的是什么意思?有无详

mui在tab选项卡中echarts图表不能动态随页面变化大小 只能固定大小

在mui tab选项卡中一直都不能让echarts动态变化大小 只能固定大小来展示图表,网上说的window.onresize = mycharts.resize;方法根本就没有效果,后面在https://blog.csdn.net/dreamcarp/article/details/71439060博客才找到了解决方法,特意记录下来 浏览器有warning:cannot get height and width. 解决方法: //echarts-content是echarts图表div的id

Windows平台下如何在C#中调用Python

最近迷上了Python,发现它能够做很多C#无法完成的事情,比如,调用CMD或者在CMD中执行一个exe文件命令行并获得输出的结果.过程简单,处理起来也非常方便,但如果要用C#调用Python文件呢,没关系,你想到的肯定早就有也人想到过.网上Google一下,超级多.索性拿来实践吧. 首先要用到的就是这个软件:IronPython,官方下载地址:http://ironpython.codeplex.com 安装在Windows下之后去它的安装地址查找下面这两个文件: IronPython.dll