h1 {
color: red;
font-size: 12px;
/* 주석 */
}
h1
를 작성하더라도 모든 h1
에 적용됨속성: 값;
형태로 선언내부스타일 (embedded)
<head>
<style>
p {
color: red;
}
</style>
</head>
<body>
<p>This is my paragraph.</p>
</body>
인라인 스타일 (inline)
<body>
<h1 style="color:red; background:yellow;">welcome!</h1>
</body>
외부 스타일 (extend)
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/style.css">
<title>CSS</title>
</head>
<body>
<h1>welcome!</h1>
</body>
스타일 우선순위
1
사용자가 구성한 스타일(일반적X) > 2
개발자가 선언한 스타일 > 3
브라우저에 의해 정의된 스타일1
inline style > 2
id style > 3
class style > 4
tag style스타일 상속
👉 [속성명] MDN 검색
ex) text color css MDN
👉 can i use 검색
ex) grid gap 검색 ➡ 브라우저에서 작동되는지 확인할 수 있음
Type (요소 셀렉터)
Class
.class-name {
color: blue;
}
ID
#id-name {
color: red;
}
[attr]
a[target] {
color: hotpink;
}
[attr=value]
a[input="submit"] {
/* a 태그 중 input 속성의 속성값이 submit인 선택자 */
color: green;
}
[attr^=value]
a[input^="sub"] {
/*sub로 시작하는 submit은 포함됨*/
color: green;
}
[attr$=value]
a[href$=".com"] {
/*.com로 끝나는 주소 전부 포함*/
color: green;
}
[attr*=value]
a[input^="text"] {
/*text를 포함하는 text, textarea 모두 선택됨*/
color: green;
}
first-child
li:first-child {
/*li list의 형제 요소 중 첫 번째 요소만 선택 */
color: green;
}
⚠ 해당 태그(or 선택자) 중 첫 번째 요소가 아닌 ! 해당 태그(or 선택자)의 형제 노드 중 첫 번째 요소를 뜻함
👉 만약 해당 태그(or 선택자)의 형제 노드의 첫 번째 요소에 해당하는 태그(or 선택자)가 없다면 style은 적용되지 않음 !
EX ⬇<ul> <li>영화1</li> <li class="movie">영화2</li> <li class="movie">영화3</li> <li class="movie">영화4</li> </ul>
.movie:first-child { ~ }
last-child
li:last-child {
/*li list의 형제 요소 중 마지막 요소만 선택 */
color: green;
}
nth-child
2n+1
또는 even
odd
와 같이 작성할 수도 있음li:nth-child(3) {
/*li list의 형제 요소 중 3번째 요소만 선택 */
color: green;
}
first-of-type
<div>영화1</div>
<p>영화2</p>
<p>영화3</p>
<div>영화4</div>
<p>영화5</p>
p:first-of-type {
color: black;
}
p
태그의 형제들 중(영화1-5), p
태그만 찾아서(영화2,3,5) 그 중 첫 번째만 style을 적용⚠ [~]-of-type의 경우, 해당 형제 노드의 selector 중 type을 기준으로 선택
👉 만약 type의 종류가 여러가지라면, 각 type별 [~]에 해당하는 것이 모두 선택됨
EX ⬇<div class="movie">영화1</div> <p class="movie">영화2</p> <p class="movie">영화3</p> <div class="movie">영화4</div> <p class="movie">영화5</p>
.movie:first-of-type { color: black; }
- 위의 경우, movie의 형제 노드 중,
div
와p
의 첫 번째 요소인 영화1과 영화2가 모두 선택됨
last-of-type
p:last-of-type {
color: black;
}
nth-of-type
p:nth-of-type(n) {
color: black;
}
not
input:not(.pw) {
/*input 중 pw class만 제외하고 선택 */
background: blue;
}
input:not([type=submit]) {
/*input 중 type이 submit만 제외하고 선택 */
background: blue;
}
link
a:link{
color: yellowgreen;
}
visited
a:visited{
color: green;
}
hover
input[type=button]:hover{
color: yellow;
}
active
input[type=button]:active{
color: green;
}
🙆♀️ 작성 순서 (a.k.a LVHA)
link → visited → hover → active
focus
input[type=text]:focus{
color: yellowgreen;
}
enabled
input[type=button]:enabled{
color: yellowgreen;
}
disabled
input[type=button]:disabled{
color: yellowgreen;
}
checked
input[type=button]:checked{
outline: yellowgreen;
}
before
.movie::before {
/* 코드 앞 부분에 content 안의 내용이 들어간 것처럼 보임 */
content: '🙆♀️';
}
after
first-letter
.lorem::first-letter {
color: red;
}
⚠ before와 같이 사용할 경우, first-letter보다 before가 먼저 적용되기 때문에 주의해야 함
first-line
.lorem::first-line {
color: red;
}
selection
.lorem::selection {
background-color: red;
color: white;
}
하위
ul li:last-of-type{
color: red;
}
자식
ul > li:last-of-type{
color: red;
}
일반 형제 선택자 결합
code ~ p {
color: red;
}
인접 형제 선택자 결합
code + p {
color: red;
}
code, p, h1 {
color: red;
}
* {
color: red;
}
*
: 자체가 선택자로 사용되기도 함p + * {
color: red;
}
p > * {
color: red;
}
initial
.child2 {
color: initial;
} /* color에 대해서만 상속X */
.child2 {
all: initial; /* 모든 요소에 대해 */
}
inherit
.parent * {
color: inherit;
} /* color에 대해 모든 하위 요소는 상속을 받음 */
unset
inherit
initial
.parent .child {
color:unset;
} /* color에 대해 parent의 모든 하위 요소 child는 상속을 받음 */
!important
: 우선순위에 상관없이 항상 0순위