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 相关文章推荐
半角全角相互转换的js函数
Oct 16 Javascript
JS函数实现动态添加CSS样式表文件
Dec 15 Javascript
javascript中键盘事件用法实例分析
Jan 30 Javascript
javascript图片延迟加载实现方法及思路
Dec 31 Javascript
举例说明JavaScript中的实例对象与原型对象
Mar 11 Javascript
Vue.js常用指令汇总(v-if、v-for等)
Nov 03 Javascript
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
Dec 15 Javascript
jquery中关于bind()方法的使用技巧分享
Mar 30 jQuery
javascript和php使用ajax通信传递JSON的实例
Aug 21 Javascript
浅谈Vue组件单元测试究竟测试什么
Feb 05 Javascript
可拖拽组件slider.js使用方法详解
Dec 04 Javascript
Vuex实现简单购物车
Jan 10 Vue.js
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 远程关机操作的代码
2008/12/05 PHP
php下几个常用的去空、分组、调试数组函数
2009/02/22 PHP
解析php中session的实现原理以及大网站应用应注意的问题
2013/06/17 PHP
在 Laravel 项目中使用 webpack-encore的方法
2019/07/21 PHP
关于使用 jBox 对话框的提交不能弹出问题解决方法
2012/11/07 Javascript
js获取或设置当前窗口url参数的小例子
2013/10/14 Javascript
jQuery自带的一些常用方法总结
2014/09/03 Javascript
《JavaScript DOM 编程艺术》读书笔记之DOM基础
2015/01/09 Javascript
学习javascript面向对象 掌握创建对象的9种方式
2016/01/04 Javascript
深入学习AngularJS中数据的双向绑定机制
2016/03/04 Javascript
bootstrap和jQuery.Gantt的css冲突 如何解决
2016/05/29 Javascript
基于JS实现回到页面顶部的五种写法(从实现到增强)
2016/09/03 Javascript
javascript定时器取消定时器及优化方法
2017/07/08 Javascript
vue组件传递对象中实现单向绑定的示例
2018/02/28 Javascript
vue-cli 3.0 自定义vue.config.js文件,多页构建的方法
2018/09/19 Javascript
微信小程序实现获取用户信息并存入数据库操作示例
2019/05/07 Javascript
React Native登录之指纹登录篇的示例代码
2020/11/03 Javascript
Vue Elenent实现表格相同数据列合并
2020/11/30 Vue.js
Django自定义插件实现网站登录验证码功能
2017/04/19 Python
Python实现爬虫抓取与读写、追加到excel文件操作示例
2018/06/27 Python
TensorFlow Session使用的两种方法小结
2018/07/30 Python
详解django自定义中间件处理
2018/11/21 Python
django主动抛出403异常的方法详解
2019/01/04 Python
python DataFrame 取差集实例
2019/01/30 Python
python pandas时序处理相关功能详解
2019/07/03 Python
python 求某条线上特定x值或y值的点坐标方法
2019/07/09 Python
Python占用的内存优化教程
2019/07/28 Python
python实现发送带附件的邮件代码分享
2020/09/22 Python
HTML5印章绘制电子签章图片(中文英文椭圆章、中文英文椭圆印章)
2019/06/03 HTML / CSS
英国知名的护肤彩妆与时尚配饰大型综合零售电商:Unineed
2016/11/21 全球购物
澳大利亚购买健身器材网站:Gym Direct
2019/12/19 全球购物
Nike墨西哥官网:Nike MX
2020/08/30 全球购物
农业资源与环境专业自荐信范文
2013/12/30 职场文书
灰雀教学反思
2014/04/28 职场文书
葬礼主持词
2015/07/02 职场文书
运动会宣传稿100字
2015/07/23 职场文书