2017-10-04 99 views
0

我有一个反应组件,当单击包装它的父级div时,我想显示或隐藏它。 我想为它们出现时和消失时添加动画。ScaleY转换不起作用

目前只有当它出现时才起作用,我做错了什么? 感谢

阵营组件

import React from 'react'; 
import classNames from 'classnames/bind'; 
import styles from './styles.css'; 

const cx = classNames.bind(styles); 

export default function toggleableElement({ isOpen, content }) { 
    const animatedAnswerStyle = cx({ 
     animatedAnswer: true, 
     opened: isOpen, 
     closed: !isOpen, 
    }); 
    return (
     <div className={animatedAnswerStyle}> 
      { 
       isOpen && 
       <p> { content } </p> 
      } 
     </div> 
    ); 
} 

风格

.animatedAnswer { 
    transform: scaleY(0); 
} 

.opened { 
    transform: scaleY(1); 
    tranform-origin: top; 
    transition: transform 2s cubic-bezier(0.4, 0.0, 0.2, 1); 
} 

.closed { 
    transform: scaleY(0); 
    tranform-origin: top; 
    transition: transform 2s cubic-bezier(0.4, 0.0, 0.2, 1);  
} 
+1

如果在规则集中为.animatedAnswer而不是.opened和.closed添加转换,会发生什么情况? – klumme

+0

只有一个规则集时,如何在打开时将其从0缩放到1,并在关闭时缩回到0? –

+0

我的意思是在.animatedAnswer中只放入'过渡'声明,在其他两个规则集中保留'transform'和'transform-origin'。 – klumme

回答

0

这个工作。

.animatedAnswer { 
    max-height: 0; 
    overflow: hidden; 
    transition: max-height 2s cubic-bezier(0.4, 0.0, 0.2, 1); 
} 

.opened { 
    max-height: 800px; // a big value 
}