$ npm i styled-components
일단 사용할 곳에서 import를 한다
import styled from "styled-components";
styled component는 css와 문법이 같지만, 만들 때 랜덤한 tag를 만들어주기 때문에 중복이 되지 않아서 좋다.
export const NavbarContainer = styled.nav`
width: 100%;
height: ${(props) => (props.extendNavbar ? "100vh" : "80px")};
background-color: white;
display: flex;
flex-direction: column;
`;
export const NavbarLink = styled(Link)`
//Link 적용 방법
color: black;
font-size: x-large;
font-family: Arial, Helvetica, sans-serif;
text-decoration: none;
margin: 10px;
@media (max-width: 700px) {
display: none;
} //크기마다 보이게 하거나 없애는 것. max로 하면
`;
export const Logo = styled.img`
margin: 10px;
max-width: 70px;
height: auto;
background-color: black;
`;
export const OpenLinksButton = styled.button`
width: 70px;
height: 50px;
background: none;
border: none;
color: black;
font-size: 45px;
cursor: pointer;
@media (min-width: 700px) {
display: none;
}
`;
사용하는 곳에서는 이런 식으로 사용해주면 된다.
일단 쓰려고 하는 styled component를 import 한다.
import {
NavbarContainer,
LeftContainer,
RightContainer,
NavbarInnerContainer,
NavbarExtendedContainer,
NavbarLinkContainer,
NavbarLink,
Logo,
OpenLinksButton,
NavbarLinkExtended,
} from "../../styles/Navbar.style";
그 뒤 이런 식으로 사용
const Navbar = () => {
const [extendNavbar, setExtendNavbar] = useState(false);
return (
<NavbarContainer extendNavbar={extendNavbar}>
<NavbarInnerContainer>
<LeftContainer>
<NavbarLinkContainer>
<NavbarLink to="/"> Home</NavbarLink>
<NavbarLink to="/Restaurantpage"> Restaurant</NavbarLink>
<OpenLinksButton
onClick={() => {
setExtendNavbar((curr) => !curr);
}}
>
{extendNavbar ? <> ✕ </> : <>≡</>}
</OpenLinksButton>
</NavbarLinkContainer>
</LeftContainer>
<RightContainer>
<NavbarLink to="/login"> Login</NavbarLink>
<Logo src={LogoImg}></Logo>
</RightContainer>
</NavbarInnerContainer>
{extendNavbar && (
<NavbarExtendedContainer>
<NavbarLinkExtended to="/"> Home</NavbarLinkExtended>
<NavbarLinkExtended to="/Restaurantpage">
Restaurant
</NavbarLinkExtended>
<NavbarLinkExtended to="/login"> Login</NavbarLinkExtended>
</NavbarExtendedContainer>
)}
</NavbarContainer>
);
};
export default Navbar;