Forcing Browser Reflow during CSS Changes
In creating a non-jQuery responsive image slider relying on CSS3 transitions, you may encounter an issue where changes to CSS properties trigger no animations. This is due to browser optimization, which simplifies property changes and skips animations.
To resolve this, it's necessary to force a browser reflow. Reflow is the process by which the browser recalculates the layout of an element and repositions it in response to style changes.
In your code snippet, you set the transition property to 'none 0s linear' before making the initial CSS changes and then switch it back to 'all 0.2s ease-out'. However, this approach doesn't trigger a reflow and hence no animation occurs.
The solution lies in explicitly requesting the offsetHeight of the element after making CSS changes. This action initiates a reflow and forces the browser to acknowledge and apply the modified styles.
The code to achieve this is:
function reflow(elt){ console.log(elt.offsetHeight); }
Where 'elt' is the element you've made style changes to. Calling 'reflow(elt)' after making the CSS changes will trigger the desired animation.
The above is the detailed content of Why Don't CSS Transitions Work with Responsive Image Sliders?. For more information, please follow other related articles on the PHP Chinese website!