混合绝对定位,DIVS的相对定位

时间:2016-03-18 20:25:41

标签: javascript html css

好的,我想达到以下效果

我有两个div应该在彼此之上。我有一个第三个div应该直接在两个div下面。前两个div可以切换可见性,以便当一个可见时,另一个不可见(注意:我在javascript中删除了部分切换以简化故障排除)。但无论如何,第三个div应该低于另外两个。几个小时前听起来很简单,但我遗漏了一些东西,非常感谢你的帮助。

我创建了一个配对的HTML文件,其中只有重要的部分供您查看,希望能告诉我我的误解。

另请注意,我真的不想在div3上使用top属性,因为我可能想要动态更改前两个div的大小。

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="utf-8" />
    <script>
        function clicked(t) {
            t.style.visibility = "collapse";
            t.style.opacity = 0.0;
        }
    </script>
</head>
<body>
    <div class="container">
        <div id="divone" class="one" onclick="clicked(this)"></div>
        <div id="divtwo" class="two" onclick="clicked(this)"></div>
        <div class="three"></div>
    </div>

    <style>
        div {
            height: 100px;
            width: 100%;
            transition-duration: 2s;
        }

            div.container {
                width: 50%;
                top: 0;
                margin-left: 0px;
                margin-top: 0px;
                border-left: 0px;
                border-top: 0px;
                padding-left: 0px;
                padding-top: 0px;
            }

            div.one {
                position: absolute;
                background-color: red;
                width: 50%;
                opacity: 1.0;
                z-index:2;
            }

            div.two {
                position: absolute;
                background-color: green;
                width: 50%;

                opacity: 1.0;
                z-index: 1;
            }

            div.three {
                position: relative;
                top: 0;
                width: 60%;
                background-color: blue;
            }
    </style>
</body>

</html>

1 个答案:

答案 0 :(得分:0)

试试这个:

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="utf-8" />

    <style>

        div {
            height: 100px;
            width: 100%;
            transition-duration: 2s;
        }

        div.container {
            width: 50%;
            top: 0;
            margin-left: 0px;
            margin-top: 0px;
            border-left: 0px;
            border-top: 0px;
            padding-left: 0px;
            padding-top: 0px;
        }

        div.one {
            background-color: red;
            width: 50%;
        }

        div.two {
            background-color: green;
            width: 50%;
            display:none;
        }

        div.three {
            width: 50%;
            background-color: blue;
        }

    </style>

    <script>
        function clicked(t) {
            t.style.display = "none";

            if (t.id === 'divone') {
                document.getElementById('divtwo').style.display = 'block';
            } else {
                document.getElementById('divone').style.display = 'block';
            }
        }
    </script>
</head>
<body>
    <div class="container">
        <div id="divone" class="one" onclick="clicked(this)">DIV 1</div>
        <div id="divtwo" class="two" onclick="clicked(this)">DIV 2</div>
        <div class="three">DIV3</div>
    </div>
</body>

</html>