天天看点

纯CSS实现Tab切换 以及 CSS+JS实现Tab切换纯CSS实现Tab切换CSS+JS实现Tab切换

  • 纯CSS实现Tab切换
    • 效果图
    • 思路
    • 代码
  • CSSJS实现Tab切换
    • 效果图
    • 思路

纯CSS实现Tab切换

效果图

纯CSS实现Tab切换 以及 CSS+JS实现Tab切换纯CSS实现Tab切换CSS+JS实现Tab切换

思路

ul li显示tab列表 li里面嵌套子div 显示详情

子div采用绝对布局 (让所有的子div都重叠在一个地方)

然后全部隐藏 在li的hover 时使其显示

代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        *{
            list-style: none;
        }
        #main{
            width: px;

        }
        div{
            display: none;
            position: absolute;
            left: %;
            top: %;
        }
        .test{
            background-color: #c8f7ff;
        }
        .test:hover{
            background-color: cornflowerblue;
        }
        .test:hover div{
            display: block;
            background-color: bisque;
        }

    </style>
</head>
<body>

<ul id="main">
    <li class="test">手机
        <div>
            <ul>
                <li>小米</li>
                <li>华为</li>
                <li>中兴</li>
            </ul>
        </div>
    </li>

    <li  class="test">家电
        <div>
            <ul>
                <li>空调</li>
                <li>冰箱</li>
                <li>洗衣机</li>
            </ul>
        </div>
    </li>

    <li  class="test">家具
        <div>
            <ul>
                <li>沙发</li>
                <li>茶几</li>
                <li>衣橱</li>
            </ul>
        </div>
    </li>
</ul>
</body>
</html>
           

CSS+JS实现Tab切换

效果图:

纯CSS实现Tab切换 以及 CSS+JS实现Tab切换纯CSS实现Tab切换CSS+JS实现Tab切换

思路:

和纯CSS 差不多 先布局出来 然后 子div全部隐藏 不同的是 这里通过代码控制样式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .box{
            width: px;
            background-color: cadetblue;
        }
        .title {
            width: %;
            height: px;
        }

        .title_i {
            line-height: px;
            text-align: center;
            width: px;
            height: px;
            float: left;
            margin-right: px;
        }

        .content {
            width: px;
            height: px;
            background-color: #c8f7ff;
            position: relative;
        }

        .content_i {
            position: absolute;
            opacity: ;
        }

        .title_i_active {
            background-color: #ffffff;
        }

        .content_i_active {
            opacity: ;
        }
    </style>
</head>
<body>
<div class="box">
    <div class="title" id="temptitle">
        <div class="title_i" id="title_{{index}}" onclick="select({{index}})">{{title}}</div>
        <!--title end-->
    </div>
    <!--title end-->
    <div class="content" id="tempcontent">
        <ul class="content_i" id="content_{{index}}">
            {{str}}
        </ul>
    </div>
    <!--content end-->
</div>
 <!--box end-->
</body>
<script>
    //    1 准备数据
    var data = [
        {
            title: "房产",
            content: ["275万购昌平邻铁三居 总价20万买一居", "200万内购五环三居 140万安家东三环", "北京首现零首付楼盘 53万购东5环50平", "京楼盘直降5000 中信府 公园楼王现房"]
        },
        {
            title: "家居",
            content: ["40平出租屋大改造 美少女的混搭小窝", "经典清新简欧爱家 90平老房焕发新生", "新中式的酷色温情 66平撞色活泼家居", "    瓷砖就像选好老婆 卫生间烟道的设计"]
        },
        {
            title: "二手房",
            content: ["通州豪华3居260万 二环稀缺2居250w甩", "西3环通透2居290万 130万2居限量抢购", "黄城根小学学区仅260万 121平70万抛!", "独家别墅280万 苏州桥2居优惠价248万"]
        }
    ]
    //     2 写入数据
    function writeData() {
        //2.1 拿到模版
        var mobantitle = g("temptitle").innerHTML;
        var mobancontent = g("tempcontent").innerHTML;

        var titleArr = [];
        var contentArr = [];
        //2.2 写入
        for (i in data) {
            titleArr[i] = mobantitle.replace(/{{index}}/g, i)
                    .replace(/{{title}}/g, data[i].title);
            var str="";
            for (var j = ; j < data[i].content.length; j++) {
                str+="<li>"+data[i].content[j]+"</li>"
            }
            contentArr[i] = mobancontent.replace(/{{index}}/g, i)
                    .replace(/{{str}}/g,str);

        }
        g("temptitle").innerHTML = titleArr.join("");
        g("tempcontent").innerHTML = contentArr.join("");
    }


//    3 选择 方法
    function  select(n){
        var titles=g(".title_i");
        var content=g(".content_i");
        for(var i=;i<titles.length;i++){
            titles[i].className="title_i";
            content[i].className="content_i";
        }
        var title_new=g("title_"+n);
        var content_new=g("content_"+n);
        title_new.className+=" title_i_active";
        content_new.className+=" content_i_active"
    }
    window.onload = function () {
        writeData();
    }
    function g(key) {
        if (key.charAt() == ".") {
            key = key.substr();
            return document.getElementsByClassName(key);
        }
        else {
            return document.getElementById(key);
        }
    }
</script>
</html>