React/React 기초

React 기초 )) styled component 기본기(SCSS사용하기)

babydeve 2023. 8. 9. 16:35

1. tag example

//Button 컴포넌트의 스타일을 지정해주는 코드
const Button = styled.button`
	font-size: 1em;
    margin: 1em;
    padding: 0.25em 1em;
    border: 2px solid palevioletred;
    border-radius: 3px;
    background: palevioletred;
    color: white;
`

function App() {
	return <Button>SampleButton</Button>
}

2. props example

const Button = styled.button`
	font-size: 1em;
    margin: 1em;
    padding: 0.25em 1em;
    border: 2px solid palevioletred;
    border-radius: 3px;
    //props의 primary 여부에 따라 색깔 지정
    background: ${props => props.primary ? "palevioletred" : "white"}; 
    color: ${props => props.primary ? "white" : "palevioletred"};
`

function App() {
	return(
    	<Button>Normal Button</Button>  //props가 없는 태그
    	<Button primary>Primary Button</Button>  //primary는 props!! primary={true} 와 똑같음.
    ) 
}

3. styled component에서는 기본적으로 scss문법을 지원한다.

  • scss에서는 선택자 중복 회피 가능하다.
  • 이외에도 scss variable 등 여러 추가 기능이 가능하다.

[ css문법 => 중복 제거 불가능]

 //name과 red 클래스를 동시에 가진 경우
.name.red {
    color: red;
}
//name클래스를 가지고 blue클래스를 가진 자식컴포넌트를 가진 경우
.name .blue { 
    color: blue;
}
.name .green {
    color: green;
}
.name .child .yellow {
    color: yellow;
}
//인접요소 연산자. name 클래스 컴포넌트 옆에 name클래스 컴포넌트가 있는 경우 두번째 컴포넌트에 CSS 적용
.name + .name { //인접
    color: purple;
}

[scss 문법 =>  중복 제거 가능]

.name{
	&.red{
    	color: red;
    }
    
   .blue{
   		color: blue;
    }
    
    .green{
    	color: green;
    }
    .child{
    	.yellow{
        	color: yellow;
        }
    }
    + .name {
    	color: purple;
    }
}

 

728x90