컴퓨터/CSS
[CSS] 기타 선택자
peridott
2024. 6. 27. 13:37
<HTML>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="resources/css/03.style.css" rel="stylesheet">
<title>기타선택자</title>
</head>
<body>
<h2>1. 속성 선택자</h2>
<p>
선택하고자 하는 요소내에 작성되어있는 속성을 이용하여 선택하는 방법<br>
선택자 뒤에 []를 이용하여 속성과 속성값을 제시하면서 선택
</p>
<pre>
선택자[속성=속성값] { 스타일속성:값 } => 속성값이 "일치"하는 요소
선택자[속성~=속성값] { 스타일속성:값 } => 속성값에 단어가 "포함"되어있는 요소(공백으로 구분, 단어로써)
선택자[속성|=속성값] { 스타일속성:값 } => 속성값에 단어로 "시작"하는 요소(-로 구분, 단어로써)
선택자[속성^=속성값] { 스타일속성:값 } => 속성값으로 "시작"하는 요소
선택자[속성$=속성값] { 스타일속성:값 } => 속성값으로 "끝"나는 요소
선택자[속성*=속성값] { 스타일속성:값 } => 속성값이 "포함"되어 있는 요소
</pre>
<div class="div-class" name="name1">div1</div>
<div class="div-class" name="name2">div2</div>
<div class="div-class" name="name3 name1">div3</div>
<div class="class-div" name="name4">div4</div>
<br>
<hr>
<h2>2. 자손선택자 후손선택자</h2>
<p>
요소들이 중첩되어 작성 가능
자손 : 바로 하위인 요소들
후손 : 하위요소들 전부
</p>
<pre>
* 자손선택자 : >
a>b {
스타일속성:값;
}
* 후손선택자 : 공백
a b {
스타일속성:값;
}
</pre>
<div id="test1">
<h4>div의 자손이면서 후손입니다</h4>
<h4>div의 자손이면서 후손입니다</h4>
<ul>div의 자손이면서 후손입니다
<li>ul의 자손이면서 div후손입니다</li>
<li>ul의 자손이면서 div후손입니다</li>
</ul>
</div>
<br>
<hr>
<h2>3. 동위(같은레벨) 선택자</h2>
<p>
동위관계(같은레벨)에 있는 뒤에 위치한 특정 요소를 선택할 때
</p>
<pre>
* a요소 뒤에 있는 b요소 "하나만" 선택
a+b {
스타일속성:값;
}
* a요소 뒤에 있는 모든 b요소 선택
a~b {
스타일속성:값;
}
</pre>
<div id="test2">div1</div>
<div>div2</div>
<div>div3</div>
<div>div4</div>
<ul>ul</ul>
<div>div5</div>
<br>
<hr>
<h2>4. 반응 선택자</h2>
<p>
사용자의 움직임에 따라 선택되는 선택자
</p>
<pre>
* 해당 요소에 클릭이 되었을 경우 스타일 부여
선택자:active {
스타일속성: 값;
}
* 해당 요소에 마우스가 올라가는 순간 스타일 부여
선택자:hover {
스타일속성: 값;
}
* 링크 태그에서 방문하기 전의 스타일 부여
선택자:link {
스타일속성: 값;
}
* 링크 태그에서 방문하기 후의 스타일 부여
선택자:visit {
스타일속성: 값;
}
</pre>
<div id="active-test" class="area">active테스트</div>
<br><br>
<div id="hover-test" class="area">hover테스트</div>
<br><br>
<a id="link" href="https://naver.com" target="_blank">네이버로 이동</a>
<hr>
<h2>5. 상태 선택자</h2>
<p>
요소의 상태에 따라 선택되는 선택자
</p>
<pre>
1) 체크된(checked) 상태의 요소내에
선택자:checked {
스타일속성:값;
}
</pre>
<input type="checkbox" id="apple">
<label for="apple">사과</label>
<input type="checkbox" id="banana">
<label for="banana">바나나</label>
<br><br>
<pre>
2) 초점(focus)가 맞춰진 input요소 선택
선택자:focus {
스타일속성:값;
}
</pre>
아이디 : <input name="userId">
<br>
비밀번호: <input type="password" name="userPwd">
<br><br>
<pre>
3) 활성화(enabled) 되어 있는 요소들 선택
선택자:enalbed {
스타일속성:값;
}
4) 비활성화(disabled) 되어 있는 요소들 선택
선택자:disalbed {
스타일속성:값;
}
</pre>
<button>클릭가능</button>
<button disabled>클릭불가능</button>
<br><br>
<hr>
<h2>6. 일반 구조 선택자</h2>
<p>
특정한 위치에 있는 태그를 선택되는 선택자 (일반적으로 자손, 후손선택자의)
</p>
<pre>
:first-child -> 형제 관계 태그 중 첫번째 태그 선택
:last-child -> 형제 관계 태그 중 마지막 태그 선택
:nth-child(수열) -> 형제 관계 태그 중 수열번째 태그 선택
:nth-last(수열) -> 형제 관계 태그 중 뒤에서 수열번째 태그 선택
</pre>
<div id="summer">
<p>여름1</p>
<p>여름2</p>
<p>여름3</p>
<p>여름4</p>
<p>여름5</p>
</div>
<br><br>
<hr>
<h2>7. 형태 구조 선택자</h2>
<p>
특정한 위치에 있는 태그를 선택되는 선택자 (태그별로 구분)
</p>
<pre>
:first-of-type -> 형제 관계 태그 중 첫번째 위치한 특정한 태그 선택
:last-of-type -> 형제 관계 태그 중 마지막에 위치한 특정한 태그 선택
:nth-of-type(수열) -> 형제 관계 태그 중 수열번째 위치한 특정한 태그 선택
:nth-last-of-type(수열) -> 형제 관계 태그 중 뒤에서 수열번째 위치한 특정한 태그 선택
</pre>
<div id="fall">
<div>div1</div>
<p>가을1</p>
<p>가을2</p>
<p>가을3</p>
<div>div2</div>
<p>가을4</p>
<p>가을5</p>
<div>div3</div>
</div>
<br><br>
<hr>
<h2>8. 부정 선택자</h2>
<p>
특정 선택 요소를 제외한 나머지 요소들의 스타일 적용
</p>
<pre>
요소:not(선택자)
</pre>
<div id="winter">
<p>겨울1</p>
<p>겨울2</p>
<p>겨울3</p>
<p>겨울4</p>
<p>겨울5</p>
</div>
</body>
</html>
<CSS>
/* =================== 1. 속성 선택자 ================= */
/* div요소들 중 name속성값이 name1과 "일치"하는 요소 */
div[name=name1] {
background-color: rgb(255, 225, 169);
}
/* div요소들 중 name속성값이 name1이 "포함"하는 요소(공백으로 구분, 단어단위로) */
div[name~=name1] {
color:red;
}
/* div요소들 중 class속성값이 class로 "시작"하는 요소*/
div[class^=class] {
background-color: aquamarine;
}
/* div요소들 중 class속성값이 class로 "시작"하는 요소(단어단위로 -로 구분)*/
div[class|=class] {
color:blueviolet;
}
/* div요소들 중 class속성값이 ss로 "끝"하는 요소*/
div[class$=ss] {
font-size: 20px;
}
/* div요소들 중 class속성값이 i를 "포함"하는 요소*/
div[class*=i] {
border : 1px dotted ;
}
/* 응용 : class속성값이 div-class인 요소들 중에서 name속성값이
name3이 포함(단어로)되어 있는 요소에 배경색 스타일 적용*/
.div-class[name~=name3] {
background-color: plum;
}
/* ============= 2. 자손 선택자와 후손 선택자 =========== */
/* id가 test1인 요소의 자손들 중 h4요소만 선택 */
#test1>h4 {
background-color: orange;
}
/* ul의 자손 요소들 선택 */
#test1>ul>li {
background-color: beige;
}
/* id가 test1인 요소의 후손들 중 li 요소 선택 */
#test1 li {
color: rgb(75, 2, 144);
}
/* =================== 3. 동위 선택자 ================= */
/* id가 test2인 형제들 중 바로 뒤에 나오는 div 요소 하나만 */
#test2+div {
background-color: aquamarine;
}
#test2+ul {
background-color: yellow; /* 선택안됨(바로 뒤의 요소가 아니기 때문)*/
}
/* id가 test2인 형제들 중 ul 요소들 모두 선택 */
/* #test2~div {color:rgb(176, 3, 41)} */
#test2~ul {color:rgb(176, 3, 41)}
/* =================== 4. 반응 선택자 ================= */
.area {
width: 100px;
height: 100px;
background-color: yellowgreen;
}
#active-test:active {
background-color: rgb(83, 2, 158);
color: white;
}
#hover-test:hover {
background-color: orchid;
color: white;
}
a#link:link {color: aquamarine;}
#link:hover {color: green;}
#link:active {color: blueviolet;}
#link:visited {color: tomato;}
/* =================== 5. 상태 선택자 ================= */
input[type=checkbox]:checked {
width: 30px;
height: 30px;
}
/* 체크박스가 선택되면 글자도 커지게 스타일지정 */
input[type=checkbox]:checked+label {
font-size: 30px;
}
input[name^=user]:focus {
background-color: pink;
}
button:enabled {
background-color: rgb(188, 125, 248);
}
button:disabled {
background-color: yellowgreen;
}
/* =================== 6. 일반 구조 선택자 ================= */
#summer>:first-child {
background-color: lightgray;
}
#summer :last-child {
background-color: lightpink;
}
#summer :nth-child(2) {
background-color: lightcyan;
}
#summer :nth-child(2n) { /* 짝수번째 */
color: blue;
}
#summer :nth-child(2n+1) { /* 홀수번째 */
color: red;
}
/* =================== 7. 형태 구조 선택자 ================= */
/* 첫번째는 div인데 p태그로 잘못 기재했다고 인식 안됨.
first-child : 첫번째가 중요. 태그는 중요하지 않음
first-of-type : 태그 중요 */
/* #fall p:first-child {
background-color: lightgray;
} */
#fall p:first-of-type {
background-color: lightgray;
}
#fall p:last-of-type {
background-color: lightcoral;
}
#fall p:nth-of-type(3) {
background-color: lightgreen;
}
#fall p:nth-of-type(2n) {
color: blueviolet;
}
#fall p:nth-of-type(2n+1) {
color: rgb(43, 174, 226);
}
/* =================== 8. 부정 선택자 ================= */
#winter :not(p:first-child) {
color: darkorange;
}