본문 바로가기

WEB개발/PUBLISHING

CSS, SCSS 선택자

 

1. CSS

기본

선택자 설명 예제
* 모든 요소 선택 * { margin : 0;}
tag 특정 태그 선택 p { margin : 0;}
.class 특정 클래스 선택 .box { margin : 0;}
id 특정 ID 선택 #header { margin : 0;}

 

 

속성선택자

선택자 설명 예제
[attr] 특정 속성이 있는 요소 선택 [disabled] {opacity : 0.5;}
[attr="value"] 특정 값을 가진 속성 선택 [type=input] {color : red;}
[attr*="value"] 특정 값을 포함하는 속성 선택 [class*="btn"] { padding :5px;}
[attr$="value"] 특정 값으로 시작하는 속성 선택 [src$=".png"] { border -radius : 10px'}
[attr^="value"] 특정 값으로 끝나는 속성 선택 [href^="https"] {color : blue;}

 

 

가상 클래스(Pseudo-classes)

선택자 설명 예제
:hover 마우스 호버 시 button:hober {backgourd:yellow;}
:focus 포커스 시 input:focus {border : 2px solid black;}
:fist-child 첫 번째 자식 선택 p:fist-child {font-weight : bold;}
:last-child 마지막 자식 선택 p:last-child {font-style : italic;}
nth-child(n) n번째 자식 선택 li:nth-child(2) {color:red;}
nth-of-ttype(n) 같은 태그 중 n번째 선택 p:nth-of-type(2) {margin:0;}

 

 

가상 요소 (.Pseudo-elements)

선택자 설명 예제
::berfore 요소 앞에 가상 콘텐츠 삽입 p::before {content : "✔";}}
::after 요소 뒤에 가상 콘텐츠 삽입 p::after {content : "👌";}} 
::first-letter 첫 글자 스타일 지정 p::first-letter {font-size : 2em;}
::fist-line 첫 줄 스타일 지정 p::first-line {font-weight : bold;}

 

 

기타선택자

선택자 설명 예제
:not(selector) 특정 요소 제외 div:not(.active) { opacity : 0.5; }
:has(selector) 특정 요소를 포함하는 부모 선택(css4) div:has(img) { border : 2px solid black; }

 

 

2. SCSS

SCSS에서 &(앰퍼샌드) 기호는 현재 선택자 자체를 참조하는 역할을 합니다. 즉, &는 바로 바깥쪽의 부모 선택자를 가리킵니다.

 

 

3. SCSS VS CSS

 

선택자 차이

기능 CSS SCSS
선택자 중첩 불가능 가능
& 참조 없음 지원
가상선택자 중첩 불가능 가능
부모 > 자식 선택자  가능하지만 반복 필요 구조적으로 가능
BEM 스타일 적용 가능하지만 불편 & 로 간편하게 가능

 

 

1. 변수사용

 

CSS

/* CSS에서는 변수 사용이 제한적이고, var()와 custom property 사용 */
:root {
--main-color: #3498db;
}
.button {
background-color: var(--main-color);
}

 

SCSS

$main-color: #3498db;
.button {
background-color: $main-color;
}

 

 

2. 중첩 (Nesting)

 

CSS

.navbar {
background: #fff;
}
.navbar ul {
list-style: none;
}
.navbar ul li {
display: inline-block;
}

SCSS

.navbar {
background: #fff;
ul {
list-style: none;
li {
display: inline-block;
}
}
}

 

3. 믹스인(Mixin)과 포함(include)

 

CSS

/* 반복되는 속성은 일일이 작성해야 함 */
.button-primary {
padding: 10px;
border-radius: 5px;
background-color: blue;
}
.button-secondary {
padding: 10px;
border-radius: 5px;
background-color: gray;
}

SCSS

@mixin button-style($bg-color) {
padding: 10px;
border-radius: 5px;
background-color: $bg-color;
}
.button-primary {
@include button-style(blue);
}
.button-secondary {
@include button-style(gray);
}

 

4. 상속(Extends)

 

SCSS

%base-button {
padding: 10px;
border-radius: 5px;
font-weight: bold;
}
.button-primary {
@extend %base-button;
background-color: blue;
}
.button-secondary {
@extend %base-button;
background-color: gray;
}

 

 

 

 

 

 

 

 

'WEB개발 > PUBLISHING' 카테고리의 다른 글

display flex, grid  (0) 2025.03.20
Animation (transition, transform, keyframes)  (0) 2025.02.19
font-face, line-height, letter-spacing  (0) 2022.12.07
position  (0) 2022.08.10