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 相关文章推荐
告诉大家什么是JSON
Jun 10 Javascript
基于jquery的动态创建表格的插件
Apr 05 Javascript
JavaScript中获取未知对象属性的代码
Apr 27 Javascript
javascript用函数实现对象的方法
May 14 Javascript
JQuery中DOM事件冒泡实例分析
Jun 13 Javascript
jQuery实现默认是闭合的FAQ展开效果菜单
Sep 14 Javascript
JavaScript解八皇后问题的方法总结
Jun 12 Javascript
jquery仿京东商品放大浏览页面
Jun 06 jQuery
浅谈webpack下的AOP式无侵入注入
Nov 12 Javascript
vuex 使用文档小结篇
Jan 11 Javascript
原生javascript AJAX 三级联动的实现代码
May 04 Javascript
js实现黑白div块画空心的图形
Dec 13 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
Cappuccino 卡布其诺咖啡之制作
2021/03/03 冲泡冲煮
php url地址栏传中文乱码解决方法集合
2010/06/25 PHP
PHP gbk环境下json_dencode传送来的汉字
2012/11/13 PHP
完美解决PHP中的Cannot modify header information 问题
2013/08/12 PHP
ThinkPHP中URL路径访问与模块控制器之间的关系
2014/08/23 PHP
如何让thinkphp在模型中自动完成session赋值小教程
2014/09/05 PHP
CI框架数据库查询之join用法分析
2016/05/18 PHP
php、mysql查询当天,查询本周,查询本月的数据实例(字段是时间戳)
2017/02/04 PHP
表单内同名元素的控制
2006/11/22 Javascript
js列举css中所有图标的实现代码
2011/07/04 Javascript
json数据的列循环示例
2013/09/06 Javascript
JS操作JSON方法总结(推荐)
2016/06/14 Javascript
遍历json获得数据的几种方法小结
2017/01/21 Javascript
Flask中获取小程序Request数据的两种方法
2017/05/12 Javascript
详解vue-router 路由元信息
2017/09/13 Javascript
在vue中使用echarts图表实例代码详解
2018/10/22 Javascript
js实现详情页放大镜效果
2020/10/28 Javascript
使用python解析xml成对应的html示例分享
2014/04/02 Python
python实现计算资源图标crc值的方法
2014/10/05 Python
Python去除列表中重复元素的方法
2015/03/20 Python
Windows下PyCharm安装图文教程
2018/08/27 Python
使用tensorflow实现线性svm
2018/09/07 Python
python 去除二维数组/二维列表中的重复行方法
2019/01/23 Python
详解PyTorch中Tensor的高阶操作
2019/08/18 Python
导入tensorflow:ImportError: libcublas.so.9.0 报错
2020/01/06 Python
Python如何读取文件中图片格式
2020/01/13 Python
Python Selenium XPath根据文本内容查找元素的方法
2020/12/07 Python
美国保健品专家:Life Extension
2018/05/04 全球购物
泰国在线书店:SE-ED
2020/06/21 全球购物
介绍一下Linux文件的记录形式
2012/04/18 面试题
社会实践感言
2014/01/25 职场文书
班主任经验交流会主持词
2014/04/01 职场文书
普通党员群众路线教育实践活动心得体会
2014/11/04 职场文书
2015年爱牙日活动总结
2015/02/05 职场文书
2015年党日活动总结范文
2015/03/25 职场文书
postgresql如何找到表中重复数据的行并删除
2023/05/08 MySQL