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 的 trim 函数的代码
Aug 13 Javascript
jQuery 源码分析笔记(6) jQuery.data
Jun 08 Javascript
高效的获取当前元素是父元素的第几个子元素
Oct 15 Javascript
jQuery html()方法使用不了无法显示内容的问题
Aug 06 Javascript
js简单倒计时实现代码
Apr 30 Javascript
jQuery中on绑定事件后引发的事件冒泡问题如何解决
May 25 Javascript
原生js实现回复评论功能
Jan 18 Javascript
JS+HTML5 FileReader实现文件上传前本地预览功能
Mar 27 Javascript
React Native中TabBarIOS的简单使用方法示例
Oct 13 Javascript
JS实现的抛物线运动效果示例
Jan 30 Javascript
微信小程序实现左右联动的实战记录
Jul 05 Javascript
vue使用原生swiper代码实例
Feb 05 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
PHPLog php 程序调试追踪工具
2009/09/09 PHP
php中文验证码实现方法
2015/06/18 PHP
php中preg_replace正则替换用法分析【一次替换多个值】
2017/01/17 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
js常用代码段整理
2011/11/30 Javascript
JavaScript中函数声明优先于变量声明的实例分析
2012/03/01 Javascript
关于jQuery中的each方法(jQuery到底干了什么)
2014/03/05 Javascript
javascript浏览器兼容教程之事件处理
2014/06/09 Javascript
nodejs爬虫抓取数据乱码问题总结
2015/07/03 NodeJs
js实现iPhone界面风格的单选框和复选框按钮实例
2015/08/18 Javascript
实例详解JSON数据格式及json格式数据域字符串相互转换
2016/01/07 Javascript
jQuery Validation Plugin验证插件手动验证
2016/01/26 Javascript
JS跨域解决方案之使用CORS实现跨域
2016/04/14 Javascript
基于JS实现移动端访问PC端页面时跳转到对应的移动端网页
2020/12/24 Javascript
Bootstrap弹出框(modal)垂直居中的问题及解决方案详解
2016/06/12 Javascript
JavaScript作用域示例详解
2016/07/07 Javascript
简单理解js的冒泡排序
2016/12/19 Javascript
深入理解Vue官方文档梳理之全局API
2017/11/22 Javascript
微信小程序使用二次贝塞尔曲线画波浪
2018/12/25 Javascript
微信小程序实现购物车代码实例详解
2019/08/29 Javascript
python设计模式大全
2016/06/27 Python
Python处理Excel文件实例代码
2017/06/20 Python
特征脸(Eigenface)理论基础之PCA主成分分析法
2018/03/13 Python
Python 使用元类type创建类对象常见应用详解
2019/10/17 Python
wxPython之wx.DC绘制形状
2019/11/19 Python
python打印异常信息的两种实现方式
2019/12/24 Python
TensorFlow——Checkpoint为模型添加检查点的实例
2020/01/21 Python
pytorch __init__、forward与__call__的用法小结
2021/02/27 Python
CSS3中的clip-path使用攻略
2015/08/03 HTML / CSS
MySQL面试题目集锦
2016/04/14 面试题
办公室主任先进事迹
2014/01/18 职场文书
中学生社会实践活动总结
2014/07/03 职场文书
教师考核评语大全
2014/12/31 职场文书
酒店圣诞节活动总结
2015/05/06 职场文书
2015年社区宣传工作总结
2015/05/20 职场文书
上诉答辩状范文
2015/05/22 职场文书