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中的undefined,null,&quot;&quot;,0和false
Mar 08 Javascript
javascript 新浪背投广告实现代码
Jul 07 Javascript
JavaScript异步编程:异步数据收集的具体方法
Aug 19 Javascript
jquery实现textarea输入框限制字数的方法
Jan 15 Javascript
快速学习JavaScript的6个思维技巧
Oct 13 Javascript
jQuery的事件预绑定
Dec 05 Javascript
Angular通过angular-cli来搭建web前端项目的方法
Jul 27 Javascript
input输入框内容实时监测(附代码)
Aug 15 Javascript
基于vue+canvas的excel-like组件实例详解
Nov 28 Javascript
详解node.js 下载图片的 2 种方式
Mar 02 Javascript
简单分析js中的this的原理
Aug 31 Javascript
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
Mar 01 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
dede3.1分页文字采集过滤规则详说(图文教程)续二
2007/04/03 PHP
php中判断数组是一维,二维,还是多维的解决方法
2013/05/04 PHP
基于jquery实现状态限定编辑的代码
2012/02/11 Javascript
javascript获取函数名称、函数参数、对象属性名称的代码实例
2014/04/12 Javascript
网站基于flash实现的Banner图切换效果代码
2014/10/14 Javascript
BAT及各大互联网公司2014前端笔试面试题--JavaScript篇
2014/10/29 Javascript
Javascript无参数和有参数类继承问题解决方法
2015/03/02 Javascript
JavaScript判断字符长度、数字、Email、电话等常用判断函数分享
2015/04/01 Javascript
jquery+Jscex打造游戏力度条
2020/09/12 Javascript
jQuery实现radio第一次点击选中第二次点击取消功能
2017/05/15 jQuery
使用JS组件实现带ToolTip验证框的实例代码
2017/08/23 Javascript
react-native DatePicker日期选择组件的实现代码
2017/09/12 Javascript
微信小程序模版渲染详解
2018/01/26 Javascript
node 版本切换的实现
2020/02/02 Javascript
JavaScript前端实现压缩图片功能
2020/03/06 Javascript
解决Echarts2竖直datazoom滑动后显示数据不全的问题
2020/07/20 Javascript
Vue2.x和Vue3.x的双向绑定原理详解
2020/11/05 Javascript
[04:52]第二届DOTA2亚洲邀请赛主赛事第一天比赛集锦:OG娜迦海妖放大配合谜团大中3人
2017/04/02 DOTA
Python多线程编程(三):threading.Thread类的重要函数和方法
2015/04/05 Python
从Python程序中访问Java类的简单示例
2015/04/20 Python
Python字符串、元组、列表、字典互相转换的方法
2016/01/23 Python
python Socket之客户端和服务端握手详解
2017/09/18 Python
python 简单备份文件脚本v1.0的实例
2017/11/06 Python
python中for循环把字符串或者字典添加到列表的方法
2019/07/20 Python
Python3+Selenium+Chrome实现自动填写WPS表单
2020/02/12 Python
python 将视频 通过视频帧转换成时间实例
2020/04/23 Python
python+requests接口自动化框架的实现
2020/08/31 Python
python 星号(*)的多种用途
2020/09/21 Python
详解CSS3中border-image的使用
2015/07/18 HTML / CSS
出纳岗位职责模板
2013/11/27 职场文书
年会搞笑主持词串词
2014/03/24 职场文书
环境卫生倡议书
2014/08/29 职场文书
仲裁协议书
2014/09/26 职场文书
高中诗歌鉴赏教学反思
2016/02/16 职场文书
教你怎么用python实现字符串转日期
2021/05/24 Python
Python保存并浏览用户的历史记录
2022/04/29 Python