我已经和这个斗争了一段时间了。我已经声明了以下样式。
div.contentItem{
-webkit-transition: opacity 1.0s ease;
display: block; // this line will be discussed below
}
div.contentItemHidden{
opacity: 0;
}
div.contentItemVisible{
opacity: 1;
}
除了一个小问题外,它按预期工作。具有内容的不同 div 显示在彼此下方。由于样式 contentItemHidden 中的不透明度设置为 0,因此无法真正看到其他 div,但它们仍然占据空间。
现在,我知道你不由自主地想提出什么建议。“使用显示:无,笨蛋!” 在你上面讨论的那一行。但猜猜怎么了!如果我进行该更改,则不透明度过渡根本没有效果 - 屏幕上不会出现任何内容。
现在,我知道你现在会自发地说什么。“放显示:挡住,朋友!” 在 contentItemVisible 样式中。但猜猜怎么了!如果我进行更改,则不透明度过渡根本没有效果 - div 出现 kaboom 而不是淡入。
我很确定缺少的过渡与元素显示的事实有关:无。所以我尝试修改我的 jQuery 代码,以便在我交换类(contentItemVisible 和 contentItemHidden)之前,我像这样将 block'ification 添加到显示中。
$("#bzzz")
.css("display", "block")
.removeClass("contentItemHidden")
.addClass("contentItemVisible");
尽管如此,这并没有达到预期的效果。如果我稍后不通过.css("display", "none")删除它,我会得到奇怪的位置(因为元素占用空间,即使它们看不到)。如果我确实删除了它,我们将不会获得不透明度的过渡。
我究竟做错了什么?我能做什么呢?
可以在这里看到我想要实现的工作的 jsFiddle (当然,接受我想从不可见的 DIV 开始)。通过将 div.contentItem 的样式更改为无,不透明度的过渡无效。