JavaScript 不会触发 CSS 转换

标签 javascript css

我在这里查看了至少 10 个线程,但没有找到解决方案。 我正在尝试做的是使用应该由我的 JavaScript 代码触发的转换来更改高度属性。 但是,这并没有发生。

nav {
    background: rgb(242, 242, 242);
    border-radius: 0px 0px 15px 15px;
    display: none;
    height: 0px;
    margin-top: 68px;
    overflow: hidden;
    position: fixed;
    top: 0;
    width: 100%;
    z-index: 1;
    transition: height 1s ease;
}



var button = document.getElementsByTagName('button')[0];
var image = document.getElementsByTagName('img')[0];
var bar = document.getElementById('bar');
var nav = document.getElementsByTagName('nav')[0];
var clicks;

button.onclick = function() {
    if (clicks <= 0 || clicks === undefined || clicks === null) {
        nav.style.display = 'block';
        nav.style.height = 'auto';
        bar.style.borderRadius = '0px';
        image.src = 'assets/image/chevron-up.png';
        clicks++;
    }
    else {
        nav.style.display = 'none';
        nav.style.height = '0px';
        bar.style.borderRadius = '0px 0px 15px 15px';
        image.src = 'assets/image/menu-three-horizontal-lines-symbol.png';
        clicks = 0;
    }

}

为什么?我该如何解决这个问题?

最佳答案

由于 auto 值不可设置动画,请尝试通过 scrollHeight< 将 navheight 设置为固定值 属性,然后它将动画化:

nav.style.height = nav.scrollHeight + 'px';

此外,由于您使用了 overflow: hidden,您实际上不需要切换显示值,并且可以简单地切换高度值,参见这个单独的示例:https://jsfiddle.net/andreekeberg/xt4pazfd/

关于JavaScript 不会触发 CSS 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57366534/

相关文章:

javascript - 如何在onclick属性中传递 'this'等参数

html - 初学者 css => 仅将属性应用于一个元素

html - 如何使用 Flexbox 修复侧面 div 并使中心 div 可滚动?

c# - 除了我自己的客户端代码之外,如何防止访问 URL?

javascript - 在 reactjs 中的渲染方法中访问状态值

javascript - JavaScript、Websockets 和 Java 的组合

javascript - Zoomcharts - 1.5.1 将鼠标悬停在多个链接上不起作用

jquery - 当使用 if 语句按下一个链接时,尝试暂时禁用所有链接(即如果左侧 :650px and 0px, 之间的 div 禁用所有链接)

css - 如何在调整寡妇大小时锁定导航位置?

jquery - 选择 2 : make height of single select match height of multiple select?