我在几个浏览器中尝试过这种结构,但它不起作用。请帮忙找出我的错误。
<style>
.result{
width: 200px;
height: 300px;
background: #ff0000;
}
.result #add{
display:none;
}
.result:hover #add{
-webkit-transition: top 1s ease-out 1.5s;
-moz-transition: top 1s ease-out 1.5s;
transition: top 1s ease-out 1.5s;
display:block;
}
</style>
<div class="result">
<div id="add">111</div>
</div>
答案 0 :(得分:2)
首先要清理的一些事项
display: none
过渡到display: block
。只是不可能发生。我建议将opacity: 0
转换为opacity: 1
,而不是转换为淡入效果transition: top 1s ease-out 1.5s
来电仅会为最高属性制作动画。这就是top
在该行中的含义。您可以通过逗号分隔列表添加多个目标,例如top 1s ease-out, opacity 1s ease-out
等等。或者,您可以将规则写为transition: 1s ease-out
,它会对所有更改进行动画处理(但这可能会有一些较小的性能点击,而不是选择要设置动画的属性)。 .result{
width: 200px;
height: 300px;
top: 0;
background: #ff0000;
}
.result #add{
opacity: 0;
position: relative;
}
.result:hover #add{
-webkit-transition: 1s ease-out 1.5s;
-moz-transition: 1s ease-out 1.5s;
transition: 1s ease-out 1.5s;
opacity: 1;
top: 40px;
}
而且,正如所写,应该适合你。
答案 1 :(得分:1)
3个问题:
top
媒体资源转入top 1s ease-out 1.5s;
转换
但是没有top
可以参考。position
元素设置#add
媒体资源display:block;
将触发快速重绘,这将阻止应用最高转换所需的正确CSS计算 - 尝试使用opacity
而不是这里全部适用于一个例子:
.result{
width: 200px;
height: 300px;
background: #ff0000;
}
.result #add{
opacity: 0;
position:relative;
top:0;
}
.result:hover #add{
opacity: 1;
-webkit-transition: top 1s ease-out 1.5s;
-moz-transition: top 1s ease-out 1.5s;
transition: top 1s ease-out 1.5s;
top:150px;
}
&#13;
<div class="result">
<div id="add">111</div>
</div>
&#13;