Html css转换在隐藏div处不起作用

Html css转换在隐藏div处不起作用,html,css,css-transitions,Html,Css,Css Transitions,我有一个隐藏的div。我希望该div将出现和隐藏顺利。我已经应用了这个CSS,但它不起作用!原因是什么 HTML: 尝试改用不透明度: .box { width: 500px; border: 1px solid #ccc; opacity:0; height: 0; overflow: hidden; } .a:hover .box { opacity:1; transition: height 0.1s ease; transi

我有一个隐藏的div。我希望该div将出现和隐藏顺利。我已经应用了这个CSS,但它不起作用!原因是什么

HTML:


尝试改用不透明度:

.box {
    width: 500px;
    border: 1px solid #ccc;
    opacity:0;
    height: 0;
    overflow: hidden;
}
.a:hover .box {
    opacity:1;
    transition: height 0.1s ease;
    transition-property: opacity;
    height: auto;
}

也应该是跨浏览器的

.a {
    width: 100px;
    height: 200px;
}
.box {
    width: 100%;
    border: 1px solid #ccc;
    opacity: 0;
    max-height: 0;
    overflow: hidden;
    transition: all 1s ease;
    -webkit-transition: all 1s ease;
}
.a:hover .box {
    max-height: 999px;
    opacity: 1;
}

顺便说一句,一类“a”是一种奇怪的做法。它会起作用,但可以考虑重命名。请注意,框高度是设置的,不是自动的。此版本似乎适用于可变高度。

如果您可以使用jQuery,则可以使用它在悬停事件中进行平滑过渡

jQuery

$('.a p').hover(function () {
    if ($('.box').hasClass('active')) {
        $('.box').removeClass('active');
        $('.box').stop(true, false).animate({height: "0px"}, 500);
    } else {
        $('.box').addClass('active');
        $('.box').stop(true, false).animate({height: "20px"}, 500);
    }
});

这里有一个

作为“当前无法在高度上设置动画,当其中一个高度为“自动”时,您必须设置两个明确的高度”。此外,您的过渡应该处于元素的原始状态,而不是悬停状态。您想要哪种类型的解决方案?您可以使用css3或javascript进行平滑转换?我不能应用固定高度。我必须应用自动高度,因为div.box的文本/元素不是固定的。因此,我从来不知道div.box的实际大小,我更喜欢使用CSS3的解决方案。转换需要打开.box,而不是.a:hover.box.CSS3的新功能,为什么要打开转换。a:hover.box有效?它有点有效。转换将仅在enter中,而不是exit中。鼠标退出悬停后,将立即删除过渡。.box上的转换允许悬停向外转换。但是,我无法将固定高度应用于.a:hover.box:(
.a {
    width: 100px;
    height: 200px;
}
.box {
    width: 100%;
    border: 1px solid #ccc;
    opacity: 0;
    max-height: 0;
    overflow: hidden;
    transition: all 1s ease;
    -webkit-transition: all 1s ease;
}
.a:hover .box {
    max-height: 999px;
    opacity: 1;
}
$('.a p').hover(function () {
    if ($('.box').hasClass('active')) {
        $('.box').removeClass('active');
        $('.box').stop(true, false).animate({height: "0px"}, 500);
    } else {
        $('.box').addClass('active');
        $('.box').stop(true, false).animate({height: "20px"}, 500);
    }
});