import styled from "styled-components";
import { motion } from "framer-motion";
import { useState } from "react";
const Wrapper = styled(motion.div)`
height: 100vh;
width: 100vw;
display: flex;
justify-content: space-around;
align-items: center;
`;
const Box = styled(motion.div)`
width: 400px;
height: 400px;
background-color: #c14949;
border-radius: 40px;
display: flex;
justify-content: center;
align-items: center;
box-shadow: 0 2px 3px rgba(0, 0, 0, 0.1), 0 10px 20px rgba(0, 0, 0, 0.06);
`;
const Circle = styled(motion.div)`
background-color: #00a5ff;
height: 100px;
width: 100px;
box-shadow: 0 2px 3px rgba(0, 0, 0, 0.1), 0 10px 20px rgba(0, 0, 0, 0.06);
border-radius: 100%;
`;
function App() {
const [clicked, setClicked] = useState(false);
const toggleClicked = () => setClicked((prev) => !prev);
return (
<Wrapper onClick={toggleClicked}>
<Box>
{clicked ? (
<Circle layoutId="circle" style={{ borderRadius: 0 }} />
) : null}
</Box>
<Box>
{!clicked ? (
<Circle layoutId="circle" style={{ borderRadius: "50px" }} />
) : null}
</Box>
</Wrapper>
);
}
export default App;
layout layoutid 이용하기
'프로그래밍 > ReactJS' 카테고리의 다른 글
react framer-motion slide구현 (1) | 2023.11.23 |
---|---|
framer-motion react,typescript 환경 오류 해 (0) | 2023.11.22 |
svg animation (0) | 2023.11.18 |
스크롤이벤트 (0) | 2023.11.18 |
recoil 새로고침 데이터 유지 (0) | 2023.11.15 |