Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 604|回复: 0

原生js解决选项卡里套选项卡的问题

[复制链接]
  • TA的每日心情
    奋斗
    2024-4-6 11:05
  • 签到天数: 748 天

    [LV.9]以坛为家II

    2034

    主题

    2092

    帖子

    70万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    705612
    发表于 2021-8-30 11:22:47 | 显示全部楼层 |阅读模式

    今天来看一个稍微复杂的例子,选项卡里套选项卡,先来看看布局:

    <div id="box">
           <div id="tabl" class="tabL">
               <a href="javascript:void(0)">模块1</a>
               <a href="javascript:void(0)">模块2</a>
               <a href="javascript:void(0)">模块3</a>
               <a href="javascript:void(0)">模块4</a>
           </div>
           <ul id="tabr" class="tabR">
               <li class="tabr_li">
                   <div class="tab1-tit">
                       <a href="javascript:void(0)">tit1-1</a>
                       <a href="javascript:void(0)">tit1-2</a>
                       <a href="javascript:void(0)">tit1-3</a>
                   </div>
                   <ul class="tab1-con">
                       <li>con1-1</li>
                       <li style="display: none">con1-2</li>
                       <li style="display: none">con1-3</li>
                   </ul>
               </li>
               <li class="tabr_li" style="display: none;">
                   <div class="tab1-tit">
                       <a href="javascript:void(0)">tit2-1</a>
                       <a href="javascript:void(0)">tit2-2</a>
                       <a href="javascript:void(0)">tit2-3</a>
                   </div>
                   <ul class="tab1-con">
                       <li>con2-1</li>
                       <li style="display: none">con2-2</li>
                       <li style="display: none">con2-3</li>
                   </ul>
               </li>
               <li class="tabr_li" style="display: none;">
                   <div class="tab1-tit">
                       <a href="javascript:void(0)">tit3-1</a>
                       <a href="javascript:void(0)">tit3-2</a>
                       <a href="javascript:void(0)">tit3-3</a>
                   </div>
                   <ul class="tab1-con">
                       <li>con3-1</li>
                       <li style="display: none">con3-2</li>
                       <li style="display: none">con3-3</li>
                   </ul>
               </li>
               <li class="tabr_li" style="display: none;">
                   <div class="tab1-tit">
                       <a href="javascript:void(0)">tit4-1</a>
                       <a href="javascript:void(0)">tit4-2</a>
                       <a href="javascript:void(0)">tit4-3</a>
                   </div>
                   <ul class="tab1-con">
                       <li>con4-1</li>
                       <li style="display: none">con4-2</li>
                       <li style="display: none">con4-3</li>
                   </ul>
               </li>
           </ul>
       </div>

    简单的css代码:

    <style>
        ul,li{list-style: none;margin: 0;padding:0;}
        a{text-decoration: none}
        #box{ padding:0; margin:0;width:1100px;height:320px; }
        .tabL{float:left;overflow:hidden;width:180px;height:320px;}
        .tabL a{float:left;width:178px;height:78px;border:1px solid #fedd00;text-align: center}
        .tabR{float:left;width:653px;height:320px;}
        .tabR li{background-color: #ff7e7e;width:653px;height:320px;position:relative;color:#fff;}
        .tab1-tit{width:100%;height:45px;line-height:45px;display:flex;position:absolute;bottom:0;z-index:99;overflow: hidden;border-top:1px solid #fff}
        .tab1-tit a{ -moz-column-count:4; /* Firefox */
            -webkit-column-count:4; /* Safari 和 Chrome */
            column-count:4;text-align: center;border-right:1px solid #fff}
        .active{background-color:#5FB878}
    </style>

    效果图如下:

    点击左侧的模块1~模块4,右边的改变相对应的模块内容,然后点击模块内容里的下方tit,同样相对应的内容再次切换。

    就像上图颜色相对应的模块内容。点击黑色框选的,右边黑色框选的相对应的出现,点击当前黑色框选区域里的红色框选的相对应的出现它的内容,当然里面的值可以换成图片或者其他的,想要实现这个效果看js:

    <script>
            window.onload=function(){
                var oBox=document.getElementById("box");
                var tabr=document.getElementById("tabr");
                var aTabL=document.getElementById("tabl");
                var aTit=aTabL.getElementsByTagName("a");
                var aCon=document.getElementsByClassName("tabr_li");
    
                for(var i=0;i<aTit.length;i++){
                    aTit.index=i;
                    aTit.onclick=function(){//点击右边tab
                        for(var i=0;i<aTit.length;i++){
                            aTit.className="";
                            aCon.style="display:none";
                        }
                        this.className="active";
                        aCon[this.index].style="display:block" ;
                       fn(this.index);//这里是得到当前选中的右侧区域,并调用下面的函数
                    }
                }
    
                function fn(index){
                    var aTitSign=aCon[index];
                    var aTitSignAs=aTitSign.getElementsByTagName("a");
                    var aConSignLis=aTitSign.getElementsByTagName("li");
                    for(var i=0;i<aTitSignAs.length;i++){
                        aTitSignAs.index=i;
                        aTitSignAs.onclick=function(){//点击右边内容里的下面的tab
                            var as= tabr.getElementsByTagName("a");
                            for(var i=0;i<as.length;i++){
                                as.className="";
                            }
                            for(var i=0;i<aTitSignAs.length;i++){
                                aConSignLis.style="display:none";
                            }
                            this.className="active";
                            aConSignLis[this.index].style="display:block";
                        }
                    }
                }
            }
    </script>

     好了,这个例子本来是昨天写的,一下写到今天,太晚了,今天就这样了!

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-4-20 05:23 , Processed in 0.068767 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表