<ul class="st1">
<li>A</li>
<li>B</li>
<li>C
<ul>
<li>1</li>
<li class="sb1">2</li>
<li>3</li>
</ul>
</li>
<li>D</li>
</ul>
<ul>
<li>E</li>
<li>F</li>
<li>G</li>
<li>H</li>
</ul>
.st1 li {
border: 1px solid blue;
}
.st1 > li {
border: 1px solid blue;
}
.sb1+li {
background-color: yellow;
}
.sb1 ~ li {
background-color: yellow;
}
예시)
<ul>
<li><a>메인메뉴</a></li>
<li><a href="abc">메뉴1</a></li>
<li><a href="" class="aaa bbb">메뉴2</a></li>
<li><a href="" class="xx yy">메뉴3</a></li>
<li><a href="" class="xx">메뉴4</a></li>
</ul>
a[href] {
background-color: yellow;
}
a[href="abc"] {
background-color: yellow;
}
a[class="aaa"] {
background-color: yellowgreen;
→ 값이 완전히 일치해야 적용된다 -> 위는 false
a[class~="aaa"] {
background-color: violet;
}
→ 값이 여러 개 일 때 하나만 일치해도 적용된다.
→ 특정 클래스 값이 붙었을 때 이벤트 등을 적용하는 등 에 사용
a[class|="xx"] {
background-color: tomato;
}
a[class^="x"] {
background-color: turquoise;
}
a[class$="y"] {
border: 1px solid brown;
}
a[href*="b"] {
border: 2px solid red;
}
<ul>
<li><a href="#1">a</a></li>
<li><a href="#2">b</a></li>
<li><a href="#3">c</a></li>
<li><a href="#4">d</a></li>
</ul>
→ href값을 다 다르게 하면 누른 링크만 색이 바뀜(같은 링크이면 하나만 눌러도 다 색이 바뀐다)
a:link {
color: black;
}
a:visited {
color: seagreen;
}
→ 링크를 누르기 전 : black
→ 링크를 누르고 난 후 : seagreen
input[type="text"]:focus {
outline: 1px solid red;
}
[class*="focus"]:focus {
outline: 1px solid blue;
}
/*마우스가 아닌 키보드 tab으로 포커스된 요소에 적용된다*/
/*브라우저 지원 되는지 확인 후 사용*/
[class*="tab-focus"]:focus-visible {
outline: 1px solid blue;
}
→ outlilne : border 밖의 선(박스 요소가 아님!)
⇒ focus는 지원되지 않는 브라우저도 있으니 확인하고 사용해야한다.
⇒ type이 text인 input같은 타이핑 인풋 요소는 focus-visible 사용하면 클릭과 탭 모두 적용된다.
input[type=radio]:enabled+label {
color: tomato;
}
input[type=radio]:enabled+label {
color: gray;
}
input:required {
border-color: orange;
}
input[type="email"]:valid {
border-color: green;
}
→ :not(:valid) 값이 무효함
input[type="email"]:not(:valid) {
border-color: red;
}
input:checked + span {
color: blue;
}
ol li:first-child {
color: yellowgreen;
}
ol li:last-child {
color: yellowgreen;
}
/*class가 outer인 요소의 바로 아래 li 중 last-child가 아닌 li 선택*/
.outer > li:not(:last-child) {
text-decoration: line-through;
}
ul:not(.outer) li {
font-weight: bold;
}
div:first-of-type {
background-color: yellow;
}
div:last-of-type {
background-color: yellowgreen;
}
p:nth-of-type(2) {
color: tomato;
}
div :only-of-type {
border: 1px solid blue;
}
div :only-child {
text-decoration: wavy underline tomato;
}
의사 클래스 - CSS: Cascading Style Sheets | MDN
<h1>오늘의 할 일</h1>
<ul>
<li>강의듣기</li>
<li class="try">실습하기</li>
<li>정리하기</li>
</ul>
li.try::after {
content: 'now!';
margin-left: 0.8em;
padding: 0.15em 0.15em;
font-size: 0.7em;
font-weight: 700;
color: #fff;
background-color: coral;
border-radius: 0.2em;
}
li::before {
content: '😀';
display: inline-block;
margin: 0 1em 0 0;
width: 0.8em;
height: 0.8em;
}
.orange::selection {
background-color: orange;
color: #fff;
}
.skyblue::selection {
background-color: skyblue;
color: #fff;
}
<label for="id">
아이디<input type="text" placeholder="아이디를 입력하세요!" required id="id">
</label>
#id {
margin-left: 0.5em;
padding: 0.2em 0.4em;
}
input:required::placeholder {
background-color: violet;
color: #fff;
}