728x90
CSS Selectors (선택자)
Css에서 각 노드에 효과를 주기 위해
노드를 선택해야 하는데,
노드의 선택은 아래와 같은 선택자를 통해 가능하다.
[선택자 (Selectors)]
Basic Selectors | |
Type Selectors | 엘리먼트 명 |
Class Selectors | .클래스명 |
Id Selectors | #아이디명 |
Attribute Selectors | [속성명=속성값] |
Combinators | |
Decendent Selectors | 부모노드 자식노드 |
Child Selector | 부모노드 > 자식노드 |
Adjacent Sibling Selector | 형제노드 + 형제노드 |
General Sibling Selector | 형제노드 ~ 형제노드 |
[개념 설명]
1. Type Selectors
엘리먼트 이름으로 대상을 선택
같은 이름의 엘리먼트가 여러 개라면,
여러 개의 대상을 동시에 선택하게 된다.
[예제]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Css Selector Example</title>
<!--CSS-->
<style>
//모든 li 태그에 적용
li {
margin : 30px;
color : tomato;
font-size : larger;
font-weight: bold;
}
li:hover {
cursor: pointer;
color: royalblue;
font-size : x-large;
font-weight: bolder;
}
</style>
</head>
<body>
<main>
<section>
<nav>
<li>메뉴1</li>
<li>메뉴2</li>
<li>메뉴3</li>
<li>메뉴4</li>
<li>메뉴5</li>
</nav>
</section>
</main>
</body>
</html>
[결과]
2. Class Selectors
클래스 명을 대상으로 선택
같은 이름의 클래스가 여러 개라면,
여러 개의 엘리먼트를 동시에 선택하게 된다.
[예제]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Css Selector Example</title>
<!--CSS-->
<style>
.sampleClass {
cursor: pointer;
margin : 30px;
color : tomato;
font-size : larger;
font-weight: bold;
}
.selected {
color: royalblue;
font-size : x-large;
font-weight: bolder;
}
</style>
</head>
<body>
<main>
<section>
<nav>
<li class="sampleClass selected">메뉴1</li>
<li class="sampleClass">메뉴2</li>
<li class="sampleClass">메뉴3</li>
<li class="sampleClass">메뉴4</li>
<li class="sampleClass">메뉴5</li>
</nav>
</section>
<script>
//자바스크립트는 예제를 위해 추가. 모르면 pass 해도 무관하다.
//class는 여러개가 선택이 가능하고, Css 효과를 위해 추가 및 삭제를
//반복할수 있다는 사실만 기억
document.querySelector('nav').addEventListener('click',e=>{
if(e.target.nodeName === 'LI'){
//기존 Selected 삭제
document.querySelector('.selected').classList.remove('selected');
//클릭된 엘리먼트에 Selected 클래스 추가
e.target.classList.add('selected');
}
});
</script>
</main>
</body>
</html>
[결과 출력]
3. Id Selectors
아이디 속성으로 대상을 선택
아이디는 문서에 한 개만 할당되는
유니크한 값이기 때문에
최소한으로 할당하는 게 좋다.
[예제]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Css Selector Example</title>
<!--CSS-->
<style>
li {
cursor: pointer;
margin: 30px;
color: tomato;
font-size: larger;
font-weight: bold;
}
#selected {
color : royalblue;
font-size : x-large;
font-weight: bolder;
}
</style>
</head>
<body>
<main>
<section>
<nav>
<li id="selected">메뉴1</li>
<li>메뉴2</li>
<li>메뉴3</li>
<li>메뉴4</li>
<li>메뉴5</li>
</nav>
</section>
</main>
</body>
</html>
[결과 출력]
4. Attribute Selectors
속성 값을 통하여 대상을 선택.
같은 속성이 여러 개라면
여러 개의 엘리먼트를 동시에 선택하게 된다.
[예제]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Css Selector Example</title>
<style>
li {
list-style: none;
margin : 16px;
}
input[type="text"] {
border : 2px solid grey;
}
input[type="text"]:hover{
color : green;
border : 3px solid tomato;
}
</style>
</head>
<body>
<main>
<section>
<nav>
<li><input type="text" value="메뉴1"/></li>
<li><input type="text" value="메뉴2"/></li>
<li><input type="text" value="메뉴3"/></li>
<li><input type="text" value="메뉴4"/></li>
<li><input type="text" value="메뉴5"/></li>
</nav>
</section>
</main>
</body>
</html>
[결과 출력]
5. Decendent Selectors
두 개의 엘리먼트명 사이에 공백으로 선택자 사용
첫 번째 엘리먼트 내두 번째 엘리먼트 명을 가진
모든 엘리먼트를 선택
(자식 엘리먼트뿐만 아니라 모든 자손 엘리먼트)
[예제]
nav 태그 내 모든 자손 li 선택
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Css Selector Example</title>
<style>
nav li {
color : green;
font-weight: bolder;
margin : 15px;
cursor : pointer;
}
</style>
</head>
<body>
<main>
<section>
<nav>
<li>메뉴1</li>
<li>메뉴2</li>
<li>메뉴3</li>
<li>메뉴4</li>
<li>메뉴5</li>
<ul>
<li>서브메뉴1</li>
<li>서브메뉴2</li>
<li>서브메뉴3</li>
</ul>
</nav>
</section>
</main>
</body>
</html>
[결과 출력]
6. Child Selector
두 개의 엘리먼트 사이에 > 표시로 사용.
첫 번째 엘리먼트 내 두 번째 엘리먼트 명을
가진 엘리먼트 여러 개를 선택
(자식 엘리먼트만 선택)
[예제]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Css Selector Example</title>
<style>
nav > li {
color : green;
font-weight: bolder;
margin : 15px;
cursor : pointer;
}
</style>
</head>
<body>
<main>
<section>
<nav>
<li>메뉴1</li>
<li>메뉴2</li>
<li>메뉴3</li>
<li>메뉴4</li>
<li>메뉴5</li>
<ul>
<li>서브메뉴1</li>
<li>서브메뉴2</li>
<li>서브메뉴3</li>
</ul>
</nav>
</section>
</main>
</body>
</html>
[결과 출력]
7. Adjacent Sibling Selector
첫 번째 명시된 엘리먼트 바로 뒤 형제 중
하나의 엘리먼트를 선택
[예제]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Css Selector Example</title>
<style>
li {
color : green;
font-weight: bolder;
margin : 15px;
cursor : pointer;
}
ul + li {
color : royalblue;
}
</style>
</head>
<body>
<main>
<section>
<nav>
<li>메뉴1</li>
<li>메뉴2</li>
<li>메뉴3</li>
<ul>
<li>서브메뉴1</li>
<li>서브메뉴2</li>
<li>서브메뉴3</li>
</ul>
<li>메뉴4</li>
<li>메뉴5</li>
</nav>
</section>
</main>
</body>
</html>
[결과 출력]
8. General Sibling Selector
첫번째 명시된 엘리먼트 다음 형제 중
두 번째 명시된 엘리먼트 명에 해당되는
모든 엘리먼트를 선택
[예제]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Css Selector Example</title>
<style>
li {
color : green;
font-weight: bolder;
margin : 15px;
cursor : pointer;
}
ul ~ li {
color : royalblue;
}
</style>
</head>
<body>
<main>
<section>
<nav>
<li>메뉴1</li>
<li>메뉴2</li>
<li>메뉴3</li>
<ul>
<li>서브메뉴1</li>
<li>서브메뉴2</li>
<li>서브메뉴3</li>
</ul>
<li>메뉴4</li>
<li>메뉴5</li>
</nav>
</section>
</main>
</body>
</html>
[결과 출력]
728x90
'프론트엔드 > CSS' 카테고리의 다른 글
[프론트엔드 CSS] 엘리먼트 내 스크롤바 생성 overflow-y (0) | 2021.02.20 |
---|---|
[CSS] user-select 텍스트 선택 효과 없애기 (0) | 2021.02.17 |
[CSS] position - static, relative, absolute, fixed (0) | 2021.02.10 |
[CSS] 부모의 속성을 따르는 inherit (0) | 2021.02.10 |
[Css] css의 로드 style, link, import (0) | 2021.02.10 |
댓글