「display:none」の要素は、transitionプロパティを使用してもフェードインすることはできません。
opacityの場合は、フェードインすることも容易ですが、タブ切り替えの時など、「display:none」を使用したいこともあると思います。
「display:none」の要素をフェードインする方法を解説致します。
試しに「display:none」でやってみる
試しに、「opacity:0、display:none」を設定して試してみます。
オレンジ色のボタンを押したら、「activeクラス」を付与して、「opacity: 1、display: block」を適用するという流れです。
ボタンを押して、表示を確認してみてください。
<button id="btn" class="btn btn--orange">PUSH</button>
<button id="reset" class="btn">リセット</button>
<div class="content">
  ダミーテキストダミーテキストダミーテキストダミーテキストダミーテキストダミーテキストダミーテキスト
  ダミーテキストダミーテキストダミーテキストダミーテキストダミーテキストダミーテキストダミーテキスト
  ダミーテキストダミーテキストダミーテキストダミーテキストダミーテキスト
</div>.content {
  display: none;
  opacity: 0;
  transition: all 0.3s;
}
.content.active {
  display: block;
  opacity: 1;
}document.getElementById('btn').addEventListener('click',() => {
  document.querySelector('.content').classList.add('active');
})実際に動きを確認してみると、フェードインで現れず、すぐさま表示されていると思います。
アニメーションを設定する
これを解決するにはanimationプロパティを使用して、フェードインするアニメーションを設定しましょう。
ボタンをクリックすると、アニメーションプロパティを設定したクラスを付与します。
.content {
  display: none;
  opacity: 0;
}
.content.active {
  display: block;
 /* animationプロパティ設定 */
  animation-name: fadeIn;
  animation-fill-mode:forwards;
  animation-duration:1s;
}
/*フェードインアニメ*/
@keyframes fadeIn{
    0% {
      opacity: 0;
    }
    100% {
      opacity: 1;
    }
}フェードインで現れるのが確認できたと思います。
アニメーションプロパティなら、フェードインの時間や、イージングなども自由に設定できます。
アニメーションプロパティの詳しい使い方は別記事にまとめているの、こちらをご覧ください。
 
		
	
