javascript - 如何在元素不超出父边界的情况下过渡高度?

标签 javascript html css css-transitions

我正在尝试进行从顶部所有内容开始的过渡,在页面加载后,内容会慢慢向下扩展页面。

我已经完成了大部分工作,除了当内容向下扩展到页面时,它会一直扩展到父边界之外。我将所有元素都设置为扩展到 100%,所以我认为扩展元素只会扩展到其父元素大小的 100%,但它只是一直向下移动页面。

也许我只是误解了 parent / child 高度百分比的工作原理。谁能指出我做错了什么?谢谢。

Here is a link to the code on jsfiddle

这是 HTML 代码:

<body>
    <div id="outer">
        <div class="middle">
            <div class="inner">
                 <h3>A-B</h3>

                <ul>
                    <li>A</li>
                    <li>B</li>
                </ul>
            </div>
            <div class="inner">
                 <h3>C-G</h3>

                <ul>
                    <li>C</li>
                    <li>D</li>
                    <li>E</li>
                    <li>F</li>
                    <li>G</li>
                </ul>
            </div>
            <div class="inner">
                 <h3>H</h3>

                <ul>
                    <li>H</li>
                </ul>
            </div>
        </div>
    </div>
</body>

这是javascript代码:

window.onload = function () {
    document.getElementById("outer").setAttribute("class", "loaded");
}

这是 CSS:

html {
    height: 100%;
}
body {
    height: 100%;
}
#outer {
    height: 100%;
}
.middle {
    border: solid 2px black;
    height: 100%;
}
.inner {
    height: 0%;
    transition: height 5s 2s;
    -moz-transition: height 5s 2s;
    -webkit-transition: height 5s 2s;
    -o-transition: height 5s 2s;
}
#outer.loaded .inner {
    height: 100%;
}

最佳答案

百分比基于 parent 。您将三个类为 .inner 的 div 的高度设置为 100%。这意味着总高度为 300%。 .inner 设置为 33% 会更合理。

编辑

只是出于兴趣,在这里找到了另一篇关于 SO 的文章,它可能会帮助您完成您正在尝试做的事情,即过渡高度 0 到自动过渡高度,这实际上涉及将最大高度设置为一个非常大的数字(至少比它的自动高度大),所以无论如何只能过渡到自动。 Link here

关于javascript - 如何在元素不超出父边界的情况下过渡高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22290391/

相关文章:

javascript - Firefox 在 ajax 调用 2 分钟后超时

php - 如何将 php 代码插入 HTML 的短代码中?

css - html 元素对齐

javascript - 在 Javascript 类中使用 const

javascript - child 更新 parent 的 'Angular way' 是什么?

javascript - 关于 AngularJs 和 ngRepeat 的问题

html - 文字向右浮动,但位于 img 下方

html - VSCode EJS 扩展,禁用 HTML 自动完成

css - 正确定位绝对定位元素的工具提示

html - 由于文本换行 (css),Div 位置发生了变化