CSS 전처리기란?
- 자신만의 특별한 문법을 가지고 CSS를 생성하는 프로그램
- 변수, 함수 개념을 사용하여 재활용성과 가독성을 높임
- 표준 CSS로 컴파일됨 (브라우저가 이해하는 CSS 문법으로 전환하는 작업 필요)
방법 1) 이름 규칙 정하기
BEM 네이밍
- 어떤 요소의 CSS인지 명확히 알 수 있지만, 이름이 너무 길어질 수 있음
- Id를 사용하지 않고, Class 만을 사용함
- '어떻게 보이는가'가 아니라 '어떤 목적인가'에 따라 이름을 지음
BEM 네이밍 더 알아보기
방법 2) CSS Selector
/* App 컴포넌트 내부의 header 태그만을 의미 */
.App header { ... }
import styled from "./App.module.css";
export default function App() {
return <div className={styled.main}>Hello World</div>;
}
/* App.module.css */
.main {
font-weight: 900;
}
/* .scss */
$font-stack: Helvetica, sans-serif;
$primary-color : #333;
body {
font: 100% $font-stack;
color: $primary-color;
}
/* .sass */
$font-stack: Helvetica, sans-serif
$primary-color : #333
body
font: 100% $font-stack
color: $primary-color
.sass VS .scss
- .sass는 세미콜론과 중괄호를 사용하지 않고 탭을 이용해 스타일을 정의함
- .scss는 기존의 .css 파일과 비슷한 문법을 이용함 (scss가 css가 거의 같은 문법으로 SASS 기능을 지원함) → 더 넓은 범용성 + CSS와의 호환성
- .sass와 .scss 모두 변수 선언 시, $를 앞에 붙여줘야 함
npm install node-sass
$primary-color: #ff6347;
body {
background-color: $primary-color;
}
.container {
width: 100% - 20px;
}
@mixin border-radius($radius) {
-webkit-border-radius: $radius;
border-radius: $radius;
}
.button{
@include border-radius(10px);
}
div {
ul {
margine: 0;
li {
displat: inline-block;
}
}
&:hover{
background-color: brown;
}
}
.btn {
padding: 10px;
margin: 10px;
border: 1px solid black;
}
.btn-primary {
@extend .btn;
background-color: blue;
}
npm install sytled-components
import styled from 'styled-components';
// HTML 태그 + 백틱
const StyledButton = styled.button`
background-color: blue;
color: white;
padding: 10px 15px;
border-radius: 4px;
`;
export default function App(){
return (
<div>
<StyledButton>클릭</StyledButton>
</div>
);
}
SOP(Same-Origin Policy, 동일 출처 정책)
- JS 엔진 표준 스펙의 보안 규칙
- 하나의 출처(Origin)에서 로드된 자원(문서, 스크립트)이 호스트나 프로토콜, 포트번호가 일치하지 않는 자원과 상호작용 하지 못하도록 요청 발생을 제한하고 동일 출처(Same Origin)에서만 접근이 가능한 정책