노력이 좋아서
<step66>'react_scss'
zoaseo
2022. 6. 23. 11:16
1)
App.js
import './App.css';
import Buttons from './components/Buttons.js';
function App() {
return (
<div className="App">
<div>
<Buttons size="large" color="blue">Button</Buttons>
<Buttons size="medium" color="blue">Button</Buttons>
<Buttons size="small" color="blue">Button</Buttons>
</div>
<div>
<Buttons size="large" color="gray">Button</Buttons>
<Buttons size="medium" color="gray">Button</Buttons>
<Buttons size="small" color="gray">Button</Buttons>
</div>
<div>
<Buttons size="large" color="pink">Button</Buttons>
<Buttons size="medium" color="pink">Button</Buttons>
<Buttons size="small" color="pink">Button</Buttons>
</div>
<div>
<Buttons size="large" color="blue" outline>Button</Buttons>
<Buttons size="medium" color="pink" outline>Button</Buttons>
<Buttons size="small" color="gray" outline>Button</Buttons>
</div>
<div>
<Buttons size="large" color="blue" fullWidth>Button</Buttons>
<Buttons size="large" color="pink" fullWidth>Button</Buttons>
<Buttons size="large" color="gray" fullWidth>Button</Buttons>
</div>
</div>
);
}
export default App;
App.css
.App {
width: 600px;
margin: 0 auto;
margin-top: 80px;
border: 1px solid black;
padding: 20px;
}
Button.scss
$blue : #228be6;
$gray : #495059;
$pink : #f06598;
@mixin button-color($color){
background: $color;
&:hover {
background: darken($color, 10%);
}
&.outline {
color: $color;
background: none;
border: 1px solid $color;
&:hover {
background: $color;
color: #fff;
}
}
}
.button {
color: white;
font-weight: bold;
outline: none;
border-radius: 6px;
border: none;
cursor: pointer;
padding: 16px;
font-size: 18px;
background: $blue;
&+& {
margin-left: 10px;
}
//사이즈 관리
&.large {
padding: 20px 60px;
}
&.medium {
padding: 10px 30px;
}
&.small {
padding: 5px 15px;
}
// color 관리
&.blue {
@include button-color($blue);
}
&.pink {
@include button-color($pink);
}
&.gray {
@include button-color($gray);
}
&.fullWidth {
width: 100%;
&+& {
margin: 0;
margin-top: 10px;
}
}
}
Buttons.js
import React from 'react';
import classNames from 'classname';
import './Button.scss';
const Buttons = ({children, size, color, outline, fullWidth}) => {
return (
// <button className={`button ${size} ${color}`}>{children}</button>
<button className={classNames('button',size, color, {outline, fullWidth})}>{children}</button>
);
};
export default Buttons;