You take two divs, and give the inner div a width (this is needed, or the text will adapt to the width and become a long 1 word lined paragraph), and give the outer div an overflow: hidden;
You can then choose for js animation via jQuery's .animate()
, but I prefer using css. This has, to my experience, a better performance result, specially on mobile devices.
$('button').on('click', function(e){
$('#Outer').toggleClass('Closed');
});
#Outer{
max-width: 500px;
overflow: hidden;
transition: max-width 1s;
background: #DDE; /* Just for demo */
}
#Outer.Closed{ max-width: 0px; }
#Inner{ width: 500px; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<button>Toggle width</button>
<div id="Outer">
<div id="Inner">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla mattis quam at ultricies rhoncus. Fusce eget dignissim lacus. Vestibulum venenatis a purus eu sodales. Quisque sodales lectus ut laoreet tempor. Nunc id neque dictum tellus consectetur interdum. Suspendisse eget turpis tincidunt, sollicitudin nisi in, scelerisque metus. Nunc eleifend purus a sapien sodales ullamcorper. Nunc pretium lacus at nibh ornare imperdiet. Phasellus non porttitor est, ut pharetra erat. Aenean rhoncus rutrum eros, eget iaculis ex sodales eget. Nulla id aliquet velit. Duis scelerisque arcu urna.
</div>
</div>