JavaScript实现多层颜色选项卡嵌套


Posted in Javascript onSeptember 21, 2020

本文实例为大家分享了JavaScript实现多层颜色选项卡嵌套的具体代码,供大家参考,具体内容如下

这是学JavaScript时候的一个作业,如果没有思路还是挺有难度的,但是思路正确的话一步一步来就很简单做出来了。

实现效果

JavaScript实现多层颜色选项卡嵌套

HTML部分代码

<div class="box" id="box">
 <ul id="leftBox">
  <li class="active">a</li>
  <li>b</li>
  <li>c</li>
  <li>d</li>
 </ul>
 <div id="rightBox">
  <div id="rightBox1" class="active">
  <a href="#" >a1</a>
  <ul class="tabUl">
   <li class="hover">a1</li>
   <li>a2</li>
   <li>a3</li>
   <li>a4</li>
  </ul>
  </div>
  <div id="rightBox2">
  <a href="#" >b1</a>
  <ul class="tabUl">
   <li class="hover">b1</li>
   <li>b2</li>
   <li>b3</li>
   <li>b4</li>
  </ul>
  </div>
  <div id="rightBox3">
  <a href="#" >c1</a>
  <ul class="tabUl">
   <li class="hover">c1</li>
   <li>c2</li>
   <li>c3</li>
   <li>c4</li>
   <li>c5</li>
   <li>c6</li>
  </ul>
  </div>
  <div id="rightBox4">
  <a href="#" >d1</a>
  <ul class="tabUl">
   <li class="hover">d1</li>
   <li>d2</li>
   <li>d3</li>
   <li>d4</li>
  </ul>
  </div>
 </div>
</div>

css部分代码

<style>
 * {
  margin: 0px;
  padding: 0px;
  list-style: none;
  text-decoration: none;
 }

 .box {
  width: 800px;
  border: 1px solid #000000;
  margin: 20px auto;
  background: blue;
 }

 .box:after {
  content: "";
  display: block;
  clear: both;
 }

 #leftBox {
  float: left
 }

 #rightBox {
  float: left;
 }

 #leftBox li {
  width: 200px;
  height: 89px;
  background: red;
  margin-bottom: 2px;
  color: #fff;
  font: 50px/89px "黑体";
  text-align: center;
 }

 #rightBox div {
  display: none;
 }

 #rightBox .active {
  display: block;
 }

 #rightBox a {
  display: block;
  width: 600px;
  height: 325px;
  background: #0F0;
  font-size: 100px;
  color: #000;
  text-align: center;
  text-decoration: none;
  line-height: 360px;
 }

 .tabUl {
  display: table;
  width: 100%;
 }

 .tabUl li {
  display: table-cell;
  background: #909;
  color: #fff;
  font-size: 20px;
  text-align: center;
  height: 40px;
  line-height: 40px;
  border-right: 2px solid #03C;
  cursor: pointer;
 }

 .tabUl li.hover {
  background: #fff;
  color: #000;
 }

 #leftBox .active {
  background: yellow;
  color: #000;
 }
</style>

JavaScript实现代码

思路:鼠标移入左边的每个li后,都会改变他的颜色,所以只需要改变class名,同时右边也会显示对于的div,有对应的话一般都会用到自定义索引值和this…

<script>
 /* 
 点击左边的li后,所点击li加上class名,其它清除所有,然后右边对应索引值的div也加上class=active,所以要用到this

  */

 //获取元素
 var lUl = document.getElementById('leftBox')
 var rUl = document.getElementById('rightBox')
 var lLi = lUl.getElementsByTagName('li')
 var oDiv = rUl.getElementsByTagName('div')

 //改变左边样式
 for (var i = 0; i < lLi.length; i++) {
  //自定义索引
  lLi[i].index = i
  lLi[i].onmouseenter = function () {
  //清空所有classname
  for (var j = 0; j < lLi.length; j++) {
   lLi[j].className = ''
   oDiv[j].className = ''
  }
  //给相应的li添加上classname
  this.className = 'active'
  oDiv[this.index].className = 'active'
  }
 }


 //右边
 for (var k = 0; k < oDiv.length; k++) {
  fn(oDiv[k])
 }
 function fn(parent) {
  //获取用到的元素
  var rLi = parent.getElementsByTagName('li')
  var oa = parent.getElementsByTagName('a')[0]
  for (var i = 0; i < rLi.length; i++) {
   rLi[i].onmouseenter = function(){
   for (j = 0; j < lLi.length; j++) {
    rLi[j].className = ''
   }
   this.className = 'hover'
   //把li标签中的文字传到a标签中
   oa.innerHTML = this.innerHTML
   }
  
  }
  
 }
