Modern UIs have plenty of animations. Today, many visual elements are enriched due to transitions, which means that lateral panels, menus, and more are now closed and opened through fancy, smooth visual transitions. It has not always been like that, though.
Basically, if we reduce our programming world to the iterative and discrete model, we can understand what it would mean to change the size of a panel from 300 pixels down to 80 pixels. Most programmers would come up with some kind of loop code instead of a single step to change the value, as the following snippet of (pseudo) code tries to exemplify:
// one step change:
MyPanel.Width := 80;
// multi-step change:
while MyPanel.Width > 80 do
MyPanel.Width := MyPanel.Width -1;
From the preceding code, you can see that a number of under-the-hood aspects are involved here. For example, it may not be granted that assigning a new value to the Width property will cause the component to redraw itself...