
: HTML 등 마크업 언어로 작성된 문서를 웹사이트에 표현되는 방법을 정해주는 스타일시트 언어
스타일을 사용하는 이유
반응형 웹 디자인
: 사용자가 PC, 모바일 어떤 것으로 접속하든 웹 브라우저의 크기에 맞게 화면 레이아웃을 자동으로 바꿔 주는 방법
: 해당 요소의 시작태그 안에 `style = “속성:값;"` 작성
<태그명 style="속성1:속성값1; 속성2:속성값2;"> </태그명>
<body>
<p style="color:red; text-decoration:underline;">인라인 스타일 적용</p>
</body>인라인 스타일 적용
: 웹 문서 안에서 사용할 스타일을 같은 문서 안에 정리한 것
<head>태그 안에 <style>태그를 사용하여 작성하고, 그 안에 선택자{ 속성:값; } 정의<head>
<style>
선택자 {
속성1:속성값1;
속성2:속성값2;
}
</style>
</head>
<head>
<style>
p {
color:red;
text-decoration:underline;
}
</style>
</head>
: 여러 웹 문서에서 사용할 스타일을 별도 파일로 저장해 놓은 스타일 정보
<head>
<link rel="stylesheet" href="외부 스타일 시트 파일 경로">
</head>
<head>태그 안에 <link rel=”stylesheet” href=”외부스타일시트 파일경로”>을 사용하여, 스타일 정보를 따로 저장해 놓은 css파일을 연결link:css 을 치고 Tab키를 누르면 <link rel=”stylesheet” href=”외부스타일시트 파일경로”> 자동 생성<!-- style.css파일을 연결해 놓은 html파일 -->
<head>
<link rel="stylesheet" href="./style.css">
</head>/* style.css파일 */
p {
color:red;
text-decoration:underline;
}스타일 적용 순서
1. 인라인 스타일
2. 내부/외부 스타일 시트
3. 웹 브라우저 기본 스타일
선택자 { 속성:값; 속성:값; }* { 스타일 규칙 }태그명 { 스타일 규칙 }.클래스명 { 스타일 규칙 }<태그명 class="class값"> 인 태그를 .class값 으로 선택#아이디명 { 스타일 규칙 }<태그명 id="id값"> 인 태그를 #id값 으로 선택선택자1, 선택자2 { 스타일 규칙 }h1,span선택자 { 스타일 규칙 !important; }선택자{ } 안에서 중요하고 무조건 적용되어야 하는 스타일 뒤에 !important 를 추가h { color:yello !important; }: 스타일 규칙의 중요도와 적용 범위에 따라 우선순위가 결정되고, 그 우선순위에 따라 위에서 아래로 스타일 적용
중요도/점수 : 전체(0점) < 타입(1점) < 클래스(10점) < 아이디(100점) < 인라인스타일(1000점) < !important(10000점)
1. 얼마나 중요한가?
2. 적용 범위는 어디까지인가?
3. 소스 코드의 작성 순서는?
<style>
p { color : black; }
p { color : blue; }
</style>
<p style="color:red;">안녕</p>
<p> 반갑습니다 </p>
<p> 오늘 날씨가 참 좋네요 </p>

4. 선택자의 점수는 합산하여 계산된다.
<style>
#menu li.coffee { }
</style>
는 아이디 + 타입 + 클래스 = 100 + 1 + 10 = 111점
<style>
.list li:hover { }
</style>
는 클래스 + 타입 + 반응 = 10 + 1 + 10 = 21점
예시
<head>
<style>
* {color : red;} /*0점*/
h2 {color : green;} /*1점*/
p#hello {color : pink;} /*101점*/
p.hi {color : gray;} /*11점*/
</style>
</head>
<body>
<h1>제목1</h1>
<h2>제목2</h2>
<p class="hi" id="hello">.hi#hello인 p</p>
<p class="hi">.hi인 p 첫번째</p>
<p class="hi">.hi인 p 두번째</p>
</body>

