
지난 섹션에서 HTML의 뼈대를 만드는 방법을 배우셨으니, 이제 웹 페이지를 더욱 멋지고 보기 좋게 꾸며줄 CSS의 세계로 떠나볼 시간입니다! 마치 집을 지을 때 뼈대(HTML)를 세우고, 그 뼈대에 페인트칠을 하고 가구를 배치하여 아름답게 꾸미는 것과 같아요. 여기서 페인트칠과 가구 배치 역할을 하는 것이 바로 CSS랍니다.
CSS란 무엇일까요?
CSS는 Cascading Style Sheets의 약자로, 웹 페이지의 스타일을 정의하는 언어입니다. 쉽게 말해, HTML로 작성된 콘텐츠(글자, 이미지, 버튼 등)의 모양과 배치를 결정하는 역할을 합니다.
HTML과 CSS의 환상적인 짝꿍:
HTML이 웹 페이지의 내용과 구조를 담당한다면, CSS는 그 내용을 어떻게 보여줄지를 결정합니다. 이 둘은 아주 긴밀하게 연결되어 있어서, 웹 개발에서는 항상 함께 사용된다고 생각하시면 돼요.
좀 더 자세히 살펴볼까요?
제공해주신 내용에서 아주 좋은 비유를 들어 설명해주셨어요. 웹 페이지를 만들 때, 왼쪽에는 HTML 코드만 있어서 텍스트와 이미지 같은 콘텐츠만 덩그러니 놓여있다고 상상해보세요. 마치 뼈대만 있는 집과 같죠.
하지만 오른쪽에 있는 웹 페이지는 똑같은 HTML 코드를 사용했지만, CSS라는 마법을 부려서 훨씬 보기 좋게 바뀌었어요! 글자 색깔이 바뀌고, 배경색이 생기고, 요소들이 보기 좋게 정렬되는 등 완전히 다른 모습이죠? 바로 이것이 CSS의 힘입니다.
CSS의 주요 개념:
CSS는 개발자들이 웹 페이지의 다양한 부분을 원하는 대로 꾸밀 수 있도록 수많은 속성을 제공합니다. 마치 그림을 그릴 때 다양한 색깔의 물감과 붓을 사용하는 것과 같아요.
물론 CSS에는 훨씬 더 많은 속성들이 있지만, 처음부터 모든 것을 다 알 필요는 없어요. 중요한 것부터 차근차근 배우고, 실제로 코드를 작성하면서 반복적으로 사용하다 보면 자연스럽게 익숙해질 거예요. 마치 자전거를 처음 탈 때는 넘어지기도 하지만, 계속 연습하다 보면 능숙하게 탈 수 있게 되는 것과 같습니다.
CSS 코드의 기본 구조:
이제 실제 CSS 코드가 어떻게 생겼는지 살펴볼게요. 제공해주신 예시를 보면 다음과 같은 구조를 가지고 있습니다.
선택기 {
속성: 값;
속성: 값;
/* ... 더 많은 속성-값 쌍 ... */
}
h1이라고 쓰면 됩니다. 마치 특정 종류의 옷을 고르는 것과 같아요.font-size라고 쓰면 됩니다.20px이라고 쓰면 됩니다.{}로 묶인 부분으로, 여러 개의 선언들을 포함할 수 있습니다. 마치 선택한 옷에 적용할 여러 가지 스타일(색깔, 크기, 재질 등)을 모아놓은 것과 같아요.다음 단계:
다음 강의에서는 실제로 CSS 코드를 작성하고 웹 페이지에 스타일을 적용하는 방법을 배우게 될 거예요. 정말 재미있을 것 같지 않나요?
핵심 요약:
이제 CSS의 기본적인 개념을 이해하셨으니, 다음 강의에서 더욱 흥미로운 내용을 배워보도록 합시다!
이 섹션에서는 웹 페이지를 꾸미는 데 필수적인 기술인 CSS(Cascading Style Sheets)를 사용하는 세 가지 방법에 대해 자세히 알아볼 거예요. 강사님은 인라인 CSS, 내부 CSS, 외부 CSS라는 세 가지 방법을 소개하고, 각각의 특징과 장단점, 그리고 어떤 방법을 사용하는 것이 가장 좋은지에 대해 설명해 주실 겁니다. 이전 섹션에서 만들었던 HTML 프로젝트를 기반으로 실제 코드를 작성하면서 CSS를 익힐 수 있도록 안내해 주실 거예요.
프로젝트 준비:
강사님은 각 섹션별로 폴더를 나누어 관리하는 것을 선호하셔서, 이번 섹션을 위해 새로운 프로젝트 폴더를 만들 겁니다. 바탕화면에 03 CSS Fundamental이라는 이름으로 새 폴더를 만들고, 지난 섹션에서 작업했던 프로젝트 폴더의 내용을 복사해서 붙여넣을 거예요. 이렇게 하면 이번 섹션의 시작점이 지난 섹션의 마지막 코드가 되기 때문에, 코드를 처음부터 다시 작성할 필요 없이 바로 CSS 학습을 시작할 수 있습니다. 만약 여러분이 하나의 폴더에서 계속 작업하고 싶다면 그렇게 해도 괜찮다고 하시네요. 하지만 강사님은 깔끔하게 정리된 코드를 제공하기 위해 각 섹션별로 폴더를 관리하는 방식을 선택하신 겁니다.
VS Code 설정 및 프로젝트 열기:
이제 VS Code를 열고 방금 만든 03 CSS Fundamental 폴더를 열어볼까요? VS Code에서 오른쪽 클릭 후 "새 창에서 폴더 열기"를 선택하고, 바탕화면에 있는 해당 폴더를 선택하면 됩니다. 강사님처럼 VS Code 창을 왼쪽으로 밀어놓고, 작업할 파일을 오른쪽에 배치하면 코딩 작업에 더욱 집중할 수 있습니다.
Go Live 서버 실행:
이전 섹션에서 사용했던 "Go Live" 확장 프로그램을 다시 실행해 볼까요? VS Code 하단의 "Go Live" 버튼을 클릭하면 웹 페이지를 로컬 서버에서 바로 확인할 수 있습니다. 새로운 프로젝트 폴더이기 때문에 이전 서버 연결은 끊어졌을 수 있지만, "Go Live"를 다시 클릭하면 문제없이 실행될 거예요. 이제 CSS를 배우고 웹 페이지에 스타일을 적용할 준비가 모두 끝났습니다.
CSS를 사용하는 세 가지 방법:
강사님은 CSS를 사용하는 방법이 크게 세 가지라고 설명하셨습니다. 바로 인라인 CSS, 내부 CSS, 그리고 외부 CSS입니다. 이제 각각의 방법에 대해 자세히 알아볼까요?
정의: 인라인 CSS는 HTML 요소 내부에 직접 style 속성을 사용하여 CSS 코드를 작성하는 방식입니다. 특정 HTML 요소에만 스타일을 적용하고 싶을 때 사용할 수 있지만, 일반적으로는 권장되지 않는 방법입니다.
예시: 강사님은 <h1> 태그 내부에 style 속성을 추가하고, color: blue;라는 CSS 코드를 작성하여 텍스트 색상을 파란색으로 변경하는 것을 보여주셨습니다.
<h1 style="color: blue;">이 텍스트의 스타일을 바꾸고 싶다고 치죠, 파란색이요</h1>
장점:
단점:
결론: 강사님은 인라인 CSS가 어떻게 작동하는지 보여주기 위해 예시를 제시했지만, 실제 웹 페이지나 웹사이트를 만들 때는 절대 사용하면 안 된다고 강조하셨습니다. 다른 사람의 코드나 오래된 웹 페이지에서 인라인 CSS를 볼 수는 있지만, 여러분이 직접 코딩할 때는 사용하지 않도록 주의해야 합니다.
정의: 내부 CSS는 HTML 문서의 <head> 태그 안에 <style> 태그를 사용하여 CSS 코드를 작성하는 방식입니다. 특정 HTML 파일에만 적용되는 스타일을 정의할 때 유용하지만, 여러 페이지에 공통으로 적용되는 스타일에는 적합하지 않습니다.
예시: 강사님은 <head> 태그 안에 <style> 태그를 추가하고, 다음과 같은 CSS 코드를 작성하여 <h1> 태그의 텍스트 색상을 다시 파란색으로 변경하는 것을 보여주셨습니다.
<!DOCTYPE html>
<html>
<head>
<title>CSS 배우기</title>
<style>
h1 {
color: blue;
}
</style>
</head>
<body>
<h1>이 텍스트의 스타일을 바꾸고 싶다고 치죠, 파란색이요</h1>
</body>
</html>
설명: <style> 태그 안의 내용은 HTML이 아닌 CSS 코드로 인식됩니다. CSS 코드는 선택자(selector)와 선언 블록(declaration block)으로 구성됩니다. 위 예시에서 h1은 스타일을 적용할 HTML 요소를 선택하는 선택자이고, 중괄호 {} 안에 있는 color: blue;는 텍스트 색상을 파란색으로 설정하는 선언입니다. 선언은 속성(property)과 값(value)으로 이루어져 있습니다.
장점:
단점:
<style> 태그를 모두 수정해야 합니다.결론: 내부 CSS는 인라인 CSS에 비해 발전된 방식이지만, CSS 코드가 많아지거나 여러 페이지에 공통 스타일을 적용해야 하는 경우에는 외부 CSS를 사용하는 것이 더 효율적입니다. 강사님은 스타일과 HTML을 분리했다는 점에서 이미 큰 진전이라고 말씀하셨지만, CSS 코드가 많아지면 이 방법도 실용적이지 않다고 지적하셨습니다.
정의: 외부 CSS는 별도의 .css 확장자를 가진 파일에 CSS 코드를 작성하고, HTML 문서에서 <link> 태그를 사용하여 이 CSS 파일을 연결하는 방식입니다. 웹사이트의 모든 페이지에 일관된 스타일을 적용하고, 코드의 유지보수성과 재사용성을 높이는 데 가장 효과적인 방법입니다.
단계:
CSS 파일 생성: 강사님은 새로운 파일(style.css)을 만들고, 이 파일에 다음과 같은 CSS 코드를 작성하셨습니다.
h1 {
color: blue;
}
CSS 파일의 이름은 style.css 외에 다른 이름으로 지정해도 되지만, 일반적으로 style.css라는 이름을 많이 사용합니다.
HTML 파일에 CSS 파일 연결: HTML 파일의 <head> 태그 안에 <link> 태그를 사용하여 생성한 CSS 파일을 연결합니다.
<!DOCTYPE html>
<html>
<head>
<title>CSS 배우기</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>이 텍스트의 스타일을 바꾸고 싶다고 치죠, 파란색이요</h1>
</body>
</html>
<link> 태그: HTML 문서와 외부 리소스 간의 관계를 정의하는 태그입니다.rel 속성: 연결된 파일이 어떤 종류의 파일인지 명시합니다. CSS 파일의 경우 stylesheet라고 지정합니다.href 속성: 연결할 파일의 경로를 지정합니다. 위 예시에서는 현재 HTML 파일과 같은 폴더에 있는 style.css 파일을 연결합니다.장점:
단점:
결론: 강사님은 웹 페이지를 만들 때 외부 CSS를 사용하는 것을 강력하게 추천하셨습니다. 대부분의 웹 개발 프로젝트에서 외부 CSS는 필수적인 방법이며, 코드의 효율성과 유지보수성을 크게 향상시킵니다.
내부 CSS의 활용: 강사님은 작고 빠르게 무언가를 만들거나 모든 것을 하나의 파일로 관리하고 싶을 때 내부 CSS를 사용하는 것이 완전히 허용될 수 있다고 언급하셨습니다. 하지만 일반적으로는 외부 CSS를 사용하는 것이 더 좋은 방법입니다.
인라인 CSS의 재확인: 마지막으로 강사님은 style 속성을 사용하여 HTML 요소에 직접 스타일을 추가하는 인라인 CSS는 좋은 방법이 아니라고 다시 한번 강조하셨습니다.
다음 강의 예고:
이제 CSS를 사용하는 세 가지 방법에 대해 모두 알아보았습니다. 다음 강의에서는 텍스트 스타일링을 위한 다양한 CSS 속성들을 배우게 될 것이라고 강사님은 예고하셨습니다.
이처럼 강사님의 설명을 따라 CSS의 세 가지 사용법을 자세히 알아보았습니다. 외부 CSS를 사용하는 것이 웹 개발에서 가장 일반적이고 효율적인 방법이라는 것을 꼭 기억하시고, 앞으로 웹 페이지를 만들 때 적극적으로 활용해 보시기 바랍니다.
이번 강의에서는 CSS를 사용하여 웹 페이지의 텍스트를 다채롭게 꾸미는 6가지 핵심 속성에 대해 자세히 알아보겠습니다. 마치 워드 프로세서나 디자인 도구를 사용하는 것처럼, CSS를 통해 글꼴, 크기, 모양, 정렬 방식 등 텍스트의 다양한 측면을 정밀하게 제어할 수 있습니다.
지난 강의 요약 및 기본 개념 복습
지난 강의에서 우리는 CSS의 기본적인 구조와 작동 방식에 대해 간략하게 살펴보았습니다. 기억을 되살리기 위해 몇 가지 핵심 내용을 다시 한번 짚어보겠습니다.
.css 확장자)을 사용하는 것이 일반적입니다. 이렇게 하면 HTML 구조와 스타일을 분리하여 유지보수성과 재사용성을 높일 수 있습니다.h1은 모든 <h1> 요소를 선택합니다.{}로 묶인 선언 블록이 옵니다. 선언 블록 안에는 하나 이상의 선언(Declaration)이 포함됩니다.:으로 구분되며, 각 선언은 세미콜론 ;으로 끝납니다.예제:
다음은 기본적인 HTML 파일 (index.html)과 외부 CSS 파일 (styles.css)의 예시입니다.
index.html:
<!DOCTYPE html>
<html>
<head>
<title>CSS 텍스트 스타일링</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<h1 class="main-title">CSS 텍스트 스타일링 배우기</h1>
<p>CSS를 사용하여 텍스트를 아름답게 꾸며봅시다.</p>
</body>
</html>
styles.css:
.main-title {
color: blue; /* color 속성에 blue 값을 할당 */
}
위 예시에서 .main-title은 클래스 선택자이며, color는 속성, blue는 값입니다. 이 CSS 규칙은 index.html 파일의 <h1 class="main-title"> 요소의 텍스트 색상을 파란색으로 변경합니다.
이제 본격적으로 텍스트 스타일링 속성들을 하나씩 자세히 살펴보겠습니다.
1. font-size 속성: 텍스트 크기 조절
font-size 속성은 텍스트의 크기를 지정하는 데 사용됩니다. 이 속성은 다양한 유형의 값을 허용하지만, 가장 일반적으로 사용되는 것은 길이 단위입니다.
px (픽셀), em, rem, pt (포인트) 등 다양한 길이 단위를 사용하여 크기를 지정할 수 있습니다. 가장 기본적인 단위는 px이며, 화면의 실제 픽셀 수를 나타냅니다.예제:
다음 CSS 코드는 <h1> 요소의 글꼴 크기를 26픽셀로 설정합니다.
h1 {
font-size: 26px; /* 글꼴 크기를 26픽셀로 설정 */
}
index.html (수정):
<!DOCTYPE html>
<html>
<head>
<title>CSS 텍스트 스타일링</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<h1>CSS 텍스트 스타일링 배우기</h1>
<p>CSS를 사용하여 텍스트를 아름답게 꾸며봅시다.</p>
</body>
</html>
styles.css (수정):
h1 {
color: blue;
font-size: 26px;
}
위 코드를 실행하면 <h1> 요소의 텍스트가 26픽셀 크기로 표시됩니다.
2. font-family 속성: 글꼴 지정
font-family 속성은 텍스트에 적용할 글꼴을 지정하는 데 사용됩니다. 워드 프로세서나 구글 문서에서 글꼴을 선택하는 것과 유사합니다.
serif: 끝에 장식(세리프)이 있는 글꼴 (예: Times New Roman, 명조체)sans-serif: 끝에 장식이 없는 깔끔한 글꼴 (예: Arial, 돋움체)monospace: 모든 글자의 너비가 동일한 글꼴 (예: Courier New, Consolas)cursive: 손으로 쓴 듯한 흘림체 글꼴fantasy: 장식적인 효과가 있는 글꼴예제:
다음 CSS 코드는 <h1> 요소에 Arial 글꼴을 먼저 적용하고, Arial이 없는 경우 sans-serif 글꼴을 사용하도록 지정합니다.
h1 {
font-family: Arial, sans-serif; /* Arial이 없으면 sans-serif 글꼴 사용 */
}
styles.css (수정):
h1 {
color: blue;
font-size: 26px;
font-family: Arial, sans-serif;
}
3. text-transform 속성: 텍스트 변환
text-transform 속성은 텍스트의 대소문자를 변환하는 데 사용됩니다.
uppercase: 모든 글자를 대문자로 변환합니다.lowercase: 모든 글자를 소문자로 변환합니다.capitalize: 각 단어의 첫 글자를 대문자로 변환합니다.none: 변환을 적용하지 않습니다 (기본값).예제:
다음 CSS 코드는 <h2> 요소의 텍스트를 모두 대문자로 변환합니다.
index.html (수정):
<!DOCTYPE html>
<html>
<head>
<title>CSS 텍스트 스타일링</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<h1>CSS 텍스트 스타일링 배우기</h1>
<h2>텍스트 변환 예제</h2>
<p>CSS를 사용하여 텍스트를 아름답게 꾸며봅시다.</p>
</body>
</html>
styles.css (수정):
h1 {
color: blue;
font-size: 26px;
font-family: Arial, sans-serif;
}
h2 {
text-transform: uppercase; /* 텍스트를 모두 대문자로 변환 */
}
위 코드를 실행하면 <h2> 요소의 텍스트가 "텍스트 변환 예제"에서 "텍스트 변환 예제"로 모두 대문자로 표시됩니다.
4. font-style 속성: 글꼴 스타일 지정
font-style 속성은 글꼴의 스타일을 지정하는 데 사용됩니다.
normal: 일반적인 글꼴 스타일 (기본값).italic: 이탤릭체 스타일.oblique: 기울어진 스타일 (이탤릭체와 약간 다를 수 있음).예제:
다음 CSS 코드는 <p> 요소의 텍스트를 이탤릭체로 표시합니다.
styles.css (수정):
h1 {
color: blue;
font-size: 26px;
font-family: Arial, sans-serif;
}
h2 {
text-transform: uppercase;
}
p {
font-style: italic; /* 텍스트를 이탤릭체로 표시 */
}
위 코드를 실행하면 <p> 요소의 텍스트가 이탤릭체로 표시됩니다.
다양한 요소에 스타일 적용하기
이제 배운 속성들을 활용하여 다양한 HTML 요소에 스타일을 적용해 보겠습니다.
index.html (수정):
<!DOCTYPE html>
<html>
<head>
<title>CSS 텍스트 스타일링</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<h1 class="main-title">CSS 텍스트 스타일링 배우기</h1>
<h2 class="sub-title">다양한 텍스트 스타일 적용</h2>
<p class="body-text">CSS를 사용하여 웹 페이지의 텍스트를 <em class="emphasized">강조</em>하거나 <strong>중요하게</strong> 표시할 수 있습니다.</p>
<h3>목록 스타일</h3>
<ul>
<li>첫 번째 항목</li>
<li>두 번째 항목</li>
<li>세 번째 항목</li>
</ul>
<h4>텍스트 정렬</h4>
<p class="centered-text">이 텍스트는 가운데 정렬될 것입니다.</p>
</body>
</html>
styles.css (수정):
/* H1 요소 스타일 */
.main-title {
color: #333; /* 짙은 회색 */
font-size: 40px;
font-family: "Times New Roman", serif;
}
/* H2 요소 스타일 */
.sub-title {
font-size: 30px;
font-family: "Verdana", sans-serif;
text-transform: uppercase;
color: #555;
}
/* P 요소 스타일 */
.body-text {
font-size: 22px;
font-family: "Georgia", serif;
line-height: 1.6; /* 줄 간격 설정 */
}
/* EM 요소 스타일 (상속 확인) */
.emphasized {
color: orange;
}
/* H3 요소 스타일 */
h3 {
font-size: 28px;
font-family: Arial, sans-serif;
}
/* H4 요소 스타일 */
h4 {
font-size: 20px;
font-family: "Courier New", monospace;
text-transform: uppercase;
color: navy;
}
/* 가운데 정렬된 텍스트 스타일 */
.centered-text {
text-align: center; /* 텍스트 가운데 정렬 */
}
/* 목록 항목 스타일 */
ul li {
font-family: sans-serif;
font-size: 20px;
}
위 코드를 실행하면 각 HTML 요소에 정의된 CSS 스타일이 적용된 것을 확인할 수 있습니다. 특히 .body-text 클래스가 적용된 <p> 요소 내의 <em> 요소는 부모 요소의 font-family와 font-size를 상속받고, color 속성만 별도로 적용된 것을 볼 수 있습니다. 이것이 바로 상속(Inheritance)이라는 중요한 CSS 개념입니다.
5. line-height 속성: 줄 간격 조절
line-height 속성은 텍스트의 줄 간격을 설정하는 데 사용됩니다. 가독성을 높이는 데 중요한 역할을 합니다.
1.5는 글꼴 크기의 1.5배).px, em, rem 등의 단위로 절대적인 줄 간격을 지정합니다.normal: 브라우저의 기본 줄 간격 (일반적으로 1.0 ~ 1.2).예제:
위 styles.css에서 .body-text 클래스에 line-height: 1.6;을 추가하여 단락 텍스트의 줄 간격을 넓혔습니다.
6. text-align 속성: 텍스트 정렬
text-align 속성은 텍스트를 가로 방향으로 정렬하는 데 사용됩니다.
left: 왼쪽 정렬 (기본값).right: 오른쪽 정렬.center: 가운데 정렬.justify: 양쪽 맞춤 (텍스트 양쪽 끝을 늘려 공백을 분산).예제:
위 styles.css에서 .centered-text 클래스에 text-align: center;를 추가하여 해당 단락의 텍스트를 가운데 정렬했습니다.
정리
이번 강의에서는 CSS를 사용하여 텍스트를 스타일링하는 데 필수적인 6가지 속성 (font-size, font-family, text-transform, font-style, line-height, text-align)에 대해 자세히 알아보았습니다. 다양한 예제 코드를 통해 각 속성의 기능과 사용법을 익히셨기를 바랍니다.
이 외에도 CSS에는 텍스트를 꾸미는 다양한 속성들이 존재합니다. 앞으로의 강의에서는 글꼴 두께 조절 (font-weight), 텍스트 장식 (text-decoration), 그림자 효과 (text-shadow) 등 더욱 풍부한 텍스트 스타일링 기법들을 학습할 예정입니다.
궁금한 점이 있다면 언제든지 질문해주세요!
지난 강의에서 기본적인 CSS 선택자들을 배웠다면, 이번 시간에는 여러 선택자를 결합하여 더욱 정교하고 효율적인 스타일링을 구현하는 방법을 알아보겠습니다. 선택자를 효과적으로 결합하면 CSS 코드를 간결하게 유지하고, 유지보수성을 높이며, 특정 요소에만 정확하게 스타일을 적용할 수 있습니다.
1. 선택자 목록 (Selector List): 여러 요소에 동일한 스타일 적용
강의 내용에서 언급된 것처럼, 여러 HTML 요소에 동일한 CSS 속성을 적용해야 하는 경우가 많습니다. 이전에는 각 요소마다 개별적인 CSS 규칙을 작성해야 했지만, 선택자 목록을 사용하면 쉼표(,)로 구분하여 여러 선택자를 나열하고 한 번의 선언 블록으로 스타일을 적용할 수 있습니다.
예제:
이전 강의의 styles.css 코드를 살펴보면 <h1>, <h2>, <h3>, <h4>, <p>, <li> 요소에 모두 font-family: sans-serif; 속성이 적용된 것을 확인할 수 있습니다.
기존 방식:
h1 {
font-family: sans-serif;
}
h2 {
font-family: sans-serif;
}
h3 {
font-family: sans-serif;
}
h4 {
font-family: sans-serif;
}
p {
font-family: sans-serif;
}
li {
font-family: sans-serif;
}
선택자 목록 사용:
위 코드를 선택자 목록을 사용하여 다음과 같이 간결하게 만들 수 있습니다.
h1, h2, h3, h4, p, li {
font-family: sans-serif; /* 여러 요소에 한 번에 sans-serif 글꼴 적용 */
}
styles.css (수정):
/* 기본 글꼴 설정 (선택자 목록 사용) */
h1, h2, h3, h4, p, li {
font-family: sans-serif;
}
/* H1 요소 스타일 */
.main-title {
color: #333;
font-size: 40px;
font-family: "Times New Roman", serif; /* 개별 스타일로 덮어쓰기 */
}
/* H2 요소 스타일 */
.sub-title {
font-size: 30px;
font-family: "Verdana", sans-serif; /* 개별 스타일로 덮어쓰기 */
text-transform: uppercase;
color: #555;
}
/* P 요소 스타일 */
.body-text {
font-size: 22px;
font-family: "Georgia", serif; /* 개별 스타일로 덮어쓰기 */
line-height: 1.6;
}
/* EM 요소 스타일 */
.emphasized {
color: orange;
}
/* H3 요소 스타일 */
h3 {
font-size: 28px;
}
/* H4 요소 스타일 */
h4 {
font-size: 20px;
text-transform: uppercase;
color: navy;
}
/* 가운데 정렬된 텍스트 스타일 */
.centered-text {
text-align: center;
}
/* 목록 항목 스타일 */
ul li {
font-size: 20px;
}
위와 같이 선택자 목록을 사용하면 코드의 중복을 줄이고, 나중에 글꼴을 변경해야 할 경우 한 곳만 수정하면 되므로 유지보수성이 크게 향상됩니다.
2. 하위 선택자 (Descendant Selector): 특정 요소 내의 요소 선택
하위 선택자는 특정 요소의 내부에 있는 모든 하위 요소(자식, 손자 등)를 선택하는 데 사용됩니다. 선택자는 공백으로 구분하여 작성합니다.
구문:
부모선택자 하위선택자 {
/* 스타일 규칙 */
}
예제:
강의 내용에서는 <footer> 요소 내에 있는 <p> 요소의 글꼴 크기를 줄이는 예시를 보여줍니다. 먼저 index.html 파일에 <footer> 요소를 추가하고 단락을 넣어보겠습니다.
index.html (수정):
<!DOCTYPE html>
<html>
<head>
<title>CSS 텍스트 스타일링</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<h1 class="main-title">CSS 텍스트 스타일링 배우기</h1>
<h2 class="sub-title">다양한 텍스트 스타일 적용</h2>
<p class="body-text">CSS를 사용하여 웹 페이지의 텍스트를 <em class="emphasized">강조</em>하거나 <strong>중요하게</strong> 표시할 수 있습니다.</p>
<h3>목록 스타일</h3>
<ul>
<li>첫 번째 항목</li>
<li>두 번째 항목</li>
<li>세 번째 항목</li>
</ul>
<h4>텍스트 정렬</h4>
<p class="centered-text">이 텍스트는 가운데 정렬될 것입니다.</p>
<footer>
<p>Copyright © 2023. All rights reserved.</p>
</footer>
</body>
</html>
styles.css (수정):
/* 기본 글꼴 설정 */
h1, h2, h3, h4, p, li {
font-family: sans-serif;
}
/* H1 요소 스타일 */
.main-title {
color: #333;
font-size: 40px;
font-family: "Times New Roman", serif;
}
/* H2 요소 스타일 */
.sub-title {
font-size: 30px;
font-family: "Verdana", sans-serif;
text-transform: uppercase;
color: #555;
}
/* P 요소 스타일 */
.body-text {
font-size: 22px;
font-family: "Georgia", serif;
line-height: 1.6;
}
/* EM 요소 스타일 */
.emphasized {
color: orange;
}
/* H3 요소 스타일 */
h3 {
font-size: 28px;
}
/* H4 요소 스타일 */
h4 {
font-size: 20px;
text-transform: uppercase;
color: navy;
}
/* 가운데 정렬된 텍스트 스타일 */
.centered-text {
text-align: center;
}
/* 목록 항목 스타일 */
ul li {
font-size: 20px;
}
/* 푸터 내의 단락 스타일 (하위 선택자) */
footer p {
font-size: 16px; /* 푸터의 단락 글꼴 크기를 16픽셀로 줄임 */
}
이제 웹 페이지를 확인하면 푸터 부분의 "Copyright..." 텍스트가 다른 단락 텍스트보다 작은 16픽셀 크기로 표시되는 것을 확인할 수 있습니다. 이는 footer p 선택자가 <footer> 요소 내에 있는 모든 <p> 요소를 선택하여 스타일을 적용했기 때문입니다.
하위 선택자의 한계와 HTML 구조 의존성
강의 내용에서는 하위 선택자가 HTML 구조에 의존적이라는 점을 지적하며, 예상치 못한 결과를 초래할 수 있는 상황을 보여줍니다. <header> 요소 내의 <p> 요소에 이탤릭체 스타일을 적용하려고 했지만, 다른 <header> 요소 내의 <p> 요소까지 영향을 받는 경우가 발생합니다.
예제:
index.html (수정):
<!DOCTYPE html>
<html>
<head>
<title>CSS 텍스트 스타일링</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<header class="main-header">
<h1>CSS 텍스트 스타일링 배우기</h1>
<p>메인 헤더 설명</p>
</header>
<article>
<header>
<h2>기사 제목</h2>
<p>기사 헤더 설명 (이탤릭체 적용 목표)</p>
</header>
<p class="body-text">본문 내용...</p>
</article>
<header class="another-header">
<h2>또 다른 헤더</h2>
<p>예상치 않게 이탤릭체가 적용될 수 있는 단락</p>
</header>
<footer>
<p>Copyright © 2023. All rights reserved.</p>
</footer>
</body>
</html>
styles.css (수정):
/* 기본 글꼴 설정 */
h1, h2, h3, h4, p, li {
font-family: sans-serif;
}
/* H1 요소 스타일 */
.main-title {
color: #333;
font-size: 40px;
font-family: "Times New Roman", serif;
}
/* H2 요소 스타일 */
.sub-title {
font-size: 30px;
font-family: "Verdana", sans-serif;
text-transform: uppercase;
color: #555;
}
/* P 요소 스타일 */
.body-text {
font-size: 22px;
font-family: "Georgia", serif;
line-height: 1.6;
}
/* EM 요소 스타일 */
.emphasized {
color: orange;
}
/* H3 요소 스타일 */
h3 {
font-size: 28px;
}
/* H4 요소 스타일 */
h4 {
font-size: 20px;
text-transform: uppercase;
color: navy;
}
/* 가운데 정렬된 텍스트 스타일 */
.centered-text {
text-align: center;
}
/* 목록 항목 스타일 */
ul li {
font-size: 20px;
}
/* 푸터 내의 단락 스타일 */
footer p {
font-size: 16px;
}
/* 헤더 내의 단락 스타일 (의도치 않은 결과 발생 가능) */
header p {
font-style: italic; /* 모든 <header> 요소 내의 <p>에 이탤릭체 적용 */
}
위 코드에서 header p 선택자는 .main-header 안의 <p>, <article> 안의 <header> 안의 <p>, 그리고 .another-header 안의 <p>까지 모두 선택하여 이탤릭체 스타일을 적용합니다. 이는 우리가 <article> 내부의 <header>에 있는 단락에만 스타일을 적용하고 싶었지만, HTML 구조상 다른 <header> 요소에도 <p> 요소가 존재하기 때문에 발생하는 문제입니다.
중첩된 하위 선택자: 더욱 구체적인 타겟팅
이러한 문제를 해결하기 위해 중첩된 하위 선택자를 사용할 수 있습니다. 이는 하위 요소 안에 있는 특정 하위 요소를 더욱 구체적으로 지정하는 방식입니다.
예제:
<article> 요소 내부의 <header> 요소 안에 있는 <p> 요소에만 이탤릭체 스타일을 적용하려면 다음과 같이 중첩된 하위 선택자를 사용할 수 있습니다.
article header p {
font-style: italic; /* <article> > <header> > <p> 에만 이탤릭체 적용 */
}
styles.css (수정):
/* ... 이전 스타일 규칙 생략 ... */
/* 푸터 내의 단락 스타일 */
footer p {
font-size: 16px;
}
/* 기사 내부 헤더의 단락 스타일 (중첩된 하위 선택자) */
article header p {
font-style: italic; /* <article> 요소 안의 <header> 요소 안의 <p> 요소에만 적용 */
}
/* 일반적인 헤더 내의 단락 스타일 (선언 순서에 따라 적용될 수 있음) */
/* header p {
font-style: normal; /* 필요하다면 일반적인 헤더의 단락 스타일을 재정의 */
} */
이제 article header p 선택자는 <article> 요소 바로 아래에 있는 <header> 요소 내의 <p> 요소만을 정확하게 선택하여 이탤릭체 스타일을 적용합니다. .main-header와 .another-header 내의 <p> 요소에는 영향을 미치지 않습니다.
HTML 구조에 과도하게 의존하는 CSS의 단점
중첩된 하위 선택자를 사용하면 특정 상황에서 원하는 스타일을 정확하게 적용할 수 있지만, CSS 코드가 HTML 구조에 너무 깊이 의존하게 된다는 단점이 있습니다. HTML 구조가 변경될 경우 CSS 코드도 함께 수정해야 할 가능성이 높아지며, 코드의 유지보수성이 저하될 수 있습니다.
더 나은 선택 방법: 클래스(Class)와 ID(ID) 활용 (다음 강의 예고)
강의 내용의 마지막 부분에서 언급된 것처럼, HTML 요소에 클래스(Class)나 ID(ID) 속성을 부여하고 이를 CSS 선택자로 활용하는 것이 더욱 유연하고 유지보수가 용이한 스타일링 방법입니다. 클래스와 ID를 사용하면 HTML 구조에 덜 의존적이면서도 특정 요소를 정확하게 선택하여 스타일을 적용할 수 있습니다. 이 내용은 다음 강의에서 자세히 다룰 예정입니다.
이번 강의를 통해 선택자 목록과 하위 선택자를 사용하여 CSS 스타일링을 더욱 효율적이고 정교하게 만드는 방법을 이해하셨기를 바랍니다. 다음 강의에서는 클래스와 ID 선택자를 활용한 더욱 강력한 스타일링 기법을 배워보겠습니다.
지난 강의 말미에서 HTML 요소에 이름을 부여하여 CSS에서 특정 요소를 선택하는 방법에 대한 논의가 있었습니다. 이번 시간에는 바로 그 방법, ID(아이디)와 클래스(Class)를 사용하여 더욱 정밀하게 요소를 선택하고 스타일을 적용하는 방법을 자세히 알아보겠습니다.
1. ID 선택자: 고유한 요소 식별하기
지난 강의에서 특정 기사 헤더 내의 단락에만 이탤릭체 스타일을 적용하려고 했지만, HTML 구조에 의존적인 하위 선택자(article header p)를 사용하면서 다른 헤더 내의 단락에도 원치 않는 스타일이 적용되는 문제가 있었습니다.
이러한 문제를 해결하는 가장 효과적인 방법 중 하나는 HTML 요소에 ID라는 고유한 이름을 부여하는 것입니다. ID는 웹 페이지 내에서 단 하나의 요소에만 사용할 수 있는 특별한 속성입니다.
HTML에서 ID 사용:
ID 속성은 HTML 요소의 시작 태그 내에 id="고유한_이름" 형태로 추가합니다.
예제:
문제의 단락, 즉 기사 헤더 내의 설명 단락에 author라는 ID를 부여해 보겠습니다.
index.html (수정):
<!DOCTYPE html>
<html>
<head>
<title>CSS 텍스트 스타일링</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<header class="main-header">
<h1>CSS 텍스트 스타일링 배우기</h1>
<p>메인 헤더 설명</p>
</header>
<article>
<header>
<h2>기사 제목</h2>
<p id="author">기사 헤더 설명 (이탤릭체 적용 목표)</p>
</header>
<p class="body-text">본문 내용...</p>
</article>
<header class="another-header">
<h2>또 다른 헤더</h2>
<p>예상치 않게 이탤릭체가 적용될 수 있는 단락</p>
</header>
<footer>
<p id="copyright">Copyright © 2023. All rights reserved.</p>
</footer>
</body>
</html>
CSS에서 ID 선택자 사용:
CSS에서 ID를 사용하여 요소를 선택할 때는 해시 기호(#) 뒤에 해당 ID 이름을 붙입니다.
예제:
author ID를 가진 단락에 이탤릭체 스타일과 글꼴 크기 18픽셀을 적용해 보겠습니다.
styles.css (수정):
/* 기본 글꼴 설정 */
h1, h2, h3, h4, p, li {
font-family: sans-serif;
}
/* H1 요소 스타일 */
.main-title {
color: #333;
font-size: 40px;
font-family: "Times New Roman", serif;
}
/* H2 요소 스타일 */
.sub-title {
font-size: 30px;
font-family: "Verdana", sans-serif;
text-transform: uppercase;
color: #555;
}
/* P 요소 스타일 */
.body-text {
font-size: 22px;
font-family: "Georgia", serif;
line-height: 1.6;
}
/* EM 요소 스타일 */
.emphasized {
color: orange;
}
/* H3 요소 스타일 */
h3 {
font-size: 28px;
}
/* H4 요소 스타일 */
h4 {
font-size: 20px;
text-transform: uppercase;
color: navy;
}
/* 가운데 정렬된 텍스트 스타일 */
.centered-text {
text-align: center;
}
/* 목록 항목 스타일 */
ul li {
font-size: 20px;
}
/* 푸터 내의 단락 스타일 (ID 선택자로 변경) */
#copyright {
font-size: 16px;
}
/* 특정 작성자 단락 스타일 (ID 선택자) */
#author {
font-style: italic;
font-size: 18px;
}
/* 더 이상 필요 없는 하위 선택자 주석 처리 */
/* article header p {
font-style: italic;
} */
이제 웹 페이지를 확인하면 "기사 헤더 설명" 단락만 이탤릭체로 표시되고 글꼴 크기가 18픽셀로 줄어든 것을 확인할 수 있습니다. 다른 헤더 내의 단락에는 아무런 영향이 없습니다. 또한, 푸터의 저작권 텍스트에도 copyright라는 ID를 부여하고 ID 선택자를 사용하여 스타일을 적용했습니다.
ID 사용 시 주의사항: 고유성 유지
ID는 웹 페이지 내에서 단 한 번만 사용해야 합니다. 같은 ID를 여러 요소에 부여하는 것은 유효하지 않은 HTML이며, CSS가 예상대로 작동하지 않을 수 있습니다.
2. 클래스 선택자: 여러 요소에 공통 스타일 적용하기
ID가 고유한 요소를 식별하는 데 사용된다면, 클래스는 여러 요소에 공통된 스타일을 적용하기 위해 사용됩니다. 웹 페이지 내에서 동일한 클래스 이름을 여러 요소에 부여할 수 있습니다.
HTML에서 클래스 사용:
클래스 속성은 HTML 요소의 시작 태그 내에 class="클래스_이름" 형태로 추가합니다. 여러 개의 클래스를 동시에 적용하고 싶다면 공백으로 구분하여 나열할 수 있습니다.
예제:
본문 내용과 관련된 작성자 정보를 담은 여러 단락에 related-author라는 클래스를 부여해 보겠습니다.
index.html (수정):
<!DOCTYPE html>
<html>
<head>
<title>CSS 텍스트 스타일링</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<header class="main-header">
<h1>CSS 텍스트 스타일링 배우기</h1>
<p>메인 헤더 설명</p>
</header>
<article>
<header>
<h2>기사 제목</h2>
<p id="author">기사 헤더 설명 (이탤릭체 적용 목표)</p>
</header>
<p class="body-text related-author">본문 내용 1 (관련 저자 정보)</p>
<p class="body-text">본문 내용 2</p>
<p class="body-text related-author">본문 내용 3 (관련 저자 정보)</p>
<p class="body-text related-author">본문 내용 4 (관련 저자 정보)</p>
</article>
<header class="another-header">
<h2>또 다른 헤더</h2>
<p>예상치 않게 이탤릭체가 적용될 수 있는 단락</p>
</header>
<footer>
<p id="copyright">Copyright © 2023. All rights reserved.</p>
</footer>
</body>
</html>
CSS에서 클래스 선택자 사용:
CSS에서 클래스를 사용하여 요소를 선택할 때는 점 기호(.) 뒤에 해당 클래스 이름을 붙입니다.
예제:
related-author 클래스를 가진 모든 단락에 글꼴 크기 18픽셀과 글꼴 두께 bold 스타일을 적용해 보겠습니다.
styles.css (수정):
/* 기본 글꼴 설정 */
h1, h2, h3, h4, p, li {
font-family: sans-serif;
}
/* H1 요소 스타일 */
.main-title {
color: #333;
font-size: 40px;
font-family: "Times New Roman", serif;
}
/* H2 요소 스타일 */
.sub-title {
font-size: 30px;
font-family: "Verdana", sans-serif;
text-transform: uppercase;
color: #555;
}
/* P 요소 스타일 */
.body-text {
font-size: 22px;
font-family: "Georgia", serif;
line-height: 1.6;
}
/* EM 요소 스타일 */
.emphasized {
color: orange;
}
/* H3 요소 스타일 */
h3 {
font-size: 28px;
}
/* H4 요소 스타일 */
h4 {
font-size: 20px;
text-transform: uppercase;
color: navy;
}
/* 가운데 정렬된 텍스트 스타일 */
.centered-text {
text-align: center;
}
/* 목록 항목 스타일 */
ul li {
font-size: 20px;
}
/* 푸터 내의 단락 스타일 */
#copyright {
font-size: 16px;
}
/* 특정 작성자 단락 스타일 */
#author {
font-style: italic;
font-size: 18px;
}
/* 관련 저자 단락 스타일 (클래스 선택자) */
.related-author {
font-size: 18px;
font-weight: bold; /* 글꼴을 굵게 표시 */
}
이제 웹 페이지를 확인하면 "본문 내용 1", "본문 내용 3", "본문 내용 4" 단락의 글꼴 크기가 18픽셀로 줄어들고 굵게 표시된 것을 확인할 수 있습니다.
클래스 및 ID 이름 규칙:
CSS에서 클래스 및 ID 이름을 작성할 때는 다음과 같은 규칙을 따르는 것이 일반적입니다.
-), 밑줄(_)을 사용할 수 있습니다.related-author, main-header). 밑줄도 유효하지만 하이픈이 더 널리 사용됩니다.3. CSS Specificity (간단히 언급)
강의 내용에서 여러 CSS 규칙이 동일한 요소에 적용될 때 어떤 규칙이 우선 적용되는지에 대한 의문이 잠시 언급되었습니다. 이는 CSS의 Specificity(명시도)라는 중요한 개념과 관련이 있습니다. 간단히 말해, 더 구체적인 선택자가 덜 구체적인 선택자보다 우선순위를 갖습니다. ID 선택자는 클래스 선택자보다 명시도가 높고, 클래스 선택자는 요소 선택자보다 명시도가 높습니다. 이 내용은 추후 강의에서 더 자세히 다룰 예정입니다.
4. 실습 과제: 클래스를 이용한 목록 스타일 변경
강의에서 제시된 실습 과제는 특정 순서 없는 목록(<ul>)의 글머리 기호(bullet point)를 제거하는 것입니다. 이를 위해 해당 <ul> 요소에 클래스를 부여하고 CSS에서 해당 클래스를 선택하여 list-style-type 속성을 none으로 설정해야 합니다.
index.html (수정):
<!DOCTYPE html>
<html>
<head>
<title>CSS 텍스트 스타일링</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<header class="main-header">
<h1>CSS 텍스트 스타일링 배우기</h1>
<p>메인 헤더 설명</p>
</header>
<article>
<header>
<h2>기사 제목</h2>
<p id="author">기사 헤더 설명 (이탤릭체 적용 목표)</p>
</header>
<p class="body-text related-author">본문 내용 1 (관련 저자 정보)</p>
<p class="body-text">본문 내용 2</p>
<p class="body-text related-author">본문 내용 3 (관련 저자 정보)</p>
<p class="body-text related-author">본문 내용 4 (관련 저자 정보)</p>
</article>
<header class="another-header">
<h2>또 다른 헤더</h2>
<p>예상치 않게 이탤릭체가 적용될 수 있는 단락</p>
</header>
<ul class="related">
<li>관련 포스트 1</li>
<li>관련 포스트 2</li>
<li>관련 포스트 3</li>
</ul>
<footer>
<p id="copyright">Copyright © 2023. All rights reserved.</p>
</footer>
</body>
</html>
styles.css (수정):
/* ... 이전 스타일 규칙 생략 ... */
/* 푸터 내의 단락 스타일 */
#copyright {
font-size: 16px;
}
/* 특정 작성자 단락 스타일 */
#author {
font-style: italic;
font-size: 18px;
}
/* 관련 저자 단락 스타일 */
.related-author {
font-size: 18px;
font-weight: bold;
}
/* 관련 포스트 목록 스타일 (클래스 선택자) */
.related {
list-style-type: none; /* 글머리 기호 제거 */
}
위와 같이 related 클래스를 <ul> 요소에 추가하고 CSS에서 .related 선택자를 사용하여 list-style-type: none; 속성을 적용하면 해당 목록의 글머리 기호가 사라집니다.
5. ID 대신 클래스를 사용하는 이유 (실무적인 조언)
강의에서는 특정 목록 요소가 웹 페이지에 단 하나만 존재하더라도 ID 대신 클래스를 사용하는 것이 더 나은 실무적인 접근 방식이라고 설명합니다. 그 이유는 다음과 같습니다.
물론 ID가 특정 요소를 고유하게 식별해야 하는 경우 (예: JavaScript에서 특정 요소를 선택해야 하는 경우)에는 유용하게 사용될 수 있습니다. 하지만 스타일링만을 목적으로 할 때는 클래스를 사용하는 것이 더 일반적이고 권장되는 방법입니다.
결론
이번 강의에서는 CSS에서 요소를 선택하는 강력한 방법인 ID와 클래스에 대해 자세히 알아보았습니다. ID는 웹 페이지 내에서 고유한 요소를 식별하는 데 사용되며 해시 기호(#)로 선택하고, 클래스는 여러 요소에 공통된 스타일을 적용하는 데 사용되며 점 기호(.)로 선택합니다. 실무에서는 코드의 유연성과 확장성을 위해 ID보다는 클래스를 더 자주 사용하는 것이 좋습니다.
이제 ID와 클래스를 사용하여 웹 페이지의 특정 요소들을 원하는 대로 스타일링할 수 있게 되었습니다. 다음 강의에서는 CSS에서 색상을 다루는 방법에 대해 알아보겠습니다.
잘 돌아오셨습니다! 지난 시간에는 CSS에서 ID와 클래스를 사용하여 특정 요소를 선택하고 스타일을 적용하는 방법을 배웠습니다. 이번 시간에는 지난 시간에 이어 CSS에서 색상을 다루는 방법에 대해 아주 자세히 알아보겠습니다. 웹 페이지를 시각적으로 매력적이고 정보 전달에 효과적으로 만들기 위해 색상 활용은 매우 중요한 요소입니다.
색상 표현 방식 이해: RGB 모델
CSS로 색상을 다루기 전에 컴퓨터가 색을 어떻게 표현하는지에 대한 기본적인 이해가 필요합니다. 가장 널리 사용되는 색상 모델은 RGB 모델입니다. RGB는 Red(빨강), Green(초록), Blue(파랑) 세 가지 기본 색상을 조합하여 모든 색상을 표현하는 방식입니다.
마치 미술 시간에 물감을 섞어 다양한 색을 만들듯이, RGB 모델에서는 각 기본 색상의 세기를 조절하여 원하는 색을 얻습니다. 각 기본 색상의 세기는 0부터 255까지의 정수 값으로 표현됩니다. 0은 해당 색상이 전혀 없음을 의미하고, 255는 해당 색상이 최대 세기로 있음을 의미합니다.
세 가지 기본 색상의 값을 조합하면 총 256 x 256 x 256 = 16,777,216가지의 서로 다른 색상을 표현할 수 있습니다. 이는 우리가 흔히 "트루 컬러"라고 부르는 색상 표현 방식입니다.
RGB 모델 예시:
CSS에서 색상 표현하기
CSS에서는 RGB 모델을 기반으로 다양한 방법으로 색상을 표현할 수 있습니다. 가장 대표적인 방법은 다음과 같습니다.
1. RGB 표기법:
rgb() 함수를 사용하여 빨강, 초록, 파랑 채널의 값을 쉼표로 구분하여 지정합니다. 각 값은 0부터 255 사이의 정수 또는 0%부터 100% 사이의 백분율로 표현할 수 있습니다.
예제:
rgb(0, 255, 255) 또는 rgb(0%, 100%, 100%)rgb(244, 179, 63)2. RGBA 표기법:
rgba() 함수는 RGB 표기법에 Alpha(투명도) 값을 추가한 것입니다. Alpha 값은 0부터 1 사이의 숫자 또는 0%부터 100% 사이의 백분율로 표현하며, 0은 완전 투명, 1은 완전 불투명을 의미합니다.
예제:
rgba(0, 255, 255, 0.5) 또는 rgba(0%, 100%, 100%, 50%)3. 16진법 표기법 (Hexadecimal Notation):
16진법 표기법은 빨강, 초록, 파랑 채널의 값을 16진수로 표현하는 방식입니다. # 기호 뒤에 여섯 자리의 16진수 코드를 사용하여 색상을 나타냅니다. 각 두 자리의 16진수는 각각 빨강, 초록, 파랑 채널의 값을 나타내며, 00부터 FF까지의 범위를 가집니다. FF는 10진수의 255와 같습니다.
예제:
#00FFFF#F4B33F16진법 표기법 속기 (Shorthand):
각 색상 채널의 값이 동일한 두 개의 16진수로 이루어져 있다면 세 자리의 속기 표기법을 사용할 수 있습니다. 예를 들어 #00FFFF는 #0FF로 줄여 쓸 수 있습니다.
실무에서의 색상 표현:
실무에서는 주로 16진법 표기법을 사용하여 색상을 지정하는 경우가 많습니다. 투명도를 조절해야 할 경우에는 RGBA 표기법을 사용합니다.
회색 (Grayscale) 표현:
RGB 모델에서 빨강, 초록, 파랑 세 가지 채널의 값이 모두 같으면 회색 계열의 색상이 됩니다. 모든 값이 0이면 검은색, 모든 값이 255이면 흰색이 됩니다. 그 사이의 값들은 다양한 밝기의 회색을 나타냅니다. 16진법 표기법에서는 각 쌍의 16진수가 동일한 경우 (예: #444444 또는 속기로 #444) 회색임을 쉽게 알 수 있습니다.
CSS 색상 관련 속성
이제 CSS에서 색상을 실제로 사용하는 방법을 알아보겠습니다. 가장 기본적인 색상 관련 속성은 다음과 같습니다.
1. color 속성: 텍스트 색상 지정
color 속성은 요소의 텍스트 색상을 지정하는 데 사용됩니다.
예제:
지난 코드에서 <h1>, <h2>, <h3> 요소의 텍스트 색상을 특정 파란색(#1098AD)으로 변경해 보겠습니다.
styles.css (수정):
/* 기본 글꼴 설정 */
h1, h2, h3, h4, p, li {
font-family: sans-serif;
color: #444; /* 기본 텍스트 색상을 회색으로 설정 */
}
/* H1, H2, H3 요소 스타일 (선택자 목록 사용) */
h1, h2, h3 {
color: #1098AD; /* 텍스트 색상을 파란색으로 변경 */
}
/* H1 요소 스타일 */
.main-title {
font-size: 40px;
font-family: "Times New Roman", serif;
}
/* H2 요소 스타일 */
.sub-title {
font-size: 30px;
font-family: "Verdana", sans-serif;
text-transform: uppercase;
color: #555;
}
/* P 요소 스타일 */
.body-text {
font-size: 22px;
font-family: "Georgia", serif;
line-height: 1.6;
}
/* EM 요소 스타일 */
.emphasized {
color: orange;
}
/* H4 요소 스타일 */
h4 {
font-size: 20px;
text-transform: uppercase;
color: navy;
}
/* 가운데 정렬된 텍스트 스타일 */
.centered-text {
text-align: center;
}
/* 목록 항목 스타일 */
ul li {
font-size: 20px;
}
/* 푸터 내의 단락 스타일 */
#copyright {
font-size: 16px;
}
/* 특정 작성자 단락 스타일 */
#author {
font-style: italic;
font-size: 18px;
}
/* 관련 저자 단락 스타일 */
.related-author {
font-size: 18px;
font-weight: bold;
}
/* 관련 포스트 목록 스타일 */
.related {
list-style-type: none;
border-top: 5px solid #1098AD; /* 상단 테두리 추가 */
border-bottom: 5px solid #1098AD; /* 하단 테두리 추가 */
padding: 10px 0; /* 테두리와 내용 사이 간격 추가 */
}
위 코드에서 h1, h2, h3 선택자 목록을 사용하여 세 개의 제목 요소에 동일한 파란색 텍스트 색상을 적용했습니다. 또한, 모든 텍스트의 기본 색상을 회색(#444)으로 설정했습니다.
VS Code 색상 선택기 활용:
VS Code와 같은 현대적인 코드 편집기는 편리한 색상 선택 기능을 제공합니다. CSS 파일에서 색상 값을 입력하는 부분에 마우스 커서를 올리면 작은 색상 미리보기 상자가 나타나고, 이를 클릭하면 시각적인 색상 선택기를 사용할 수 있습니다. 이 선택기를 통해 원하는 색상을 쉽게 선택하고, RGB, RGBA, 16진법 등 다양한 형식으로 색상 코드를 자동으로 생성할 수 있습니다. 또한, 투명도(알파 값)를 조절하는 슬라이더도 제공됩니다.
2. background-color 속성: 배경 색상 지정
background-color 속성은 요소의 배경 색상을 지정하는 데 사용됩니다.
예제:
.main-header 클래스를 가진 헤더의 배경 색상을 밝은 회색(#F7F7F7)으로 설정하여 다른 콘텐츠와 구분해 보겠습니다.
styles.css (수정):
/* ... 이전 스타일 규칙 ... */
/* 메인 헤더 배경색 설정 */
.main-header {
background-color: #F7F7F7; /* 밝은 회색 배경색 */
padding: 20px; /* 배경색 영역 확보를 위한 패딩 추가 */
}
/* ... 나머지 스타일 규칙 ... */
이제 .main-header를 가진 <header> 요소의 배경이 밝은 회색으로 표시됩니다.
3. border 속성: 테두리 스타일 지정
border 속성은 요소 주변에 테두리를 추가하는 데 사용됩니다. border는 단축 속성(shorthand property)으로, 테두리의 두께 (border-width), 스타일 (border-style), 색상 (border-color)을 한 번에 지정할 수 있습니다.
구문:
border: <두께> <스타일> <색상>;
테두리 스타일 값: solid (실선), dotted (점선), dashed (파선), double (이중선) 등 다양한 스타일을 사용할 수 있습니다.
예제:
.related 클래스를 가진 목록의 위쪽과 아래쪽에 파란색(#1098AD) 실선 테두리를 추가해 보겠습니다.
styles.css (수정):
/* ... 이전 스타일 규칙 ... */
/* 관련 포스트 목록 스타일 */
.related {
list-style-type: none;
border-top: 5px solid #1098AD; /* 상단에 5픽셀 두께의 파란색 실선 테두리 */
border-bottom: 5px solid #1098AD; /* 하단에 5픽셀 두께의 파란색 실선 테두리 */
padding: 10px 0;
}
/* ... 나머지 스타일 규칙 ... */
위 코드에서는 border-top과 border-bottom 속성을 개별적으로 사용하여 위쪽과 아래쪽 테두리만 스타일링했습니다. border 속성 하나로 모든 면의 테두리를 동시에 설정할 수도 있습니다.
예제 (모든 면에 테두리):
.related {
list-style-type: none;
border: 5px solid #1098AD; /* 모든 면에 5픽셀 두께의 파란색 실선 테두리 */
padding: 10px; /* 내용과 테두리 사이 간격 추가 */
}
미리 정의된 색상 이름:
CSS는 blue, red, green, black, white 등과 같은 미리 정의된 색상 이름을 제공하기도 합니다. 간단한 색상을 사용할 때는 이러한 이름을 직접 사용할 수도 있습니다.
예제:
전체 웹 페이지의 배경색을 파란색으로 설정해 보겠습니다.
styles.css (임시 수정 - 실습 후 주석 처리 권장):
body {
background-color: blue; /* 웹 페이지 전체 배경색을 파란색으로 설정 */
}
주의: 위 코드는 웹 페이지 전체의 배경색을 파란색으로 변경하므로, 실습 후에는 주석 처리하거나 원래대로 되돌리는 것을 권장합니다.
실습 과제:
이번 시간에 배운 color, background-color, border 속성을 활용하여 다양한 HTML 요소에 스타일을 적용해 보세요. 예를 들어, 제목의 텍스트 색상을 변경하거나, 목록 항목에 테두리를 추가하거나, 특정 영역의 배경 색상을 변경해 볼 수 있습니다. VS Code의 색상 선택 기능을 적극적으로 활용하여 다양한 색상을 실험해 보는 것도 좋은 연습이 될 것입니다.
다음 강의 예고:
다음 강의에서는 CSS에서 색상을 더욱 심도 있게 다루는 방법과 함께, CSS 스타일을 적용하는 우선순위 규칙인 Specificity(명시도)에 대해 자세히 알아보겠습니다.
이번 강의를 통해 CSS에서 색상을 자유롭게 활용하는 기본적인 방법을 익히셨기를 바랍니다. 궁금한 점이 있다면 언제든지 질문해주세요!
잘 돌아오셨습니다! 지난 시간에는 CSS에서 ID와 클래스를 사용하여 특정 요소를 선택하고 스타일을 적용하는 방법을 자세히 배웠습니다. 이번 시간에는 의사 클래스(Pseudo-class)라는 강력한 CSS 기능을 통해 더욱 다양한 방식으로 요소를 선택하고 스타일을 지정하는 방법을 아주 상세하게 알아보겠습니다. 의사 클래스는 마치 요소의 특별한 상태나 위치에 이름을 붙여서 선택하는 것과 같습니다.
의사 클래스란 무엇일까요?
의사 클래스는 HTML 문서 구조 내에서의 요소의 특정 상태나 위치를 기반으로 요소를 선택하는 데 사용되는 특별한 키워드입니다. 일반적인 선택자가 요소의 종류, ID, 클래스 등의 속성을 기반으로 요소를 선택하는 반면, 의사 클래스는 요소 자체의 속성이 아닌 상태 변화나 문서 구조 내에서의 위치와 같은 동적인 특징을 활용하여 요소를 선택합니다.
의사 클래스는 콜론(:)으로 시작하며, 선택자 뒤에 붙여서 사용합니다.
예제 HTML 구조 (지난 강의에서 사용한 구조를 기반으로 일부 수정):
<!DOCTYPE html>
<html>
<head>
<title>CSS 텍스트 스타일링</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<header class="main-header">
<h1>CSS 텍스트 스타일링 배우기</h1>
<p>메인 헤더 설명</p>
</header>
<article>
<header>
<h2>기사 제목</h2>
<p id="author">기사 헤더 설명 (이탤릭체 적용 목표)</p>
</header>
<p class="body-text related-author">본문 내용 1 (관련 저자 정보)</p>
<p class="body-text">본문 내용 2</p>
<p class="body-text related-author">본문 내용 3 (관련 저자 정보)</p>
<p class="body-text related-author">본문 내용 4 (관련 저자 정보)</p>
</article>
<header class="another-header">
<h2>또 다른 헤더</h2>
<p>예상치 않게 이탤릭체가 적용될 수 있는 단락</p>
</header>
<ul class="related">
<li>관련 포스트 1</li>
<li>관련 포스트 2</li>
<li>관련 포스트 3</li>
</ul>
<ol>
<li>첫 번째 순서</li>
<li>두 번째 순서</li>
<li>세 번째 순서</li>
</ol>
<footer>
<p id="copyright">Copyright © 2023. All rights reserved.</p>
</footer>
</body>
</html>
1. :first-child 의사 클래스: 첫 번째 자식 요소 선택
:first-child 의사 클래스는 특정 부모 요소의 첫 번째 자식 요소를 선택합니다.
예제:
순서 없는 목록(<ul>)과 순서 있는 목록(ol)에서 각각 첫 번째 목록 항목(<li>)의 텍스트를 굵게 만들어 보겠습니다.
styles.css (수정):
/* ... 이전 스타일 규칙 ... */
/* 목록 스타일 */
ul.related li:first-child, ol li:first-child {
font-weight: bold; /* 첫 번째 목록 항목을 굵게 표시 */
}
/* ... 나머지 스타일 규칙 ... */
위 코드에서 ul.related li:first-child는 related 클래스를 가진 <ul> 요소의 첫 번째 <li> 요소를 선택하고, ol li:first-child는 모든 <ol> 요소의 첫 번째 <li> 요소를 선택합니다. 결과적으로 각 목록의 첫 번째 항목 텍스트가 굵게 표시됩니다.
2. :last-child 의사 클래스: 마지막 자식 요소 선택
:last-child 의사 클래스는 특정 부모 요소의 마지막 자식 요소를 선택합니다.
예제:
이번에는 순서 없는 목록과 순서 있는 목록에서 각각 마지막 목록 항목의 텍스트를 이탤릭체로 만들어 보겠습니다.
styles.css (수정):
/* ... 이전 스타일 규칙 ... */
/* 목록 스타일 */
ul.related li:first-child, ol li:first-child {
font-weight: bold;
}
ul.related li:last-child, ol li:last-child {
font-style: italic; /* 마지막 목록 항목을 이탤릭체로 표시 */
}
/* ... 나머지 스타일 규칙 ... */
이제 각 목록의 마지막 항목 텍스트가 이탤릭체로 표시됩니다.
3. :nth-child(n) 의사 클래스: 특정 위치의 자식 요소 선택
:nth-child(n) 의사 클래스는 부모 요소 내에서 특정 위치에 있는 자식 요소를 선택합니다. n에는 다음과 같은 값을 사용할 수 있습니다.
2는 두 번째 자식 요소).odd: 홀수 번째 자식 요소를 모두 선택합니다 (1, 3, 5...).even: 짝수 번째 자식 요소를 모두 선택합니다 (2, 4, 6...).an+b 형태의 수식을 사용하여 규칙적인 패턴의 자식 요소를 선택할 수 있습니다.예제:
ul.related li:nth-child(2), ol li:nth-child(2) {
color: red; /* 두 번째 목록 항목 텍스트를 빨간색으로 */
}
ul.related li:nth-child(3), ol li:nth-child(3) {
color: blue; /* 세 번째 목록 항목 텍스트를 파란색으로 */
}
ul.related li:nth-child(odd), ol li:nth-child(odd) {
background-color: #f0f0f0; /* 홀수 번째 목록 항목 배경색을 연한 회색으로 */
}
ul.related li:nth-child(even), ol li:nth-child(even) {
color: green; /* 짝수 번째 목록 항목 텍스트를 녹색으로 */
}
:nth-child 의사 클래스는 테이블의 행에 번갈아 가며 배경색을 적용하는 등 다양한 상황에서 유용하게 사용될 수 있습니다.
4. :first-child 의사 클래스에 대한 흔한 오해
강의 내용에서 중요한 점은 :first-child 의사 클래스가 특정 부모 요소의 첫 번째 자식 요소를 선택한다는 것입니다. 많은 사람들이 article p:first-child와 같은 선택자를 보면 <article> 요소 안의 첫 번째 <p> 요소를 선택한다고 생각하지만, 이는 오해입니다.
:first-child는 선택자가 지정한 요소(p)가 해당 부모 요소(article)의 첫 번째 자식이어야만 선택합니다. 만약 <article> 요소의 첫 번째 자식이 <p> 요소가 아니라 <h2> 요소와 같은 다른 요소라면 article p:first-child는 아무것도 선택하지 않습니다.
예제:
다음 HTML 구조를 살펴보겠습니다.
<article>
<h2>기사 제목</h2>
<p>첫 번째 단락</p>
<p>두 번째 단락</p>
</article>
이 경우 article p:first-child는 "첫 번째 단락"을 선택하지 않습니다. 왜냐하면 <article> 요소의 첫 번째 자식은 <h2> 요소이기 때문입니다. <p> 요소는 두 번째 자식입니다.
만약 HTML 구조가 다음과 같다면:
<article>
<p>첫 번째 단락</p>
<h2>기사 제목</h2>
<p>두 번째 단락</p>
</article>
이 경우에는 article p:first-child가 "첫 번째 단락"을 선택합니다. 왜냐하면 <p> 요소가 <article> 요소의 첫 번째 자식이기 때문입니다.
5. :last-child 의사 클래스에 대한 이해
:last-child 의사 클래스도 :first-child와 마찬가지로 특정 부모 요소의 마지막 자식 요소를 선택합니다.
예제:
다음 HTML 구조에서 마지막 단락에 빨간색 텍스트 스타일을 적용해 보겠습니다.
<article>
<h2>기사 제목</h2>
<p>첫 번째 단락</p>
<p>마지막 단락</p>
</article>
styles.css (수정):
article p:last-child {
color: red; /* <article> 요소의 마지막 <p> 요소 텍스트를 빨간색으로 */
}
위 코드에서 :last-child는 <article> 요소의 마지막 자식 요소가 <p> 요소인지 확인하고, 맞다면 해당 <p> 요소의 텍스트 색상을 빨간색으로 변경합니다.
핵심 정리: 의사 클래스의 작동 방식
:first-child, :last-child, :nth-child와 같은 구조적 의사 클래스는 부모 요소 내에서 특정 조건을 만족하는 자식 요소를 선택합니다. 따라서 부모 요소 내에 다양한 종류의 자식 요소가 혼합되어 있는 경우에는 예상과 다르게 작동할 수 있습니다. 이러한 의사 클래스는 주로 모든 자식 요소가 동일한 유형인 목록(<ul>, <ol>)과 같은 구조에서 효과적으로 사용됩니다.
다음 강의 예고
이번 시간에는 구조적 의사 클래스에 대해 자세히 알아보았습니다. 다음 강의에서는 하이퍼링크(<a>) 요소의 상태에 따라 스타일을 변경하는 의사 클래스와 같이, 요소의 상태나 사용자와의 상호작용에 따라 스타일을 적용하는 다른 유형의 의사 클래스에 대해 학습하겠습니다.
의사 클래스는 CSS를 더욱 강력하고 유연하게 만들어주는 핵심 기능 중 하나입니다. 다양한 의사 클래스를 익히고 활용하여 웹 페이지의 사용자 경험을 향상시키는 데 도움이 되기를 바랍니다. 궁금한 점이 있다면 언제든지 질문해주세요!
잘 돌아오셨습니다! 지난 시간에는 CSS의 강력한 기능 중 하나인 의사 클래스를 사용하여 문서 구조 내에서의 요소 위치에 따라 스타일을 지정하는 방법을 배웠습니다. 이번 시간에는 의사 클래스를 활용하여 웹 페이지에서 매우 중요한 역할을 하는 하이퍼링크(<a> 요소)를 다양한 상태에 따라 스타일링하는 방법을 아주 자세히 알아보겠습니다.
1. 이전 스타일 수정: 원치 않는 빨간 텍스트 제거
강의를 시작하기 전에 지난 시간 실습에서 의도치 않게 텍스트가 빨간색으로 표시될 수 있는 부분을 수정하겠습니다. 지난 시간에는 :first-child 의사 클래스의 작동 방식에 대한 오해를 설명하기 위해 특정 코드를 작성했었습니다. 하이퍼링크 스타일링에 집중하기 위해 해당 부분을 원래대로 돌려놓거나 주석 처리하겠습니다.
styles.css (수정):
/* ... 이전 스타일 규칙 ... */
/* ul.related li:first-child, ol li:first-child {
font-weight: bold;
} */ /* 첫 번째 자식 스타일 (원래대로 또는 주석 처리) */
/* ... 나머지 스타일 규칙 ... */
위 코드에서 첫 번째 자식 요소에 굵은 글꼴 스타일을 적용했던 부분을 주석 처리하여 더 이상 적용되지 않도록 했습니다.
2. 하이퍼링크 스타일링 시작
이제 본격적으로 하이퍼링크 스타일링을 시작해 보겠습니다. 먼저 HTML 문서에 하이퍼링크를 추가해야 합니다.
index.html (수정):
<!DOCTYPE html>
<html>
<head>
<title>CSS 텍스트 스타일링</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<header class="main-header">
<h1>CSS 텍스트 스타일링 배우기</h1>
<p>메인 헤더 설명</p>
</header>
<article>
<header>
<h2>기사 제목</h2>
<p id="author">기사 헤더 설명 (이탤릭체 적용 목표)</p>
</header>
<p class="body-text related-author">본문 내용 1 (관련 저자 정보)</p>
<p class="body-text">본문 내용 2 <a href="#">내부 링크</a></p>
<p class="body-text related-author">본문 내용 3 (관련 저자 정보)</p>
<p class="body-text related-author">본문 내용 4 (관련 저자 정보)</p>
</article>
<header class="another-header">
<h2>또 다른 헤더</h2>
<p>예상치 않게 이탤릭체가 적용될 수 있는 단락</p>
</header>
<ul class="related">
<li><a href="#">관련 포스트 1</a></li>
<li><a href="#">관련 포스트 2</a></li>
<li><a href="#">관련 포스트 3</a></li>
</ul>
<ol>
<li>첫 번째 순서</li>
<li>두 번째 순서</li>
<li>세 번째 순서</li>
</ol>
<footer>
<p id="copyright">Copyright © 2023. All rights reserved.</p>
</footer>
</body>
</html>
위 HTML 코드에서 본문 내용과 관련 포스트 목록에 몇 개의 하이퍼링크(<a> 요소)를 추가했습니다. 이제 이 링크들을 다양한 의사 클래스를 사용하여 스타일링해 보겠습니다.
3. 기본적인 하이퍼링크 스타일링 (좋은 방법은 아님)
가장 간단한 방법으로 모든 앵커 요소(<a>)를 선택하여 스타일을 적용할 수 있습니다.
styles.css (수정 - 권장하지 않음):
/* ... 이전 스타일 규칙 ... */
/* 링크 스타일 */
a {
color: #1098AD; /* 모든 링크 텍스트 색상을 파란색으로 */
}
/* ... 나머지 스타일 규칙 ... */
위 코드를 적용하면 페이지 내의 모든 링크 텍스트가 파란색으로 표시됩니다. 하지만 단순히 요소 선택자(a)만을 사용하여 스타일링하는 것은 좋은 방법이 아닙니다. 왜냐하면 하이퍼링크는 여러 가지 상태를 가지며, 각 상태에 따라 다른 스타일을 적용하는 것이 일반적이기 때문입니다.
4. :link 의사 클래스: 방문하지 않은 링크 스타일링
:link 의사 클래스는 아직 사용자가 방문하지 않은 하이퍼링크를 선택합니다.
styles.css (수정):
/* ... 이전 스타일 규칙 ... */
/* 링크 스타일 */
a:link {
color: #1098AD; /* 방문하지 않은 링크 텍스트 색상을 파란색으로 */
}
/* ... 나머지 스타일 규칙 ... */
:link 의사 클래스를 사용하면 href 속성을 가진 실제 하이퍼링크만을 대상으로 스타일을 적용할 수 있습니다. href 속성이 없는 <a> 요소는 링크가 아니므로 이 스타일이 적용되지 않습니다.
5. text-decoration 속성: 밑줄 제거
웹 페이지의 하이퍼링크는 기본적으로 텍스트에 밑줄이 표시됩니다. 많은 경우 디자인적인 이유로 이 밑줄을 제거하고 싶을 때가 있습니다. text-decoration 속성을 사용하여 밑줄을 제거할 수 있습니다.
styles.css (수정):
/* ... 이전 스타일 규칙 ... */
/* 링크 스타일 */
a:link {
color: #1098AD;
text-decoration: none; /* 방문하지 않은 링크의 밑줄 제거 */
}
/* ... 나머지 스타일 규칙 ... */
text-decoration: none;을 설정하면 하이퍼링크 텍스트에서 밑줄이 사라집니다.
6. :visited 의사 클래스: 방문한 링크 스타일링
:visited 의사 클래스는 사용자가 이미 방문한 하이퍼링크를 선택합니다. 이를 통해 사용자는 자신이 이전에 어떤 링크를 클릭했는지 시각적으로 구별할 수 있습니다.
styles.css (수정):
/* ... 이전 스타일 규칙 ... */
/* 링크 스타일 */
a:link {
color: #1098AD;
text-decoration: none;
}
a:visited {
color: lightgray; /* 방문한 링크 텍스트 색상을 밝은 회색으로 */
}
/* ... 나머지 스타일 규칙 ... */
위 코드를 적용하면 사용자가 이미 클릭하여 방문한 링크의 텍스트 색상이 밝은 회색으로 표시됩니다. 하지만 실제 웹 디자인에서는 방문한 링크와 방문하지 않은 링크를 동일한 색상으로 유지하는 경우가 많습니다.
7. :hover 의사 클래스: 마우스 오버 시 스타일링
:hover 의사 클래스는 사용자가 마우스 커서를 해당 요소 위에 올려놓았을 때 요소를 선택합니다. 이를 통해 사용자와의 상호작용에 대한 시각적인 피드백을 제공할 수 있습니다.
styles.css (수정):
/* ... 이전 스타일 규칙 ... */
/* 링크 스타일 */
a:link {
color: #1098AD;
text-decoration: none;
}
a:visited {
color: lightgray;
}
a:hover {
color: orangered; /* 마우스 오버 시 링크 텍스트 색상을 주황색으로 변경 */
font-weight: bold; /* 마우스 오버 시 링크 텍스트를 굵게 표시 */
text-decoration: underline dotted orangered; /* 마우스 오버 시 점선 밑줄 추가 */
}
/* ... 나머지 스타일 규칙 ... */
위 코드에서 마우스 커서를 링크 위에 올리면 텍스트 색상이 주황색으로 바뀌고, 글꼴이 굵어지며, 주황색 점선 밑줄이 나타납니다. text-decoration 속성에 여러 값을 공백으로 구분하여 지정하면 밑줄의 스타일, 색상 등을 상세하게 설정할 수 있습니다. text-decoration-line: underline;, text-decoration-style: dotted;, text-decoration-color: orangered;와 같이 개별 속성을 사용할 수도 있습니다.
8. :active 의사 클래스: 클릭하는 동안 스타일링
:active 의사 클래스는 사용자가 마우스 버튼을 누르고 있는 동안 (클릭하는 순간) 요소를 선택합니다.
styles.css (수정):
/* ... 이전 스타일 규칙 ... */
/* 링크 스타일 */
a:link {
color: #1098AD;
text-decoration: none;
}
a:visited {
color: lightgray;
}
a:hover {
color: orangered;
font-weight: bold;
text-decoration: underline dotted orangered;
}
a:active {
background-color: black; /* 클릭하는 동안 배경색을 검은색으로 변경 */
font-style: italic; /* 클릭하는 동안 텍스트를 이탤릭체로 표시 */
}
/* ... 나머지 스타일 규칙 ... */
이제 링크를 클릭하는 동안 배경색이 검은색으로 바뀌고 텍스트가 이탤릭체로 표시됩니다. 마우스 버튼을 놓으면 다시 :hover 상태 또는 기본 상태로 돌아갑니다.
9. 하이퍼링크 의사 클래스 정의 순서 (L-V-H-A 규칙)
하이퍼링크 의사 클래스를 스타일링할 때는 정확한 순서로 정의하는 것이 매우 중요합니다. 일반적으로 다음과 같은 순서를 따릅니다.
a:link (방문하지 않은 링크)a:visited (방문한 링크)a:hover (마우스 오버 시)a:active (클릭하는 동안)이 순서를 LoVe HAte라는 약어로 기억하면 쉽습니다. 이 순서를 지키지 않으면 일부 스타일이 제대로 적용되지 않을 수 있습니다. 예를 들어 :hover 스타일이 :link 또는 :visited 뒤에 정의되지 않으면 마우스를 올려도 스타일이 변경되지 않을 수 있습니다.
결론
이번 강의에서는 CSS 의사 클래스를 사용하여 하이퍼링크의 다양한 상태(:link, :visited, :hover, :active)에 따라 스타일을 지정하는 방법을 자세히 알아보았습니다. 이러한 의사 클래스를 활용하면 사용자에게 더욱 명확하고 직관적인 인터페이스를 제공할 수 있습니다. 하이퍼링크 스타일링은 웹 디자인에서 매우 중요한 부분이며, 다양한 의사 클래스를 능숙하게 사용하는 것은 웹 개발자로서 필수적인 역량입니다.
이제 기본적인 시각적 스타일링의 마지막 단계에 도달했습니다. 물론 테두리 둥글게 만들기, 그림자, 그라데이션 배경 이미지 등 더 많은 시각적 효과를 CSS로 구현할 수 있지만, 지금 배우신 내용만으로도 웹 페이지의 디자인을 크게 향상시킬 수 있습니다. 다음 강의에서는 웹 브라우저의 개발자 도구에 대해 배우고, CSS의 기본 개념을 계속해서 확장해 나갈 것입니다. 수고하셨습니다!
네, 좋습니다! 웹 개발자로서 여러분의 삶을 훨씬 더 편하게 만들어 줄 강력한 도구 세트, 바로 개발자 도구(Developer Tools)에 대해 아주 쉽고 자세하게 설명해 드리겠습니다. 이 도구들은 모든 최신 웹 브라우저에 기본적으로 내장되어 있으며, 웹사이트를 만들고 문제를 해결하는 데 없어서는 안 될 존재입니다. 이번 강의에서는 그중에서도 가장 많이 사용되는 Google Chrome 개발자 도구에 대해 자세히 살펴보겠습니다.
개발자 도구란 무엇일까요?
개발자 도구는 웹 브라우저에 내장된 일종의 만능 작업실이라고 생각하시면 됩니다. 웹 페이지의 내부 구조(HTML), 디자인(CSS), 작동 방식(JavaScript), 네트워크 통신 등 웹 개발에 필요한 다양한 정보를 확인하고 분석하며, 심지어 실시간으로 수정까지 할 수 있는 매우 유용한 도구입니다. 마치 의사가 엑스레이나 CT 촬영을 통해 환자의 몸 상태를 진단하듯이, 개발자는 개발자 도구를 통해 웹 페이지의 속속들이 들여다보고 문제를 진단하며 개선할 수 있습니다.
Google Chrome 개발자 도구 열기
Google Chrome 개발자 도구를 여는 방법은 세 가지가 있습니다.
마우스 오른쪽 클릭 후 "검사" 또는 "요소 검사" 클릭: 웹 페이지의 아무 곳에서나 마우스 오른쪽 버튼을 클릭하면 나타나는 메뉴에서 "검사(Inspect)" 또는 "요소 검사(Inspect Element)"를 선택합니다. 이 방법은 특정 요소를 선택하고 바로 해당 요소의 정보를 개발자 도구에서 확인할 때 매우 편리합니다.
Chrome 메뉴를 통해 열기: Chrome 브라우저 창의 오른쪽 상단에 있는 점 3개 아이콘(⋮)을 클릭하여 메뉴를 열고, "도구 더보기(More tools)"를 선택한 후 나타나는 하위 메뉴에서 "개발자 도구(Developer tools)"를 클릭합니다.
키보드 단축키 사용: 키보드 단축키를 사용하면 더욱 빠르게 개발자 도구를 열 수 있습니다.
Ctrl + Shift + I 또는 F12 키를 누릅니다.Cmd + Option + I 키를 누릅니다.어떤 방법을 사용하든 개발자 도구 창이 브라우저 창의 아래쪽이나 오른쪽에 나타납니다. 처음 열면 여러 개의 탭이 보이는데, 이번 강의에서는 가장 중요한 탭 중 하나인 "Elements(요소)" 탭을 집중적으로 살펴보겠습니다.
"Elements" 탭 살펴보기
개발자 도구 창이 열리면 가장 먼저 "Elements" 탭을 클릭합니다. 이 탭은 웹 페이지의 HTML 구조와 CSS 스타일을 확인하고 수정하는 데 사용됩니다.
1. HTML 구조 (왼쪽 창)
"Elements" 탭의 왼쪽 창에는 현재 웹 페이지의 HTML 구조가 트리 형태로 표시됩니다. 우리가 index.html 파일에 작성한 HTML 코드가 바로 여기에 나타납니다.
<header> 요소에 마우스를 올리면 웹 페이지의 헤더 부분이 파란색으로 강조 표시되는 것을 확인할 수 있습니다.<nav> 요소를 펼쳐보면 그 안에 있는 링크(<a> 요소)들이 작은 상자 형태로 나란히 배치되어 있는 것을 확인할 수 있습니다. 이는 우리가 HTML 구조를 시각적으로 이해하는 데 매우 유용합니다.2. 스타일 (오른쪽 창)
"Elements" 탭의 오른쪽 창에는 "Styles(스타일)"이라는 패널이 기본적으로 표시됩니다. 이 패널은 현재 왼쪽 창에서 선택한 HTML 요소에 적용된 모든 CSS 스타일을 보여줍니다.
특정 요소의 스타일 확인:
왼쪽 HTML 구조 창에서 스타일을 확인하고 싶은 특정 요소 (예: <h1> 태그)를 클릭해 보세요. 그러면 오른쪽 "Styles" 패널에 해당 요소에 현재 적용되고 있는 모든 CSS 규칙들이 나타납니다.
styles.css 파일의 어떤 부분이 현재 선택된 요소에 영향을 미치는지 쉽게 파악할 수 있도록 해줍니다.<h1> 요소를 선택하면 font-size: 40px;, font-family: "Times New Roman", serif;, color: #333; 와 같은 우리가 styles.css 파일에 작성했던 규칙들이 보일 것입니다.기본 스타일 (User Agent Stylesheet):
때로는 우리가 작성하지 않은 스타일이 요소에 적용되어 있는 것을 볼 수 있습니다. 이는 브라우저 자체에 내장된 기본 스타일(User Agent Stylesheet) 때문입니다. 브라우저는 모든 HTML 요소에 기본적인 스타일을 적용하는데, 예를 들어 <h1> 태그는 기본적으로 글꼴이 굵게 표시됩니다. 개발자 도구의 "Styles" 패널에서는 이러한 기본 스타일도 확인할 수 있으며, 일반적으로 "user agent stylesheet"이라는 이름으로 표시됩니다.
링크 요소의 스타일 확인:
이번에는 HTML 구조 창에서 링크(<a>) 요소를 선택해 보세요. 오른쪽 "Styles" 패널에는 우리가 styles.css 파일에 작성했던 링크 관련 스타일 (color: #1098AD;, text-decoration: none; 등)이 나타날 것입니다.
실시간으로 스타일 추가 및 수정:
개발자 도구의 가장 강력한 기능 중 하나는 웹 페이지의 스타일을 실시간으로 추가하고 수정할 수 있다는 점입니다.
font-size: 30px;를 추가하면 페이지의 모든 링크 글자 크기가 즉시 커지는 것을 볼 수 있습니다.중요: 개발자 도구에서 수정한 내용은 일시적이며, 실제 HTML 및 CSS 파일에는 영향을 주지 않습니다. 웹 페이지를 새로고침하면 모든 변경 사항은 원래대로 돌아갑니다. 따라서 개발자 도구는 스타일을 실험하고 문제를 진단하는 데 매우 유용한 도구이지만, 실제 웹사이트에 변경 사항을 적용하려면 반드시 코드 편집기에서 HTML 및 CSS 파일을 수정해야 합니다.
의사 클래스 상태 확인 및 강제 설정:
지난 강의에서 하이퍼링크의 다양한 의사 클래스 (:link, :visited, :hover, :active)에 대해 배웠습니다. 개발자 도구를 사용하면 이러한 의사 클래스의 스타일이 어떻게 적용되는지 확인하고, 특정 상태를 강제로 설정하여 테스트해 볼 수 있습니다.
:hover를 선택하면 실제로 마우스를 올리지 않아도 해당 링크가 마우스 오버 상태인 것처럼 스타일이 적용됩니다. :active를 선택하면 클릭하는 동안의 스타일을 확인할 수 있습니다.이 기능을 사용하면 마우스를 직접 올리거나 클릭하지 않고도 특정 상태의 스타일을 쉽게 확인하고 디버깅할 수 있습니다.
개발자 도구 활용의 중요성
개발자 도구는 웹 개발자에게 필수적인 도구입니다. 이를 통해 다음과 같은 작업을 수행할 수 있습니다.
개발자 도구를 능숙하게 사용하는 것은 효율적인 웹 개발의 핵심입니다.
실습해 보세요!
지금 바로 아무 웹 페이지에서 개발자 도구를 열고 "Elements" 탭을 살펴보세요. 원하는 요소를 클릭하고 오른쪽 "Styles" 패널에서 어떤 스타일이 적용되어 있는지 확인해 보세요. 스타일을 켜고 끄거나 새로운 스타일을 추가하여 웹 페이지가 어떻게 변하는지 직접 경험해 보는 것이 개발자 도구를 이해하는 가장 좋은 방법입니다.
다음 강의
다음 강의에서는 개발자 도구의 다른 유용한 기능들과 함께, CSS의 기본적인 이론과 다양한 속성들에 대해 더 깊이 있게 학습해 보겠습니다. 개발자 도구를 꾸준히 활용하는 연습을 통해 웹 개발 실력을 더욱 향상시키시기를 바랍니다.