我有一个基本的设置。当我增加高度时,我会平稳增加。当减少时,我应该顺利减少但反而急剧下降。
<div className="foo <!-- -->">Hey</div>
您可能已经注意到className
和<!-- -->
,我正在使用反应。 <!-- -->
被类替换为降低高度。
// SCSS
.foo {
height 400px;
// background props
transition: all 250ms ease-out
}
.foo.decreaseClass {
height: 40px;
transition: all 250ms ease-in
}
当附加新类时,div变为
<div className="foo decreaseClass">Hey</div>
如何向下/向上移动两个转换?
答案 0 :(得分:2)
使用CSS @keyframe animation
和alternate
属性。添加infinite
仅用于演示目的。我没有height
而是将transform:scaleY(1)
添加到(10)
。
body {
overflow: hidden
}
.test {
width: 200px;
margin: 10px;
background: red;
font-size: 32px;
text-align: center;
color: white
}
.B {
height: 40px;
animation: animB 1s alternate infinite;
transform-origin: top;
}
@keyframes animB {
0% {
transform: scaleY(1);
}
100% {
transform: scaleY(10);
}
}
<div class='test B'>TEST</div>
答案 1 :(得分:2)
这是因为您未正确关闭height
中的.foo
声明。您使用逗号而不是分号,导致height
和transition
声明无效。另请注意,同一声明应在样式属性名称及其值(colon
)之间包含height: 400px;
。
因此,只有同时拥有这两个类时,您的元素才会定义height
和transition
。
看到它正常工作:
document.querySelector('.foo').addEventListener('click', function(event) {
event.target.classList.toggle('decreaseClass')
})
&#13;
.foo {
height: 200px;
transition: all 250ms ease-out;
border: 1px solid
}
.foo.decreaseClass {
height: 40px;
transition-timing-function: ease-in
}
&#13;
<div class="foo">Hey</div>
&#13;