2017-10-04 111 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 
}