Search code examples
htmlcsscss-transitions

How To Add CSS3 Transition With HTML5 details/summary tag reveal?


Using just CSS3, is there a way to add a nice fade-in and slide-from-left transition effect on a DETAILS/SUMMARY reveal?

For a demo of this new tag, see this demo:

details {
  transition:height 3s ease-in;
}
<details>
  <summary>Copyright 1999-2014.</summary>
  <section>
    <p> - by Refsnes Data. All Rights Reserved.</p>
    <p>All content and graphics on this web site are the property of the company Refsnes Data.</p>
  </section>
</details>

In my case, after the summary tag, I put all other content in its own section tag so that I could style it because summary:after selector didn't seem to work. I tried using CSS3 transitions on height for the section and details tag, but it didn't help.


Solution

  • In addition to Volomike's answer, it would be possible to change margin-left to transform: translateX() for performance reasons.

    details[open] summary ~ * {
      animation: sweep .5s ease-in-out;
    }
    
    @keyframes sweep {
      0%    {opacity: 0; transform: translateX(-10px)}
      100%  {opacity: 1; transform: translateX(0)}
    }
    <details>
      <summary>Copyright 1999-2014.</summary>
      <p> - by Refsnes Data. All Rights Reserved.</p>
      <p>All content and graphics on this web site are the property of the company Refsnes Data.</p>
    </details>