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中的标签语句
Jun 19 Javascript
浅析onsubmit校验表单时利用ajax的return false无效问题
Jul 10 Javascript
解析Javascript中难以理解的11个问题
Dec 09 Javascript
浅谈JavaScript中的String对象常用方法
Feb 25 Javascript
JSON 的正确用法探讨:Pyhong、MongoDB、JavaScript与Ajax
May 15 Javascript
jQuery控制文本框只能输入数字和字母及使用方法
May 26 Javascript
JS日期对象简单操作(获取当前年份、星期、时间)
Oct 26 Javascript
利用JS实现简单的日期选择插件
Jan 23 Javascript
jquery ui sortable拖拽后保存位置
Apr 27 jQuery
详解利用 Vue.js 实现前后端分离的RBAC角色权限管理
Sep 15 Javascript
Angularjs过滤器实现动态搜索与排序功能示例
Dec 13 Javascript
原生JS实现的碰撞检测功能示例
May 18 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获得当前的脚本网址
2007/12/10 PHP
PHP XML error parsing SOAP payload on line 1
2010/06/17 PHP
php自定义函数之递归删除文件及目录
2010/08/08 PHP
PHP类的静态(static)方法和静态(static)变量使用介绍
2012/02/19 PHP
php缩放图片(根据宽高的等比例缩放)实例介绍
2013/06/09 PHP
ThinkPHP自动填充实现无限级分类的方法
2014/08/22 PHP
PHP CodeIgniter框架的工作原理研究
2015/03/30 PHP
ASP中Sub和Function的区别说明
2020/08/30 Javascript
JavaScript 类型的包装对象(Typed Wrappers)
2011/10/27 Javascript
javascript for循环从入门到偏门(效率优化+奇特用法)
2012/08/01 Javascript
jQuery简单实现banner图片切换
2014/01/02 Javascript
JS判断、校验MAC地址的2个实例
2014/05/05 Javascript
JavaScript实现定时隐藏与显示图片的方法
2015/08/06 Javascript
基于jquery实现select选择框内容左右移动添加删除代码分享
2015/08/25 Javascript
js实现遍历含有input的table实例
2015/12/07 Javascript
解析Node.js基于模块和包的代码部署方式
2016/02/16 Javascript
底部悬浮通栏可以关闭广告位的实现方法
2016/06/01 Javascript
AngularJS动态生成div的ID源码解析
2016/08/29 Javascript
Node.js开发第三方微信公众平台
2017/06/05 Javascript
layer.open 获取不到表单信息的解决方法
2019/09/26 Javascript
jquery实现简单拖拽效果
2020/07/20 jQuery
[06:07]刀塔密之二:攻之吾命受之吾幸
2014/07/03 DOTA
在Python中使用异步Socket编程性能测试
2014/06/25 Python
Python作用域用法实例详解
2016/03/15 Python
Python使用sftp实现上传和下载功能(实例代码)
2017/03/14 Python
ubuntu环境下python虚拟环境的安装过程
2018/01/07 Python
python实现电子书翻页小程序
2019/07/23 Python
Python工程师必考的6个经典面试题
2020/06/28 Python
如何清空python的变量
2020/07/05 Python
python如何控制进程或者线程的个数
2020/10/16 Python
python中添加模块导入路径的方法
2021/02/03 Python
英国天然有机美容护肤品:Neal’s Yard Remedies
2018/05/05 全球购物
计算机专业学生求职信分享
2013/12/15 职场文书
2015年施工员工作总结范文
2015/04/20 职场文书
2015年创先争优工作总结
2015/05/23 职场文书
使用Oracle命令进行数据库备份与还原
2021/12/06 Oracle