: 특정 요소를 계층적 구조로 선택
부모 > 자식 { 스타일 규칙 }부모 자손 { 스타일 규칙 }자식 ~ 형제 { 스타일 규칙 }자식 + 형제 { 스타일 규칙 }<!-- 예시 : 계층 선택자 -->
<!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>Document</title>
<style>
.rule > strong {
color: red; /* rule클래스값을 가진 부모의 자식 중 strong인 자식에만 빨간색 글씨 적용 */
}
.rule li {
color: green; /* rule클래스값을 가진 부모의 자손 중 li인 모든 자손에게 녹색 글씨 적용 */
}
.rule > ol > li+li {
background-color:red; /* 근접 후행 선택자 : rule클래스값을 가진 부모의 자식 ol의 자식 li의 형제
중 가장 가까운 li인 형제만 빨간 배경색 적용 */
}
.rule > ol > li ~ li {
text-align:center; /* 후행 선택자 : rule클래스값을 가진 부모의 자식 ol의 자식 li의 형제 중
li인 모든 형제에게 가운데 정렬 적용 */
}
</style>
</head>
<body>
<div class="rule">
<strong>연수생 수칙</strong> <!--첫번째 스타일 적용-->
<ol>
<li>지각하지 않기</li> <!--두번째 스타일 적용-->
<li>결석하지 않기</li> <!--두번째+세번째+네번째 스타일 적용-->
<span>(불가피할 땐 담임선생님께 꼭 말하기)</span>
<li>복습하기</li> <!--두번째+네번째 스타일 적용-->
</ol>
</div>
<div id="rule"></div>
</body>
</html>

