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 相关文章推荐
JQquery的一些使用心得分享
Aug 01 Javascript
jQuery解决下拉框select设宽度时IE 6/7/8下option超出显示不全
May 27 Javascript
js获取光标位置和设置文本框光标位置示例代码
Jan 09 Javascript
jquery mobile 移动web(5)
Dec 20 Javascript
JavaScript隐式类型转换
Mar 15 Javascript
jquery 获取select数组与name数组长度的实现代码
Jun 20 Javascript
Highcharts学习之坐标轴
Aug 02 Javascript
Jquery树插件zTree实现菜单树
Jan 24 Javascript
jQuery条件分页 代替离线查询(附代码)
Aug 17 jQuery
js canvas实现简单的图像扩散效果
Jun 28 Javascript
微信小程序错误this.setData报错及解决过程
Sep 18 Javascript
关于React Native 无法链接模拟器的问题
Jun 21 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 闭包特性在实际应用中的问题
2009/10/30 PHP
php学习笔记之面向对象
2014/11/08 PHP
php随机取mysql记录方法小结
2014/12/27 PHP
WordPress中创建用户角色的相关PHP函数使用详解
2015/12/25 PHP
Laravel的throttle中间件失效问题解决方法
2016/10/09 PHP
yii2的restful api路由实例详解
2019/05/14 PHP
JQuery中操作Css样式的方法
2014/02/12 Javascript
jQuery制作简单柱状图实例
2015/01/28 Javascript
JavaScript原生对象之String对象的属性和方法详解
2015/03/13 Javascript
jQuery中使用each处理json数据
2015/04/23 Javascript
png在IE6 下无法透明的解决方法汇总
2015/05/21 Javascript
元素绑定click点击事件方法
2015/06/08 Javascript
JQuery中DOM实现事件移除的方法
2015/06/13 Javascript
Javascript中的方法和匿名方法实例详解
2015/06/13 Javascript
jQuery实现新消息在网页标题闪烁提示
2015/06/23 Javascript
jQuery插件开发汇总
2016/05/15 Javascript
javascript类型系统——日期Date对象全面了解
2016/07/13 Javascript
JS封装的三级联动菜单(使用时只需要一行js代码)
2016/10/24 Javascript
Canvas + JavaScript 制作图片粒子效果
2017/02/08 Javascript
详解小程序退出页面时清除定时器
2019/04/28 Javascript
微信小程序用户拒绝授权的处理方法详解
2019/09/20 Javascript
vue 保留两位小数 不能直接用toFixed(2) 的解决
2020/08/07 Javascript
SpringBoot在yml配置文件中配置druid的操作
2020/11/16 Javascript
解决Antd Table表头加Icon和气泡提示的坑
2020/11/17 Javascript
利用JavaScript为句子加标题的3种方法示例
2021/01/05 Javascript
Python快速转换numpy数组中Nan和Inf的方法实例说明
2019/02/21 Python
Python 硬币兑换问题
2019/07/29 Python
Python xlwt模块使用代码实例
2020/06/10 Python
Jimmy Choo美国官网:周仰杰鞋子品牌
2018/06/08 全球购物
新闻传媒系求职信范文
2014/04/19 职场文书
公司自我介绍演讲稿
2014/08/21 职场文书
做一个有道德的人活动实施方案
2014/08/23 职场文书
2014年化验员工作总结
2014/11/18 职场文书
2015年感恩父亲节演讲稿
2015/03/19 职场文书
七一晚会主持词
2015/06/29 职场文书
终止合同协议书范本
2016/03/22 职场文书