Hi there! ππ
In this article, I would like to show you how to make an animated rotating square in React using transition property. β
Before we start, I would highly recommend you to check out the runnable example for the solution on our website:
React - how to make animation with CSS transition property
Below example presents three style objects:
- 
normalStylewhich is the default style of our div element,
- 
transformedStylewhich is transformed style of our div element,
- 
buttonStylewhich is style of our button element.
The styles of our div have transition value set to '1s'. It means our component will change it's property values smoothly, over a given duration (over 1s). Additional transform parameter describes moving of an element. In our case transform rotates the element during 2s.
Practical example:
import React from 'react';
// --- style objects -------------------------------
const normalStyle = {
  margin: '50px',
  padding: '20px',
  borderRadius: '10px',
  width: '100px',
  height: '100px',
  background: '#06f2ff',
  boxShadow: '5px 5px 5px #04bd57',
  transition: '1s, transform 2s',
};
const transformedStyle = {
  margin: '50px',
  padding: '20px',
  borderRadius: '10px',
  width: '150px',
  height: '150px',
  background: '#06ff76',
  boxShadow: '5px 5px 5px #3085d6',
  transition: '1s, transform 2s',
  transform: 'rotate(180deg)',
};
const buttonStyle = {
  padding: '2px',
  border: '2px solid white',
  background: 'black',
  boxShadow: '5px 5px 5px grey',
  textShadow: '1px 1px 1px black',
  fontWeight: '900',
  color: 'white',
  borderRadius: '10px',
};
// --- component -------------------------------------
const App = () => {
  const [bigSize, setBigSize] = React.useState(false);
  const handleClick = () => setBigSize(!bigSize);
  return (
    <div style={{ height: '300px' }}>
      <div style={bigSize ? transformedStyle : normalStyle}>
        <button style={buttonStyle} onClick={handleClick}>
          Change size
        </button>
      </div>
    </div>
  );
};
export default App;
You can run this example here
π Note:
If the duration is not specified, the transition will have no effect, because the default value is0.
If you found this solution useful you can leave a comment or reaction ππ¦πΎ.
Thanks for your time and see you in the upcoming posts! π
Write to us! β
If you have any problem to solve or questions that no one can answer related to a React or JavaScript topic, or you're looking for a mentoring write to us on dirask.com -> Questions
You can also join our facebook group where we share coding tips and tricks with others! π₯
 
 
              

 
    
Top comments (1)
Small hint: use the spread selector to make obvious which styles are changed: