-
4. Sass : outline,fullWidth props 설정 - 컴포넌트 스타일링 | 벨로퍼트Front-end/React.js 2020. 7. 13. 23:37반응형
outline 옵션 만들기
이번에는 outline 이라는 옵션을 주면 버튼에서 테두리만 보여지도록 설정을 해보겠습니다.
Button.js 를 다음과 같이 수정해보세요.
/src/components/Button.js :
function Button({ children, size, color, outline }) { return ( <button className={ classNames('Button', size, color, { outline }) }> {children} </button> ); }
여기서는 outline 값을 props 로 받아와서 객체 안에 집어 넣은 다음에 classNames() 에 포함시켜줬는데요, 이렇게 하면 outline 값이 true 일 때에만 button 에 outline CSS 클래스가 적용됩니다.
만약 outline CSS 클래스가 있다면, 테두리만 보여지도록 스타일쪽 코드도 수정해보세요.
/src/components/Button.scss :
@mixin button-color($color) { background: $color; &:hover { background: lighten($color, 10%); } &:active { background: darken($color, 10%); } &.outline { color: $color; background: none; border: 1px solid $color; &:hover { background: $color; color: white; } } }
button-color mixin 을 만들었었기 때문에 작업이 굉장히 간단하지요?
그럼 이제 App 에서 사용을 해봅시다.
/src/App.js :
function App() { return ( <div className="App"> // ... <div className="buttons"> <Button size="large" color="blue" outline> BUTTON </Button> <Button color="gray" outline> BUTTON </Button> <Button size="small" color="pink" outline> BUTTON </Button> </div> </div> ); }
전체 너비 차지하는 옵션
이번에는 fullWidth 라는 옵션이 있으면 버튼이 전체 너비를 차지하도록 구현을 해보겠습니다. 구현 방식은 방금 했었던 outline과 굉장히 유사 합니다.
Button.js 를 다음과 같이 수정해주세요.
/src/components/Button.js :
function Button({ children, size, color, outline, fullWidth }) { return ( <button className={ classNames('Button', size, color, { outline, fullWidth }) }> {children} </button> ); }
그 다음, 스타일도 수정해봅시다.
/src/components/Button.scss :
.Button { // ... &.fullWidth { width: 100%; justify-content: center; & + & { margin-left: 0; margin-top: 1rem; } } }
App 에서 사용을 해봅시다!
/src/App.js :
function App() { return ( <div className="App"> // ... <div className="buttons"> <Button size="large" fullWidth> BUTTON </Button> <Button size="large" fullWidth color="gray"> BUTTON </Button> <Button size="large" fullWidth color="pink"> BUTTON </Button> </div> </div> ); }
반응형'Front-end > React.js' 카테고리의 다른 글
6. CSS Module - 컴포넌트 스타일링 | 벨로퍼트 (0) 2020.07.16 5. Sass : ...rest props 전달하기 - 컴포넌트 스타일링 | 벨로퍼트 (0) 2020.07.14 3. Sass : color props 설정하기 - 컴포넌트 스타일링 | 벨로퍼트 (0) 2020.07.13 2. Sass : size props 설정하기 - 컴포넌트 스타일링 | 벨로퍼트 (0) 2020.07.13 1. Sass : 버튼 생성하기 - 컴포넌트 스타일링 | 벨로퍼트 (0) 2020.07.13