</script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript constructor和instanceof,JSOO中的一对欢喜冤家
May 25 Javascript
jQuery EasyUI API 中文文档 可调整尺寸
Sep 29 Javascript
基于jQuery的公告无限循环滚动实现代码
May 11 Javascript
JavaScript操作URL的相关内容集锦
Oct 29 Javascript
js判断鼠标位置是否在某个div中的方法
Feb 26 Javascript
Vue.js原理分析之observer模块详解
Feb 17 Javascript
简单谈谈React中的路由系统
Jul 25 Javascript
js中如何完美的解析数据
Mar 18 Javascript
vue-cli2.x项目优化之引入本地静态库文件的方法
Jun 19 Javascript
VUE脚手架具体使用方法
May 20 Javascript
JavaScript offset实现鼠标坐标获取和窗口内模块拖动
May 30 Javascript
让JavaScript代码更加精简的方法技巧
Jun 01 Javascript
JS实现无限轮播无倒退效果
Sep 21 #Javascript
js+canvas绘制图形验证码
Sep 21 #Javascript
vue中路由跳转不计入history的操作
Sep 21 #Javascript
JS实现放大镜效果
Sep 21 #Javascript
vue element ui validate 主动触发错误提示操作
Sep 21 #Javascript
Vue Element校验validate的实例
Sep 21 #Javascript
在vue中实现某一些路由页面隐藏导航栏的功能操作
Sep 21 #Javascript
You might like
PHP 图片水印类代码
2012/08/27 PHP
thinkphp区间查询、统计查询与SQL直接查询实例分析
2014/11/24 PHP
javascript控制Div层透明属性由浅变深由深变浅逐渐显示
2013/11/12 Javascript
jquery动态改变onclick属性导致失效的问题解决方法
2013/12/04 Javascript
jquery中each方法示例和常用选择器
2014/07/08 Javascript
扒一扒JavaScript 预解释
2015/01/28 Javascript
jQuery常用数据处理方法小结
2015/02/20 Javascript
jquery ajax 如何向jsp提交表单数据
2015/08/23 Javascript
基于jQuery实现仿搜狐辩论投票动画代码(附源码下载)
2016/02/18 Javascript
JavaScript基础重点(必看)
2016/07/09 Javascript
AngularJs 指令详解及示例代码
2016/09/01 Javascript
详解angularJs中关于ng-class的三种使用方式说明
2017/06/02 Javascript
nodejs body-parser 解析post数据实例
2017/07/26 NodeJs
layui 设置table 行的高度方法
2018/08/17 Javascript
JSX在render函数中的应用详解
2019/09/04 Javascript
WEEX环境搭建与入门详解
2019/10/16 Javascript
Node.js创建一个Express服务的方法详解
2020/01/06 Javascript
[34:27]DOTA2上海特级锦标赛B组败者赛 VG VS Spirit第一局
2016/02/26 DOTA
Windows下Python使用Pandas模块操作Excel文件的教程
2016/05/31 Python
python利用lxml读写xml格式的文件
2017/08/10 Python
python爬虫面试宝典(常见问题)
2018/03/02 Python
python简单操作excle的方法
2018/09/12 Python
在Python中将函数作为另一个函数的参数传入并调用的方法
2019/01/22 Python
python3 enum模块的应用实例详解
2019/08/12 Python
Django 实现对已存在的model进行更改
2020/03/28 Python
python数据库操作mysql:pymysql、sqlalchemy常见用法详解
2020/03/30 Python
webView加载html图片遇到的问题解决
2019/10/08 HTML / CSS
美术教师岗位职责
2014/03/18 职场文书
爱国口号
2014/06/19 职场文书
对照四风自我剖析材料
2014/10/07 职场文书
群众路线对照检查剖析材料
2014/10/09 职场文书
终止劳动合同证明书样本
2014/11/19 职场文书
会计求职信怎么写
2015/03/20 职场文书
2015年感恩父亲节活动策划方案
2015/05/05 职场文书
Pytorch GPU内存占用很高,但是利用率很低如何解决
2021/06/01 Python
【海涛dota解说】DCG联赛第一周 LGD VS DH
2022/04/01 DOTA