: 요소의 속성을 기반으로 선택
[속성] 선택자 : [속성] { 스타일 규칙 }
[href] { color:red; } /*href속성이 있는 요소를 선택*/
a[href] { color:red; } /*href속성이 있는 a태그를 선택*/
[속성=값] 선택자 : [속성 = 값] { 스타일 규칙 }
li[class="coffee"] { color:red; } /*class속성 값이 coffee인 <li\>태그를 선택*/
<li class="coffee"> 는 선택
<li class="ade"> 는 선택x
[속성~=값] 선택자 : [속성 ~= 값] { 스타일 규칙 }
[class ~= button] { /*class값 중에 button이 있는 요소*/
box-shadow: rgba(0,0,0,0.4) 4px 4px;
}
<p class="flat"> 선택x
<p class="button"> 선택
<p class="flat button"> 선택
[속성|=값] 선택자 : [속성 |= 값] { 스타일 규칙 }
[속성~=값] 선택자는 하이픈(-)으로 연결한 단어에 스타일을 적용하지 않음)a[title ~= us] { /*title 값 중에 us가 포함된 단어가 있는 요소*/
color: blue;
}
<a href='#' title="us-english"> 선택
<a href='#' title="us"> 선택
<a href='#' title="u"> 선택x
[속성^=값] 선택자 : [속성 ^= 값] { 스타일 규칙 }
a[title ~= en] { /*title 값이 en으로 시작하는 단어가 있는 요소*/
color: blue;
}
<a href='#' title="english"> 선택
<a href='#' title="en"> 선택
<a href='#' title="e"> 선택x
[속성$=값] 선택자 : [속성 $= 값] { 스타일 규칙 }
a[href ~= html] { /*href 값이 html으로 끝하는 단어가 있는 요소*/
color: blue;
}
<a href='file1.html'> 선택
<a href='file2.xls'> 선택x
[속성*=값] 선택자 : [속성 *= 값] { 스타일 규칙 }
a[href *= w3] { /*href 값이 w3과 일부 일치하는 요소*/
color: blue;
}
<a href='https://www.w3.org/TR'> 선택
<a href='https://caniuse.com/'> 선택x
: 사용자 동작에 반응하는 가상 클래스 선택자
a:link { 스타일 규칙 } : 방문하지 않은 링크에 스타일 적용a:visited { 스타일 규칙 } : 방문했던 링크에 스타일 적용요소:hover { 스타일 규칙 } : 지정한 요소에 마우스 포인터 올려놓았을 때 스타일 적용요소:active { 스타일 규칙 } : 지정한 요소를 활성화(클릭)했을 때 스타일 적용요소:focus { 스타일 규칙 } : 지정한 요소에 포커스가 맞춰졌을 때 스타일 적용li:hover { color:red; }
li:active { color:blue; }li요소에 마우스를 올리면 글씨가 빨간색으로, 클릭하면 파란색으로 변한다: 요소 상태에 따른 가상 클래스 선택자
a:target { 스타일 규칙 } : 앵커 대상에 스타일 적용<style>
#intro:target {
background-color: #blue;
}
</style>
...
<nav class="navi">
<ul>
<li><a href="#intro">이용 안내</a></li>
...
</ul>
</nav>
<div id="intro">
<h2>이용 안내</h2>
...
</div>이용 안내 앵커 태그 클릭 시, 연결된 div#intro 부분의 스타일 적용요소:enabled { 스타일 규칙 } : 지정한 요소를 사용할 수 있는 상태일 때 스타일 적용요소:disabled { 스타일 규칙 } : 지정한 요소를 사용할 수 없는 상태일 때 스타일 적용disabled속성을 지정해야 하는데, 이 때 disabled속성인 텍스트 영역 필드에 스타일을 쉽게 적용할 수 있음요소:checked { 스타일 규칙 } : 선택한 요소의 스타일 적용checked라는 속성이 추가되어, 이 대상에게 쉽게 스타일 적용 가능요소:not(선택자) { 스타일 규칙 } : 지정한 요소가 아닐 때 선택해서 스타일 적용input:not([type="radio"]) { 스타일 } /*input태그 중 type이 radio가 아닌 요소*/: 웹 문서의 구조를 기준으로 특정 위치에 있는 요소를 찾아 스타일 적용
요소:only-child { 스타일 규칙 } : 부모 안에 자식 요소가 하나뿐일 때 자식 요소를 선택:first-child { 스타일 규칙 } : 부모 안에 있는 모든 요소 중에서 첫 번째 자식 요소 선택:last-child { 스타일 규칙 } : 부모 안에 있는 모든 요소 중에서 마지막 자식 요소 선택:nth-child(n) { 스타일 규칙 } : 부모 안에 있는 모든 요소 중에서 n번째 자식 요소 선택:nth-child(2n+1) 또는 :nth-child(odd) : 부모 안에 있는 모든 요소 중 홀수 번째 자식 요소에 스타일 적용:nth-child(2n) 또는 :nth-child(even) : 부모 안에 있는 모든 요소 중에서 짝수 번째 자식 요소에 스타일 적용<style>
ul li:nth-child(2n) {
background-color:aquamarine ;
}
</style>
...
<ul>
<li>첫번째</li>
<li>두번째</li>
<li>세번째</li>
<li>네번째</li>
<li>다섯번째</li>
</ul>
:nth-last-child(n) { 스타일 규칙 } : 부모 안에 있는 모든 요소 중에서 끝에서 n번째 자식 요소 선택A:only-type-of { 스타일 규칙 } : 부모 안에 A요소가 하나뿐일 때 선택A:first-type-of { 스타일 규칙 } : 부모 안에 있는 A요소 중 첫번째 요소 선택A:last-type-of { 스타일 규칙 } : 부모 안에 있는 A요소 중 마지막 요소 선택A:nth-of-type(n) { 스타일 규칙 } : 부모 안에 있는 A요소 중에서 n번째 요소 선택A:nth-last-of-type(n) { 스타일 규칙 } : 부모 안에 있는 A요소 중에서 끝에서 n번째 자식 요소 선택요소::first-letter : 첫 번째 글자에 스타일 적용요소::first-line : 첫 번째 줄에 스타일 적용<style>
li::first-letter { color:red; }
</style>
...
<ul class="list">
<li>첫번째</li>
<li>두번째</li>
<li>세번째</li>
<li>네번째</li>
<li>다섯번째</li>
</ul>
요소::before : 내용 앞에 콘텐츠 추가요소::after : 내용 뒤에 콘텐츠 추가<style>
li.hi::after {
content: "HI!!";
font-size: x-small;
padding: 2px 4px;
border-radius: 2px;
background: #f00;
color: #fff;
}
</style>
...
<ul class="list">
<li class="hi">첫번째</li>
<li>두번째</li>
<li>세번째</li>
<li class="hi">네번째</li>
<li>다섯번째</li>
</ul>
이해하기 쉬운 글 감사합미다 ^..^ 비공개 절대 금ㅈㅣ⭐️✨🤩💫🌟💛